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
diff options
context:
space:
mode:
Diffstat (limited to 'tests/TestKeePass2Writer.cpp')
-rw-r--r--tests/TestKeePass2Writer.cpp166
1 files changed, 0 insertions, 166 deletions
diff --git a/tests/TestKeePass2Writer.cpp b/tests/TestKeePass2Writer.cpp
deleted file mode 100644
index f6d3f58ad..000000000
--- a/tests/TestKeePass2Writer.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 or (at your option)
- * version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "TestKeePass2Writer.h"
-
-#include <QBuffer>
-#include <QFile>
-#include <QTest>
-
-#include "config-keepassx-tests.h"
-#include "FailDevice.h"
-#include "core/Database.h"
-#include "core/Group.h"
-#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"
-
-QTEST_GUILESS_MAIN(TestKeePass2Writer)
-
-void TestKeePass2Writer::initTestCase()
-{
- QVERIFY(Crypto::init());
-
- CompositeKey key;
- key.addKey(PasswordKey("test"));
-
- m_dbOrg = new Database();
- m_dbOrg->setKey(key);
- m_dbOrg->metadata()->setName("TESTDB");
- Group* group = m_dbOrg->rootGroup();
- group->setUuid(Uuid::random());
- group->setNotes("I'm a note!");
- Entry* entry = new Entry();
- entry->setPassword(QString::fromUtf8("\xc3\xa4\xa3\xb6\xc3\xbc\xe9\x9b\xbb\xe7\xb4\x85"));
- entry->setUuid(Uuid::random());
- entry->attributes()->set("test", "protectedTest", true);
- QVERIFY(entry->attributes()->isProtected("test"));
- entry->attachments()->set("myattach.txt", QByteArray("this is an attachment"));
- entry->attachments()->set("aaa.txt", QByteArray("also an attachment"));
- entry->setGroup(group);
- Group* groupNew = new Group();
- groupNew->setUuid(Uuid::random());
- groupNew->setName("TESTGROUP");
- groupNew->setNotes("I'm a sub group note!");
- groupNew->setParent(group);
-
- QBuffer buffer;
- buffer.open(QBuffer::ReadWrite);
-
- KeePass2Writer writer;
- writer.writeDatabase(&buffer, m_dbOrg);
- QVERIFY(!writer.hasError());
- buffer.seek(0);
- KeePass2Reader reader;
- m_dbTest = reader.readDatabase(&buffer, key);
- QVERIFY(!reader.hasError());
- QVERIFY(m_dbTest);
-}
-
-void TestKeePass2Writer::testBasic()
-{
- QCOMPARE(m_dbTest->metadata()->name(), m_dbOrg->metadata()->name());
- QVERIFY(m_dbTest->rootGroup());
- QCOMPARE(m_dbTest->rootGroup()->children()[0]->name(), m_dbOrg->rootGroup()->children()[0]->name());
- QCOMPARE(m_dbTest->rootGroup()->notes(), m_dbOrg->rootGroup()->notes());
- QCOMPARE(m_dbTest->rootGroup()->children()[0]->notes(), m_dbOrg->rootGroup()->children()[0]->notes());
-}
-
-void TestKeePass2Writer::testProtectedAttributes()
-{
- QCOMPARE(m_dbTest->rootGroup()->entries().size(), 1);
- Entry* entry = m_dbTest->rootGroup()->entries().at(0);
- QCOMPARE(entry->attributes()->value("test"), QString("protectedTest"));
- QCOMPARE(entry->attributes()->isProtected("test"), true);
-}
-
-void TestKeePass2Writer::testAttachments()
-{
- Entry* entry = m_dbTest->rootGroup()->entries().at(0);
- QCOMPARE(entry->attachments()->keys().size(), 2);
- QCOMPARE(entry->attachments()->value("myattach.txt"), QByteArray("this is an attachment"));
- QCOMPARE(entry->attachments()->value("aaa.txt"), QByteArray("also an attachment"));
-}
-
-void TestKeePass2Writer::testNonAsciiPasswords()
-{
- QCOMPARE(m_dbTest->rootGroup()->entries()[0]->password(), m_dbOrg->rootGroup()->entries()[0]->password());
-}
-
-void TestKeePass2Writer::testDeviceFailure()
-{
- CompositeKey key;
- key.addKey(PasswordKey("test"));
- Database* db = new Database();
- db->setKey(key);
- // Disable compression so we write a predictable number of bytes.
- db->setCompressionAlgo(Database::CompressionNone);
-
- Entry* entry = new Entry();
- entry->setParent(db->rootGroup());
- QByteArray attachment(4096, 'Z');
- entry->attachments()->set("test", attachment);
-
- FailDevice failDevice(512);
- QVERIFY(failDevice.open(QIODevice::WriteOnly));
- KeePass2Writer writer;
- writer.writeDatabase(&failDevice, db);
- QVERIFY(writer.hasError());
- QCOMPARE(writer.errorString(), QString("FAILDEVICE"));
-
- delete db;
-}
-
-void TestKeePass2Writer::testRepair()
-{
- QString brokenDbFilename = QString(KEEPASSX_TEST_DATA_DIR).append("/bug392.kdbx");
- // master password = test
- // entry username: testuser\x10\x20AC
- // 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);
- auto result = repair.repairDatabase(&file, key);
- QCOMPARE(result.first, KeePass2Repair::RepairSuccess);
- Database* dbRepaired = result.second;
- QVERIFY(dbRepaired);
-
- QCOMPARE(dbRepaired->rootGroup()->entries().size(), 1);
- QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser").append(QChar(0x20AC)));
- QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->password(), QString("testpw"));
- delete dbRepaired;
-}
-
-void TestKeePass2Writer::cleanupTestCase()
-{
- delete m_dbOrg;
- delete m_dbTest;
-}