mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-10 03:53:26 -08:00
[Server] Share one in-memory database interface across the server tests (#7862)
This commit is contained in:
parent
3a1238a467
commit
9315a4aa6d
10 changed files with 200 additions and 170 deletions
|
|
@ -366,6 +366,7 @@ cockatrice_add_test(
|
|||
LIBS
|
||||
libcockatrice_network_server_remote
|
||||
libcockatrice_rng
|
||||
libcockatrice_server_dev
|
||||
LABELS
|
||||
server
|
||||
)
|
||||
|
|
@ -377,6 +378,7 @@ cockatrice_add_test(
|
|||
LIBS
|
||||
libcockatrice_network_server_remote
|
||||
libcockatrice_rng
|
||||
libcockatrice_server_dev
|
||||
LABELS
|
||||
server
|
||||
)
|
||||
|
|
@ -388,6 +390,7 @@ cockatrice_add_test(
|
|||
LIBS
|
||||
libcockatrice_network_server_remote
|
||||
libcockatrice_rng
|
||||
libcockatrice_server_dev
|
||||
LABELS
|
||||
server
|
||||
)
|
||||
|
|
@ -423,6 +426,7 @@ cockatrice_add_test(
|
|||
LIBS
|
||||
libcockatrice_network_server_remote
|
||||
libcockatrice_rng
|
||||
libcockatrice_server_dev
|
||||
LABELS
|
||||
server
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ cockatrice_add_test(
|
|||
LIBS
|
||||
libcockatrice_network_server_remote
|
||||
libcockatrice_rng
|
||||
libcockatrice_server_dev
|
||||
LABELS
|
||||
server
|
||||
)
|
||||
|
|
@ -18,6 +19,7 @@ cockatrice_add_test(
|
|||
LIBS
|
||||
libcockatrice_network_server_remote
|
||||
libcockatrice_rng
|
||||
libcockatrice_server_dev
|
||||
LABELS
|
||||
server
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,42 +1,11 @@
|
|||
#include "libcockatrice/server/dev/servatrice_in_memory_database_interface.h"
|
||||
#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());
|
||||
setDatabaseInterface(new Servatrice_InMemoryDatabaseInterface());
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
#include "libcockatrice/protocol/pb/response.pb.h"
|
||||
#include "libcockatrice/protocol/pb/server_message.pb.h"
|
||||
#include "libcockatrice/server/dev/servatrice_in_memory_database_interface.h"
|
||||
#include "server.h"
|
||||
#include "server_database_interface.h"
|
||||
#include "server_protocolhandler.h"
|
||||
|
||||
#include <QString>
|
||||
|
|
@ -22,49 +22,21 @@ 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());
|
||||
auto *db = new Servatrice_InMemoryDatabaseInterface();
|
||||
db->setAuthenticationResult(PasswordChangeRequired);
|
||||
|
||||
ServerInfo_User user;
|
||||
user.set_name("mod");
|
||||
user.set_user_level(ServerInfo_User::IsUser | ServerInfo_User::IsRegistered | ServerInfo_User::IsModerator);
|
||||
user.set_id(1);
|
||||
db->addUser(user);
|
||||
|
||||
setDatabaseInterface(db);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
#include "game/role_info.h"
|
||||
#include "game/server_game.h"
|
||||
#include "libcockatrice/protocol/pb/response.pb.h"
|
||||
#include "libcockatrice/server/dev/servatrice_in_memory_database_interface.h"
|
||||
#include "server.h"
|
||||
#include "server_database_interface.h"
|
||||
#include "server_room.h"
|
||||
|
||||
#include <QList>
|
||||
|
|
@ -23,43 +23,12 @@ 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 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:
|
||||
FakeServer()
|
||||
{
|
||||
setDatabaseInterface(new MockDatabaseInterface());
|
||||
setDatabaseInterface(new Servatrice_InMemoryDatabaseInterface());
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
#include "libcockatrice/protocol/pb/response.pb.h"
|
||||
#include "libcockatrice/protocol/pb/server_message.pb.h"
|
||||
#include "libcockatrice/server/dev/servatrice_in_memory_database_interface.h"
|
||||
#include "server.h"
|
||||
#include "server_database_interface.h"
|
||||
#include "server_protocolhandler.h"
|
||||
#include "server_room.h"
|
||||
|
||||
|
|
@ -33,60 +33,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<LogEntry> 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:
|
||||
|
|
@ -149,7 +95,7 @@ protected:
|
|||
class RoomChannelTest : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
MockDatabaseInterface db;
|
||||
Servatrice_InMemoryDatabaseInterface db;
|
||||
FakeServer server{&db};
|
||||
QList<ServerInfo_RoomChannel> catalog;
|
||||
Server_Room *room = nullptr;
|
||||
|
|
@ -360,7 +306,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 Servatrice_InMemoryDatabaseInterface::LogEntry &entry : db.getLogEntries()) {
|
||||
loggedAsChannel |= entry.targetType == Server_DatabaseInterface::MessageTargetRoomChannel;
|
||||
}
|
||||
EXPECT_FALSE(loggedAsChannel);
|
||||
|
|
@ -406,7 +352,7 @@ TEST_F(RoomChannelTest, UnknownChannelIdIsRejected)
|
|||
|
||||
EXPECT_EQ(user.lastResponseCode, Response::RespInvalidCommand);
|
||||
EXPECT_TRUE(channelSayEvents(user).isEmpty());
|
||||
EXPECT_TRUE(db.logEntries.isEmpty());
|
||||
EXPECT_TRUE(db.getLogEntries().isEmpty());
|
||||
}
|
||||
|
||||
TEST_F(RoomChannelTest, MissingAccessLevelDefaultsToPublic)
|
||||
|
|
@ -515,13 +461,13 @@ TEST_F(RoomChannelTest, AuditLoggingTagsChannelMessages)
|
|||
sendMainSay(user, "main log line");
|
||||
sendChannelSay(user, "lobby", "channel log line");
|
||||
|
||||
ASSERT_EQ(db.logEntries.size(), 2);
|
||||
EXPECT_EQ(db.logEntries.at(0).targetType, Server_DatabaseInterface::MessageTargetRoom);
|
||||
EXPECT_TRUE(db.logEntries.at(0).channel.isEmpty());
|
||||
EXPECT_EQ(db.logEntries.at(1).targetType, Server_DatabaseInterface::MessageTargetRoomChannel);
|
||||
EXPECT_EQ(db.logEntries.at(1).channel, "lobby");
|
||||
EXPECT_EQ(db.logEntries.at(1).senderName, "user");
|
||||
EXPECT_EQ(db.logEntries.at(1).message, "channel log line");
|
||||
ASSERT_EQ(db.getLogEntries().size(), 2);
|
||||
EXPECT_EQ(db.getLogEntries().at(0).targetType, Server_DatabaseInterface::MessageTargetRoom);
|
||||
EXPECT_TRUE(db.getLogEntries().at(0).channel.isEmpty());
|
||||
EXPECT_EQ(db.getLogEntries().at(1).targetType, Server_DatabaseInterface::MessageTargetRoomChannel);
|
||||
EXPECT_EQ(db.getLogEntries().at(1).channel, "lobby");
|
||||
EXPECT_EQ(db.getLogEntries().at(1).senderName, "user");
|
||||
EXPECT_EQ(db.getLogEntries().at(1).message, "channel log line");
|
||||
}
|
||||
|
||||
TEST_F(RoomChannelTest, PublicChannelRelaysOverIslButRestrictedChannelsDoNot)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue