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:
authorJanek Bevendorff <janek@jbev.net>2018-01-17 22:52:29 +0300
committerJanek Bevendorff <janek@jbev.net>2018-01-18 03:51:37 +0300
commita595239624dd91f40074747c0ff5995d6bafb4e3 (patch)
treebf4acef9b94c9369233bcafa0b436c4e697f468d /tests/TestKeePass2Format.h
parentcdefc7ea9bdfe89e86d57d3155ce35ac2347d719 (diff)
Refactor and extend file format tests
Diffstat (limited to 'tests/TestKeePass2Format.h')
-rw-r--r--tests/TestKeePass2Format.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/TestKeePass2Format.h b/tests/TestKeePass2Format.h
new file mode 100644
index 000000000..11420bab0
--- /dev/null
+++ b/tests/TestKeePass2Format.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
+ *
+ * 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/>.
+ */
+
+#ifndef KEEPASSXC_TESTKEEPASS2FORMAT_H
+#define KEEPASSXC_TESTKEEPASS2FORMAT_H
+
+#include <QDateTime>
+#include <QObject>
+#include <QBuffer>
+#include <QScopedPointer>
+
+#include "core/Database.h"
+
+/**
+ * Abstract base class for KeePass2 file format tests.
+ */
+class TestKeePass2Format : public QObject
+{
+Q_OBJECT
+
+private slots:
+ void initTestCase();
+
+ /**
+ * XML Reader / writer tests.
+ */
+ void testXmlMetadata();
+ void testXmlCustomIcons();
+ void testXmlCustomData();
+ void testXmlGroupRoot();
+ void testXmlGroup1();
+ void testXmlGroup2();
+ void testXmlEntry1();
+ void testXmlEntry2();
+ void testXmlEntryHistory();
+ void testXmlDeletedObjects();
+ void testXmlBroken();
+ void testXmlBroken_data();
+ void testXmlEmptyUuids();
+ void testXmlInvalidXmlChars();
+ void testXmlRepairUuidHistoryItem();
+
+ /**
+ * KDBX binary format tests.
+ */
+ void testReadBackTargetDb();
+ void testKdbxBasic();
+ void testKdbxProtectedAttributes();
+ void testKdbxAttachments();
+ void testKdbxNonAsciiPasswords();
+ void testKdbxDeviceFailure();
+
+protected:
+ virtual void initTestCaseImpl() = 0;
+
+ virtual Database* readXml(QBuffer* buf, bool strictMode, bool& hasError, QString& errorString) = 0;
+ virtual Database* readXml(const QString& path, bool strictMode, bool& hasError, QString& errorString) = 0;
+ virtual void writeXml(QBuffer* buf, Database* db, bool& hasError, QString& errorString) = 0;
+
+ virtual void readKdbx(QIODevice* device, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString) = 0;
+ virtual void readKdbx(const QString& path, CompositeKey const& key, QScopedPointer<Database>& db,
+ bool& hasError, QString& errorString) = 0;
+ virtual void writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString) = 0;
+
+ static QDateTime genDT(int year, int month, int day, int hour, int min, int second);
+ static QByteArray strToBytes(const QString& str);
+
+ QScopedPointer<Database> m_xmlDb;
+ QScopedPointer<Database> m_kdbxSourceDb;
+ QScopedPointer<Database> m_kdbxTargetDb;
+
+private:
+ QBuffer m_kdbxTargetBuffer;
+};
+
+#endif // KEEPASSXC_TESTKEEPASS2FORMAT_H