using Content.Shared.CCVar; using Robust.Shared.Configuration; using Robust.Shared.Console; namespace Content.IntegrationTests.Tests.Commands; [TestFixture] public sealed class ForceMapTest { private const string DefaultMapName = "Empty"; private const string BadMapName = "asdf_asd-fa__sdfAsd_f"; // Hopefully no one ever names a map this... private const string TestMapEligibleName = "ForceMapTestEligible"; private const string TestMapIneligibleName = "ForceMapTestIneligible"; [TestPrototypes] private static readonly string TestMaps = @$" - type: gameMap id: {TestMapIneligibleName} mapName: {TestMapIneligibleName} mapPath: /Maps/Test/empty.yml minPlayers: 20 maxPlayers: 80 stations: Empty: stationProto: StandardNanotrasenStation components: - type: StationNameSetup mapNameTemplate: ""Empty"" - type: gameMap id: {TestMapEligibleName} mapName: {TestMapEligibleName} mapPath: /Maps/Test/empty.yml minPlayers: 0 stations: Empty: stationProto: StandardNanotrasenStation components: - type: StationNameSetup mapNameTemplate: ""Empty"" "; [Test] public async Task TestForceMapCommand() { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; var entMan = server.EntMan; var configManager = server.ResolveDependency(); var consoleHost = server.ResolveDependency(); await server.WaitAssertion(() => { // Make sure we're set to the default map Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(DefaultMapName), $"Test didn't start on expected map ({DefaultMapName})!"); // Try changing to a map that doesn't exist consoleHost.ExecuteCommand($"forcemap {BadMapName}"); Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(DefaultMapName), $"Forcemap succeeded with a map that does not exist ({BadMapName})!"); // Try changing to a valid map consoleHost.ExecuteCommand($"forcemap {TestMapEligibleName}"); Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(TestMapEligibleName), $"Forcemap failed with a valid map ({TestMapEligibleName})"); // Try changing to a map that exists but is ineligible consoleHost.ExecuteCommand($"forcemap {TestMapIneligibleName}"); Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(TestMapIneligibleName), $"Forcemap failed with valid but ineligible map ({TestMapIneligibleName})!"); }); // Cleanup configManager.SetCVar(CCVars.GameMap, DefaultMapName); await pair.CleanReturnAsync(); } }