From c613f44991c52584121b8eeaeb26364a6ad91866 Mon Sep 17 00:00:00 2001 From: Vladimir Svyatski Date: Sun, 23 Apr 2017 00:50:26 +0300 Subject: [PATCH] Finish test cases for emptying recycle bin --- tests/TestDatabase.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/tests/TestDatabase.cpp b/tests/TestDatabase.cpp index 66eb870f..a70ada19 100644 --- a/tests/TestDatabase.cpp +++ b/tests/TestDatabase.cpp @@ -19,11 +19,15 @@ #include #include +#include #include "config-keepassx-tests.h" #include "core/Database.h" #include "crypto/Crypto.h" #include "keys/PasswordKey.h" +#include "core/Metadata.h" +#include "core/Group.h" +#include "format/KeePass2Writer.h" QTEST_GUILESS_MAIN(TestDatabase) @@ -85,5 +89,24 @@ void TestDatabase::testEmptyRecycleBinOnEmpty() void TestDatabase::testEmptyRecycleBinWithHierarchicalData() { -//TODO: implement + QString filename = QString(KEEPASSX_TEST_DATA_DIR).append("/RecycleBinWithData.kdbx"); + CompositeKey key; + key.addKey(PasswordKey("123")); + Database* db = Database::openDatabaseFile(filename, key); + QVERIFY(db); + + QFile originalFile(filename); + qint64 initialSize = originalFile.size(); + + db->emptyRecycleBin(); + QVERIFY(db->metadata()->recycleBin()); + QVERIFY(db->metadata()->recycleBin()->entries().empty()); + QVERIFY(db->metadata()->recycleBin()->children().empty()); + + QTemporaryFile afterCleanup; + KeePass2Writer writer; + writer.writeDatabase(&afterCleanup, db); + QVERIFY(afterCleanup.size() < initialSize); + + delete db; }