Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFelix Geyer <debfx@fobos.de>2012-05-11 01:00:29 +0400
committerFelix Geyer <debfx@fobos.de>2012-05-11 01:00:29 +0400
commit3738115b6d256e5f2bcd772b40068a005c3a92be (patch)
tree6d2f1f8778618bcae3ead058889acaff1634bcbd /tests
parent65bdc207b736239103dad13aa83bda735a172df0 (diff)
Test if we can re-open imported KeePass 1 databases.
Diffstat (limited to 'tests')
-rw-r--r--tests/TestKeePass1Reader.cpp33
-rw-r--r--tests/TestKeePass1Reader.h2
2 files changed, 34 insertions, 1 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)
diff --git a/tests/TestKeePass1Reader.h b/tests/TestKeePass1Reader.h
index cc2d1c5da..a4fc8a0e5 100644
--- a/tests/TestKeePass1Reader.h
+++ b/tests/TestKeePass1Reader.h
@@ -22,7 +22,6 @@
#include <QtCore/QObject>
class Database;
-class QIODevice;
class TestKeePass1Reader : public QObject
{
@@ -43,6 +42,7 @@ private Q_SLOTS:
private:
static QDateTime genDT(int year, int month, int day, int hour, int min);
+ static void reopenDatabase(Database* db, const QString& password, const QString& keyfileName);
Database* m_db;
};