Files
tbd-station-14/Content.IntegrationTests/Tests/Lobby/ServerReloginTest.cs
metalgearsloth d767ce9585 Fix a bunch of warnings (#10886)
* Fix a bunch of warnings

Also made ensnareable not broadcast as they're only used directed.
Mainly just Get<T> and AppearanceSystem

* buckle too

* fix tests

Co-authored-by: wrexbe <wrexbe@protonmail.com>
2022-08-27 20:26:35 -07:00

69 lines
2.3 KiB
C#

using System.Linq;
using System.Threading.Tasks;
using Content.Shared.CCVar;
using NUnit.Framework;
using Robust.Server.Player;
using Robust.Shared.Configuration;
using Robust.Shared.IoC;
using Robust.Shared.Network;
namespace Content.IntegrationTests.Tests.Lobby;
public sealed class ServerReloginTest
{
[Test]
public async Task Relogin()
{
IConfigurationManager serverConfig = default;
IPlayerManager serverPlayerMgr = default;
IClientNetManager clientNetManager = default;
await using var pairTracker = await PoolManager.GetServerClient();
var server = pairTracker.Pair.Server;
var client = pairTracker.Pair.Client;
int originalMaxPlayers = 0;
string username = null;
await server.WaitAssertion(() =>
{
serverConfig = IoCManager.Resolve<IConfigurationManager>();
serverPlayerMgr = IoCManager.Resolve<IPlayerManager>();
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 = IoCManager.Resolve<IClientNetManager>();
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();
}
}