diff options
author | Felix Geyer <debfx@fobos.de> | 2012-05-10 21:34:55 +0400 |
---|---|---|
committer | Felix Geyer <debfx@fobos.de> | 2012-05-10 21:34:55 +0400 |
commit | 225e5dac660b3d0e7fa325c2de654e4278e67de9 (patch) | |
tree | 3b7f36b342d33bb087ffb05cb2ea3afce7c90c2e /tests/TestKeePass1Reader.cpp | |
parent | c02b5abc6eb38213fb284e860ee86b1c5e8e8f8e (diff) |
Add tests for opening KeePass 1 databases with different keyfiles.
Diffstat (limited to 'tests/TestKeePass1Reader.cpp')
-rw-r--r-- | tests/TestKeePass1Reader.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/TestKeePass1Reader.cpp b/tests/TestKeePass1Reader.cpp index eff5093fc..cb0332fb8 100644 --- a/tests/TestKeePass1Reader.cpp +++ b/tests/TestKeePass1Reader.cpp @@ -17,6 +17,7 @@ #include "TestKeePass1Reader.h" +#include <QtCore/QFile> #include <QtTest/QTest> #include "config-keepassx-tests.h" @@ -122,6 +123,62 @@ void TestKeePass1Reader::testGroupExpanded() false); } +void TestKeePass1Reader::testFileKey() +{ + QFETCH(QString, type); + + QString name = QString("FileKey").append(type); + + KeePass1Reader reader; + + QString dbFilename = QString("%1/%2.kdb").arg(QString(KEEPASSX_TEST_DATA_DIR), name); + QString keyFilename = QString("%1/%2.key").arg(QString(KEEPASSX_TEST_DATA_DIR), name); + + QFile file(keyFilename); + QVERIFY(file.open(QIODevice::ReadOnly)); + QByteArray keyData = KeePass1Reader::readKeyfile(&file); + QVERIFY(!keyData.isEmpty()); + + Database* db = reader.readDatabase(dbFilename, QString(), keyData); + QVERIFY(db); + QVERIFY(!reader.hasError()); + QCOMPARE(db->rootGroup()->children().size(), 1); + QCOMPARE(db->rootGroup()->children().at(0)->name(), name); + + delete db; +} + +void TestKeePass1Reader::testFileKey_data() +{ + QTest::addColumn<QString>("type"); + QTest::newRow("Binary") << QString("Binary"); + QTest::newRow("Hex") << QString("Hex"); + QTest::newRow("Hashed") << QString("Hashed"); +} + +void TestKeePass1Reader::testCompositeKey() +{ + QString name = "CompositeKey"; + + KeePass1Reader reader; + + QString dbFilename = QString("%1/%2.kdb").arg(QString(KEEPASSX_TEST_DATA_DIR), name); + QString keyFilename = QString("%1/FileKeyHex.key").arg(QString(KEEPASSX_TEST_DATA_DIR)); + + QFile file(keyFilename); + QVERIFY(file.open(QIODevice::ReadOnly)); + QByteArray keyData = KeePass1Reader::readKeyfile(&file); + QVERIFY(!keyData.isEmpty()); + + Database* db = reader.readDatabase(dbFilename, "mypassword", keyData); + QVERIFY(db); + QVERIFY(!reader.hasError()); + QCOMPARE(db->rootGroup()->children().size(), 1); + QCOMPARE(db->rootGroup()->children().at(0)->name(), name); + + delete db; +} + void TestKeePass1Reader::cleanupTestCase() { delete m_db; |