mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-05-14 04:22:39 -04:00
parent
93585aded7
commit
eb56bd8973
13 changed files with 393 additions and 3 deletions
|
@ -20,6 +20,7 @@
|
|||
#include <QBuffer>
|
||||
#include <QTest>
|
||||
|
||||
#include "config-keepassx-tests.h"
|
||||
#include "tests.h"
|
||||
#include "FailDevice.h"
|
||||
#include "core/Database.h"
|
||||
|
@ -27,6 +28,7 @@
|
|||
#include "core/Metadata.h"
|
||||
#include "crypto/Crypto.h"
|
||||
#include "format/KeePass2Reader.h"
|
||||
#include "format/KeePass2Repair.h"
|
||||
#include "format/KeePass2Writer.h"
|
||||
#include "format/KeePass2XmlWriter.h"
|
||||
#include "keys/PasswordKey.h"
|
||||
|
@ -127,6 +129,34 @@ void TestKeePass2Writer::testDeviceFailure()
|
|||
delete db;
|
||||
}
|
||||
|
||||
void TestKeePass2Writer::testRepair()
|
||||
{
|
||||
QString brokenDbFilename = QString(KEEPASSX_TEST_DATA_DIR).append("/bug392.kdbx");
|
||||
// master password = test
|
||||
// entry username: testuser\x10
|
||||
// entry password: testpw
|
||||
CompositeKey key;
|
||||
key.addKey(PasswordKey("test"));
|
||||
|
||||
// test that we can't open the broken database
|
||||
KeePass2Reader reader;
|
||||
Database* dbBroken = reader.readDatabase(brokenDbFilename, key);
|
||||
QVERIFY(!dbBroken);
|
||||
QVERIFY(reader.hasError());
|
||||
|
||||
// test if we can repair the database
|
||||
KeePass2Repair repair;
|
||||
QFile file(brokenDbFilename);
|
||||
file.open(QIODevice::ReadOnly);
|
||||
QCOMPARE(repair.repairDatabase(&file, key), KeePass2Repair::RepairSuccess);
|
||||
Database* dbRepaired = repair.database();
|
||||
QVERIFY(dbRepaired);
|
||||
|
||||
QCOMPARE(dbRepaired->rootGroup()->entries().size(), 1);
|
||||
QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser"));
|
||||
QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->password(), QString("testpw"));
|
||||
}
|
||||
|
||||
void TestKeePass2Writer::cleanupTestCase()
|
||||
{
|
||||
delete m_dbOrg;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue