using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Content.Server.Administration.Logs; using Content.Server.GameTicking; using Content.Shared.Administration.Logs; using Content.Shared.CCVar; using NUnit.Framework; using Robust.Server.Player; using Robust.Shared.GameObjects; namespace Content.IntegrationTests.Tests.Administration.Logs; [TestFixture] [TestOf(typeof(AdminLogSystem))] public class QueryTests : ContentIntegrationTest { [Test] public async Task QuerySingleLog() { var serverOptions = new ServerContentIntegrationOption { CVarOverrides = { [CCVars.AdminLogsQueueSendDelay.Name] = "0" } }; var (client, server) = await StartConnectedServerClientPair(serverOptions: serverOptions); await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync()); var sSystems = server.ResolveDependency(); var sPlayers = server.ResolveDependency(); var sAdminLogSystem = sSystems.GetEntitySystem(); var sGameTicker = sSystems.GetEntitySystem(); var date = DateTime.UtcNow; var guid = Guid.NewGuid(); IPlayerSession player = default; await server.WaitPost(() => { player = sPlayers.GetAllPlayers().First(); sAdminLogSystem.Add(LogType.Unknown, $"{player.AttachedEntity:Entity} test log: {guid}"); }); var filter = new LogFilter { Round = sGameTicker.RoundId, Search = guid.ToString(), Types = new List {LogType.Unknown}, After = date, AnyPlayers = new[] {player.UserId.UserId} }; await WaitUntil(server, async () => { await foreach (var _ in sAdminLogSystem.All(filter)) { return true; } return false; }); } }