Files
tbd-station-14/Content.IntegrationTests/Tests/Lobby/ServerReloginTest.cs
2023-07-06 14:54:25 +10:00

65 lines
2.1 KiB
C#

using System.Linq;
using Content.Shared.CCVar;
using Robust.Server.Player;
using Robust.Shared.Configuration;
using Robust.Shared.Network;
namespace Content.IntegrationTests.Tests.Lobby;
public sealed class ServerReloginTest
{
[Test]
public async Task Relogin()
{
await using var pairTracker = await PoolManager.GetServerClient();
var server = pairTracker.Pair.Server;
var client = pairTracker.Pair.Client;
var originalMaxPlayers = 0;
string username = null;
var serverConfig = server.ResolveDependency<IConfigurationManager>();
var serverPlayerMgr = server.ResolveDependency<IPlayerManager>();
var clientNetManager = client.ResolveDependency<IClientNetManager>();
await server.WaitAssertion(() =>
{
Assert.That(serverPlayerMgr.PlayerCount, Is.EqualTo(1));
originalMaxPlayers = serverConfig.GetCVar(CCVars.SoftMaxPlayers);
username = serverPlayerMgr.Sessions.First().Name;
//No new players are allowed, but since our client was already playing, they should be able to get in
serverConfig.SetCVar(CCVars.SoftMaxPlayers, 0);
});
await client.WaitAssertion(() =>
{
clientNetManager.ClientDisconnect("For testing");
});
await PoolManager.RunTicksSync(pairTracker.Pair, 20);
await server.WaitAssertion(() =>
{
Assert.That(serverPlayerMgr.PlayerCount, Is.EqualTo(0));
});
client.SetConnectTarget(server);
await client.WaitPost(() =>
{
clientNetManager.ClientConnect(null!, 0, username);
});
await PoolManager.RunTicksSync(pairTracker.Pair, 20);
await server.WaitAssertion(() =>
{
// Check that we were able to reconnect
Assert.That(serverPlayerMgr.PlayerCount, Is.EqualTo(1));
//Put the cvar back, so other tests can still use this server
serverConfig.SetCVar(CCVars.SoftMaxPlayers, originalMaxPlayers);
});
await pairTracker.CleanReturnAsync();
}
}