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 | |
parent | c02b5abc6eb38213fb284e860ee86b1c5e8e8f8e (diff) |
Add tests for opening KeePass 1 databases with different keyfiles.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/TestKeePass1Reader.cpp | 57 | ||||
-rw-r--r-- | tests/TestKeePass1Reader.h | 3 | ||||
-rw-r--r-- | tests/data/CompositeKey.kdb | bin | 0 -> 636 bytes | |||
-rw-r--r-- | tests/data/FileKeyBinary.kdb | bin | 0 -> 636 bytes | |||
-rw-r--r-- | tests/data/FileKeyHashed.kdb | bin | 0 -> 636 bytes | |||
-rw-r--r-- | tests/data/FileKeyHex.kdb | bin | 0 -> 636 bytes |
6 files changed, 60 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; diff --git a/tests/TestKeePass1Reader.h b/tests/TestKeePass1Reader.h index 194167687..8a8da4e0f 100644 --- a/tests/TestKeePass1Reader.h +++ b/tests/TestKeePass1Reader.h @@ -32,6 +32,9 @@ private Q_SLOTS: void testBasic(); void testCustomIcons(); void testGroupExpanded(); + void testFileKey(); + void testFileKey_data(); + void testCompositeKey(); void cleanupTestCase(); private: diff --git a/tests/data/CompositeKey.kdb b/tests/data/CompositeKey.kdb Binary files differnew file mode 100644 index 000000000..70060d8f2 --- /dev/null +++ b/tests/data/CompositeKey.kdb diff --git a/tests/data/FileKeyBinary.kdb b/tests/data/FileKeyBinary.kdb Binary files differnew file mode 100644 index 000000000..0ce9f58b7 --- /dev/null +++ b/tests/data/FileKeyBinary.kdb diff --git a/tests/data/FileKeyHashed.kdb b/tests/data/FileKeyHashed.kdb Binary files differnew file mode 100644 index 000000000..8ef734720 --- /dev/null +++ b/tests/data/FileKeyHashed.kdb diff --git a/tests/data/FileKeyHex.kdb b/tests/data/FileKeyHex.kdb Binary files differnew file mode 100644 index 000000000..ed872c586 --- /dev/null +++ b/tests/data/FileKeyHex.kdb |