From 8a80c52208f8513116cdb2d10988ed4ec4ab61a8 Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Tue, 8 Apr 2025 17:44:32 -0400 Subject: [PATCH] refactor: port net/FingerprintDatabaseTest to QtTests --- .../net/FingerprintDatabaseTests.cpp | 84 ------------------ src/unittests/CMakeLists.txt | 1 + src/unittests/net/CMakeLists.txt | 16 ++++ .../net/FingerprintDatabaseTests.cpp | 87 +++++++++++++++++++ src/unittests/net/FingerprintDatabaseTests.h | 18 ++++ 5 files changed, 122 insertions(+), 84 deletions(-) delete mode 100644 src/test/unittests/net/FingerprintDatabaseTests.cpp create mode 100644 src/unittests/net/CMakeLists.txt create mode 100644 src/unittests/net/FingerprintDatabaseTests.cpp create mode 100644 src/unittests/net/FingerprintDatabaseTests.h diff --git a/src/test/unittests/net/FingerprintDatabaseTests.cpp b/src/test/unittests/net/FingerprintDatabaseTests.cpp deleted file mode 100644 index be63ca06b..000000000 --- a/src/test/unittests/net/FingerprintDatabaseTests.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Deskflow -- mouse and keyboard sharing utility - * SPDX-FileCopyrightText: (C) 2025 Deskflow Developers - * SPDX-FileCopyrightText: (C) 2021 Barrier Contributors - * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception - */ - -#include "net/FingerprintDatabase.h" - -#include - -namespace deskflow { - -TEST(FingerprintDatabase, parseDbLine) -{ - ASSERT_FALSE(FingerprintDatabase::parseDbLine("").valid()); - ASSERT_FALSE(FingerprintDatabase::parseDbLine("abcd").valid()); - ASSERT_FALSE(FingerprintDatabase::parseDbLine("v1:algo:something").valid()); - ASSERT_FALSE(FingerprintDatabase::parseDbLine("v2:algo:something").valid()); - ASSERT_FALSE(FingerprintDatabase::parseDbLine("v2:algo:01020304abc").valid()); - ASSERT_FALSE(FingerprintDatabase::parseDbLine("v2:algo:01020304ZZ").valid()); - ASSERT_EQ(FingerprintDatabase::parseDbLine("v2:algo:01020304ab"), (FingerprintData{"algo", {1, 2, 3, 4, 0xab}})); -} - -TEST(FingerprintDatabase, read) -{ - std::istringstream stream; - stream.str(R"( -v2:algo1:01020304ab -v2:algo2:03040506ab -AB:CD:EF:00:01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16 -)"); - FingerprintDatabase db; - db.readStream(stream); - - std::vector expected = { - {"algo1", {1, 2, 3, 4, 0xab}}, - {"algo2", {3, 4, 5, 6, 0xab}}, - {"sha1", {0xab, 0xcd, 0xef, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}}, - }; - ASSERT_EQ(db.fingerprints(), expected); -} - -TEST(FingerprintDatabase, write) -{ - std::ostringstream stream; - - FingerprintDatabase db; - db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); - db.addTrusted({"algo2", {3, 4, 5, 6, 0xab}}); - db.writeStream(stream); - - ASSERT_EQ(stream.str(), R"(v2:algo1:01020304ab -v2:algo2:03040506ab -)"); -} - -TEST(FingerprintDatabase, clear) -{ - FingerprintDatabase db; - db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); - db.clear(); - ASSERT_TRUE(db.fingerprints().empty()); -} - -TEST(FingerprintDatabase, addTrusted_noDuplicates) -{ - FingerprintDatabase db; - db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); - db.addTrusted({"algo2", {3, 4, 5, 6, 0xab}}); - db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); - ASSERT_EQ(db.fingerprints().size(), 2); -} - -TEST(FingerprintDatabase, isTrusted) -{ - FingerprintDatabase db; - db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); - ASSERT_TRUE(db.isTrusted({"algo1", {1, 2, 3, 4, 0xab}})); - ASSERT_FALSE(db.isTrusted({"algo2", {1, 2, 3, 4, 0xab}})); - ASSERT_FALSE(db.isTrusted({"algo1", {1, 2, 3, 4, 0xac}})); -} - -} // namespace deskflow diff --git a/src/unittests/CMakeLists.txt b/src/unittests/CMakeLists.txt index 0202e4f75..4feb87926 100644 --- a/src/unittests/CMakeLists.txt +++ b/src/unittests/CMakeLists.txt @@ -46,6 +46,7 @@ add_subdirectory(base) add_subdirectory(common) add_subdirectory(deskflow) add_subdirectory(gui) +add_subdirectory(net) add_subdirectory(platform) add_subdirectory(server) diff --git a/src/unittests/net/CMakeLists.txt b/src/unittests/net/CMakeLists.txt new file mode 100644 index 000000000..90c3072eb --- /dev/null +++ b/src/unittests/net/CMakeLists.txt @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: 2025 Deskflow Developers +# SPDX-License-Identifier: MIT + +if(WIN32) + set(extra_libs version) +endif() + +create_test( + NAME FingerprintDatabaseTests + DEPENDS net + LIBS base arch mt io ${extra_libs} + SOURCE FingerprintDatabaseTests.cpp + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/lib/net" +) + + diff --git a/src/unittests/net/FingerprintDatabaseTests.cpp b/src/unittests/net/FingerprintDatabaseTests.cpp new file mode 100644 index 000000000..4e5be2448 --- /dev/null +++ b/src/unittests/net/FingerprintDatabaseTests.cpp @@ -0,0 +1,87 @@ +/* + * Deskflow -- mouse and keyboard sharing utility + * SPDX-FileCopyrightText: (C) 2025 Deskflow Developers + * SPDX-FileCopyrightText: (C) 2021 Barrier Contributors + * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception + */ + +#include "FingerprintDatabaseTests.h" + +#include "../../lib/net/FingerprintData.h" +#include "../../lib/net/FingerprintDatabase.h" + +#include + +using namespace deskflow; + +void FingerprintDatabaseTests::parseDBLine() +{ + QVERIFY(!FingerprintDatabase::parseDbLine("").valid()); + QVERIFY(!FingerprintDatabase::parseDbLine("abcd").valid()); + QVERIFY(!FingerprintDatabase::parseDbLine("v1:algo:something").valid()); + QVERIFY(!FingerprintDatabase::parseDbLine("v2:algo:something").valid()); + QVERIFY(!FingerprintDatabase::parseDbLine("v2:algo:01020304abc").valid()); + QVERIFY(!FingerprintDatabase::parseDbLine("v2:algo:01020304ZZ").valid()); + QCOMPARE(FingerprintDatabase::parseDbLine("v2:algo:01020304ab"), (FingerprintData{"algo", {1, 2, 3, 4, 0xab}})); +} + +void FingerprintDatabaseTests::readFile() +{ + std::istringstream stream; + stream.str(R"( +v2:algo1:01020304ab +v2:algo2:03040506ab +AB:CD:EF:00:01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16 +)"); + FingerprintDatabase db; + db.readStream(stream); + + std::vector expected = { + {"algo1", {1, 2, 3, 4, 0xab}}, + {"algo2", {3, 4, 5, 6, 0xab}}, + {"sha1", {0xab, 0xcd, 0xef, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}}, + }; + + QCOMPARE(db.fingerprints(), expected); +} + +void FingerprintDatabaseTests::writeFile() +{ + std::ostringstream stream; + + FingerprintDatabase db; + db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); + db.addTrusted({"algo2", {3, 4, 5, 6, 0xab}}); + db.writeStream(stream); + + QCOMPARE(stream.str(), R"(v2:algo1:01020304ab +v2:algo2:03040506ab +)"); +} + +void FingerprintDatabaseTests::clear() +{ + FingerprintDatabase db; + db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); + db.clear(); + + QVERIFY(db.fingerprints().empty()); +} + +void FingerprintDatabaseTests::trusted() +{ + FingerprintDatabase db; + + db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); + QVERIFY(db.isTrusted({"algo1", {1, 2, 3, 4, 0xab}})); + QVERIFY(!db.isTrusted({"algo2", {1, 2, 3, 4, 0xab}})); + QVERIFY(!db.isTrusted({"algo1", {1, 2, 3, 4, 0xac}})); + + db.addTrusted({"algo2", {3, 4, 5, 6, 0xab}}); + QVERIFY(db.isTrusted({"algo2", {3, 4, 5, 6, 0xab}})); + + db.addTrusted({"algo1", {1, 2, 3, 4, 0xab}}); + QCOMPARE(db.fingerprints().size(), 2); +} + +QTEST_MAIN(FingerprintDatabaseTests) diff --git a/src/unittests/net/FingerprintDatabaseTests.h b/src/unittests/net/FingerprintDatabaseTests.h new file mode 100644 index 000000000..b411836ac --- /dev/null +++ b/src/unittests/net/FingerprintDatabaseTests.h @@ -0,0 +1,18 @@ +/* + * Deskflow -- mouse and keyboard sharing utility + * SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello + * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception + */ + +#include + +class FingerprintDatabaseTests : public QObject +{ + Q_OBJECT +private slots: + void parseDBLine(); + void readFile(); + void writeFile(); + void clear(); + void trusted(); +};