diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bc6d7b8e8..7f31687e2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -371,6 +371,9 @@ cockatrice_add_test( LIBS libcockatrice_network_server_remote libcockatrice_rng + testsupport_server + INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR} LABELS server ) @@ -396,6 +399,9 @@ cockatrice_add_test( LIBS libcockatrice_network_server_remote libcockatrice_rng + testsupport_server + INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR} LABELS server ) @@ -431,6 +437,9 @@ cockatrice_add_test( LIBS libcockatrice_network_server_remote libcockatrice_rng + testsupport_server + INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR} LABELS server ) diff --git a/tests/movecard_tests/CMakeLists.txt b/tests/movecard_tests/CMakeLists.txt index 35d7b44ed..89ad32d3f 100755 --- a/tests/movecard_tests/CMakeLists.txt +++ b/tests/movecard_tests/CMakeLists.txt @@ -6,6 +6,9 @@ cockatrice_add_test( LIBS libcockatrice_network_server_remote libcockatrice_rng + testsupport_server + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/tests LABELS server ) @@ -18,6 +21,9 @@ cockatrice_add_test( LIBS libcockatrice_network_server_remote libcockatrice_rng + testsupport_server + INCLUDE_DIRS + ${CMAKE_SOURCE_DIR}/tests LABELS server ) diff --git a/tests/movecard_tests/player_order_test.cpp b/tests/movecard_tests/player_order_test.cpp index 6e398af24..7d2722638 100644 --- a/tests/movecard_tests/player_order_test.cpp +++ b/tests/movecard_tests/player_order_test.cpp @@ -5,7 +5,7 @@ #include "server_abstractuserinterface.h" #include "server_response_containers.h" #include "server_room.h" -#include "server_test_helpers.h" +#include "support/server_test_fixture.h" #include #include diff --git a/tests/movecard_tests/reverse_card_move_test.cpp b/tests/movecard_tests/reverse_card_move_test.cpp index 6bed20d18..de8ca9292 100644 --- a/tests/movecard_tests/reverse_card_move_test.cpp +++ b/tests/movecard_tests/reverse_card_move_test.cpp @@ -7,7 +7,7 @@ #include "libcockatrice/protocol/pb/serverinfo_zone.pb.h" #include "server_response_containers.h" #include "server_room.h" -#include "server_test_helpers.h" +#include "support/server_test_fixture.h" #include #include diff --git a/tests/movecard_tests/server_test_helpers.h b/tests/movecard_tests/server_test_helpers.h deleted file mode 100644 index fd2ed6c17..000000000 --- a/tests/movecard_tests/server_test_helpers.h +++ /dev/null @@ -1,42 +0,0 @@ -#include "server.h" -#include "server_database_interface.h" - -class MockDatabaseInterface : public Server_DatabaseInterface -{ -public: - AuthenticationResult checkUserPassword(Server_ProtocolHandler *, - const QString &, - const QString &, - const QString &, - QString &, - int &, - bool) override - { - return NotLoggedIn; - } - ServerInfo_User getUserData(const QString &, bool) override - { - return ServerInfo_User(); - } - int getNextGameId() override - { - return 1; - } - int getNextReplayId() override - { - return 1; - } - int getActiveUserCount(QString) override - { - return 1; - } -}; - -class FakeServer : public Server -{ -public: - FakeServer() - { - setDatabaseInterface(new MockDatabaseInterface()); - } -}; diff --git a/tests/random_reveal_test.cpp b/tests/random_reveal_test.cpp index 62defe183..998b1ae87 100644 --- a/tests/random_reveal_test.cpp +++ b/tests/random_reveal_test.cpp @@ -3,10 +3,10 @@ #include "game/server_card.h" #include "game/server_cardzone.h" #include "game/server_game.h" -#include "movecard_tests/server_test_helpers.h" #include "server_abstractuserinterface.h" #include "server_response_containers.h" #include "server_room.h" +#include "support/server_test_fixture.h" #include #include diff --git a/tests/server_forced_password_change_test.cpp b/tests/server_forced_password_change_test.cpp index 9717b610b..76b5110bf 100644 --- a/tests/server_forced_password_change_test.cpp +++ b/tests/server_forced_password_change_test.cpp @@ -5,9 +5,8 @@ #include "libcockatrice/protocol/pb/response.pb.h" #include "libcockatrice/protocol/pb/server_message.pb.h" -#include "server.h" -#include "server_database_interface.h" #include "server_protocolhandler.h" +#include "support/server_test_fixture.h" #include #include @@ -22,52 +21,6 @@ RNG_Abstract *rng = nullptr; // referenced by the server_remote library namespace { -class MockDatabaseInterface : public Server_DatabaseInterface -{ -public: - AuthenticationResult checkUserPassword(Server_ProtocolHandler *, - const QString &, - const QString &, - const QString &, - QString &, - int &, - bool) override - { - return PasswordChangeRequired; - } - ServerInfo_User getUserData(const QString &name, bool withId) override - { - ServerInfo_User user; - user.set_name(name.toStdString()); - user.set_user_level(ServerInfo_User::IsUser | ServerInfo_User::IsRegistered | ServerInfo_User::IsModerator); - if (withId) { - user.set_id(1); - } - return user; - } - int getNextReplayId() override - { - return 1; - } - int getNextGameId() override - { - return 1; - } - int getActiveUserCount(QString) override - { - return 0; - } -}; - -class FakeServer : public Server -{ -public: - FakeServer() - { - setDatabaseInterface(new MockDatabaseInterface()); - } -}; - class TestHandler : public Server_ProtocolHandler { public: @@ -103,12 +56,21 @@ protected: } }; -class ForcedPasswordChangeTest : public ::testing::Test +class ForcedPasswordChangeTest : public ServerTestFixture { protected: - FakeServer server; TestHandler handler{&server, server.getDatabaseInterface()}; + void SetUp() override + { + database()->authenticationResult = PasswordChangeRequired; + ServerInfo_User mod; + mod.set_name("mod"); + mod.set_id(1); + mod.set_user_level(ServerInfo_User::IsUser | ServerInfo_User::IsRegistered | ServerInfo_User::IsModerator); + database()->addUser(mod); + } + void login() { CommandContainer cont; diff --git a/tests/server_room_channels_test.cpp b/tests/server_room_channels_test.cpp index 006c9fa39..582c13121 100644 --- a/tests/server_room_channels_test.cpp +++ b/tests/server_room_channels_test.cpp @@ -5,10 +5,9 @@ #include "libcockatrice/protocol/pb/response.pb.h" #include "libcockatrice/protocol/pb/server_message.pb.h" -#include "server.h" -#include "server_database_interface.h" #include "server_protocolhandler.h" #include "server_room.h" +#include "support/server_test_fixture.h" #include #include @@ -33,73 +32,6 @@ RNG_Abstract *rng = nullptr; // referenced by the server_remote library namespace { -class MockDatabaseInterface : public Server_DatabaseInterface -{ -public: - struct LogEntry - { - QString senderName; - QString message; - LogMessage_TargetType targetType; - int targetId; - QString targetName; - QString channel; - }; - QList logEntries; - - void logMessage(const int /* senderId */, - const QString &senderName, - const QString & /* senderIp */, - const QString &message, - LogMessage_TargetType targetType, - const int targetId, - const QString &targetName, - const QString &channel = QString()) override - { - logEntries.append({senderName, message, targetType, targetId, targetName, channel}); - } - - AuthenticationResult checkUserPassword(Server_ProtocolHandler *, - const QString &, - const QString &, - const QString &, - QString &, - int &, - bool) override - { - return NotLoggedIn; - } - int getNextReplayId() override - { - return 1; - } - int getNextGameId() override - { - return 1; - } - int getActiveUserCount(QString) override - { - return 0; - } - ServerInfo_User getUserData(const QString &, bool) override - { - return ServerInfo_User(); - } -}; - -class FakeServer : public Server -{ -public: - explicit FakeServer(Server_DatabaseInterface *db) : Server() - { - setDatabaseInterface(db); - } - void insertRoom(Server_Room *newRoom) - { - addRoom(newRoom); - } -}; - class TestRoomHandler : public Server_ProtocolHandler { public: @@ -149,8 +81,8 @@ protected: class RoomChannelTest : public ::testing::Test { protected: - MockDatabaseInterface db; - FakeServer server{&db}; + FakeServer server; + InMemoryServer_DatabaseInterface &db{*server.database()}; QList catalog; Server_Room *room = nullptr; TestRoomHandler mod{&server, &db}; @@ -360,7 +292,7 @@ TEST_F(RoomChannelTest, UserBelowRequiredLevelCannotSendToChannel) EXPECT_TRUE(channelSayEvents(mod).isEmpty()); EXPECT_TRUE(channelSayEvents(user).isEmpty()); bool loggedAsChannel = false; - for (const MockDatabaseInterface::LogEntry &entry : db.logEntries) { + for (const InMemoryServer_DatabaseInterface::LogEntry &entry : db.logEntries) { loggedAsChannel |= entry.targetType == Server_DatabaseInterface::MessageTargetRoomChannel; } EXPECT_FALSE(loggedAsChannel);