diff options
author | Felix Geyer <debfx@fobos.de> | 2012-05-11 01:00:29 +0400 |
---|---|---|
committer | Felix Geyer <debfx@fobos.de> | 2012-05-11 01:00:29 +0400 |
commit | 3738115b6d256e5f2bcd772b40068a005c3a92be (patch) | |
tree | 6d2f1f8778618bcae3ead058889acaff1634bcbd /tests/TestKeePass1Reader.cpp | |
parent | 65bdc207b736239103dad13aa83bda735a172df0 (diff) |
Test if we can re-open imported KeePass 1 databases.
Diffstat (limited to 'tests/TestKeePass1Reader.cpp')
-rw-r--r-- | tests/TestKeePass1Reader.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/TestKeePass1Reader.cpp b/tests/TestKeePass1Reader.cpp index def8c6e65..b15e8a032 100644 --- a/tests/TestKeePass1Reader.cpp +++ b/tests/TestKeePass1Reader.cpp @@ -102,6 +102,8 @@ void TestKeePass1Reader::testBasic() QCOMPARE(group2->name(), QString("eMail")); QCOMPARE(group2->entries().size(), 1); QCOMPARE(group2->iconNumber(), 19); + + reopenDatabase(m_db, "masterpw", QString()); } void TestKeePass1Reader::testMasterKey() @@ -154,6 +156,8 @@ void TestKeePass1Reader::testFileKey() QCOMPARE(db->rootGroup()->children().size(), 1); QCOMPARE(db->rootGroup()->children().at(0)->name(), name); + reopenDatabase(db, QString(), keyFilename); + delete db; } @@ -180,6 +184,8 @@ void TestKeePass1Reader::testCompositeKey() QCOMPARE(db->rootGroup()->children().size(), 1); QCOMPARE(db->rootGroup()->children().at(0)->name(), name); + reopenDatabase(db, "mypassword", keyFilename); + delete db; } @@ -230,4 +236,31 @@ QDateTime TestKeePass1Reader::genDT(int year, int month, int day, int hour, int return QDateTime(date, time, Qt::UTC); } +void TestKeePass1Reader::reopenDatabase(Database* db, const QString& password, const QString& keyfileName) +{ + QBuffer buffer; + buffer.open(QIODevice::ReadWrite); + + KeePass2Writer writer; + writer.writeDatabase(&buffer, db); + QVERIFY(!writer.error()); + QVERIFY(buffer.seek(0)); + + CompositeKey key; + if (!password.isNull()) { + key.addKey(PasswordKey(password)); + } + if (!keyfileName.isEmpty()) { + FileKey fileKey; + QVERIFY(fileKey.load(keyfileName)); + key.addKey(fileKey); + } + + KeePass2Reader reader; + Database* newDb = reader.readDatabase(&buffer, key); + QVERIFY(newDb); + QVERIFY(!reader.hasError()); + delete newDb; +} + KEEPASSX_QTEST_CORE_MAIN(TestKeePass1Reader) |