diff --git a/IW4MAdmin.sln b/IW4MAdmin.sln index 6ab317bbd..d31db23ff 100644 --- a/IW4MAdmin.sln +++ b/IW4MAdmin.sln @@ -30,8 +30,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProfanityDeterment", "Plugi EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Login", "Plugins\Login\Login.csproj", "{D9F2ED28-6FA5-40CA-9912-E7A849147AB1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Plugins\Tests\Tests.csproj", "{B72DEBFB-9D48-4076-8FF5-1FD72A830845}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IW4ScriptCommands", "Plugins\IW4ScriptCommands\IW4ScriptCommands.csproj", "{6C706CE5-A206-4E46-8712-F8C48D526091}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ScriptPlugins", "ScriptPlugins", "{3F9ACC27-26DB-49FA-BCD2-50C54A49C9FA}" @@ -48,8 +46,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ScriptPlugins", "ScriptPlug Plugins\ScriptPlugins\VPNDetection.js = Plugins\ScriptPlugins\VPNDetection.js EndProjectSection EndProject -Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "GameLogServer", "GameLogServer\GameLogServer.pyproj", "{42EFDA12-10D3-4C40-A210-9483520116BC}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web", "Web", "{A848FCF1-8527-4AA8-A1AA-50D29695C678}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StatsWeb", "Plugins\Web\StatsWeb\StatsWeb.csproj", "{776B348B-F818-4A0F-A625-D0AF8BAD3E9B}" @@ -246,28 +242,6 @@ Global {D9F2ED28-6FA5-40CA-9912-E7A849147AB1}.Release|x64.Build.0 = Release|Any CPU {D9F2ED28-6FA5-40CA-9912-E7A849147AB1}.Release|x86.ActiveCfg = Release|Any CPU {D9F2ED28-6FA5-40CA-9912-E7A849147AB1}.Release|x86.Build.0 = Release|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Debug|x64.ActiveCfg = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Debug|x64.Build.0 = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Debug|x86.ActiveCfg = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Debug|x86.Build.0 = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Prerelease|Any CPU.ActiveCfg = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Prerelease|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Prerelease|Mixed Platforms.Build.0 = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Prerelease|x64.ActiveCfg = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Prerelease|x64.Build.0 = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Prerelease|x86.ActiveCfg = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Prerelease|x86.Build.0 = Debug|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Release|x64.ActiveCfg = Release|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Release|x64.Build.0 = Release|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Release|x86.ActiveCfg = Release|Any CPU - {B72DEBFB-9D48-4076-8FF5-1FD72A830845}.Release|x86.Build.0 = Release|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Debug|Any CPU.Build.0 = Debug|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -292,28 +266,6 @@ Global {6C706CE5-A206-4E46-8712-F8C48D526091}.Release|x64.Build.0 = Release|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Release|x86.ActiveCfg = Release|Any CPU {6C706CE5-A206-4E46-8712-F8C48D526091}.Release|x86.Build.0 = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|x64.ActiveCfg = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|x64.Build.0 = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|x86.ActiveCfg = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Debug|x86.Build.0 = Debug|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|Any CPU.ActiveCfg = Prerelease|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|Mixed Platforms.ActiveCfg = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|Mixed Platforms.Build.0 = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|x64.ActiveCfg = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|x64.Build.0 = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|x86.ActiveCfg = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Prerelease|x86.Build.0 = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Release|Any CPU.Build.0 = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Release|x64.ActiveCfg = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Release|x64.Build.0 = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Release|x86.ActiveCfg = Release|Any CPU - {42EFDA12-10D3-4C40-A210-9483520116BC}.Release|x86.Build.0 = Release|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Debug|Any CPU.Build.0 = Debug|Any CPU {776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -418,7 +370,6 @@ Global {179140D3-97AA-4CB4-8BF6-A0C73CA75701} = {26E8B310-269E-46D4-A612-24601F16065F} {958FF7EC-0226-4E85-A85B-B84EC768197D} = {26E8B310-269E-46D4-A612-24601F16065F} {D9F2ED28-6FA5-40CA-9912-E7A849147AB1} = {26E8B310-269E-46D4-A612-24601F16065F} - {B72DEBFB-9D48-4076-8FF5-1FD72A830845} = {26E8B310-269E-46D4-A612-24601F16065F} {6C706CE5-A206-4E46-8712-F8C48D526091} = {26E8B310-269E-46D4-A612-24601F16065F} {3F9ACC27-26DB-49FA-BCD2-50C54A49C9FA} = {26E8B310-269E-46D4-A612-24601F16065F} {A848FCF1-8527-4AA8-A1AA-50D29695C678} = {26E8B310-269E-46D4-A612-24601F16065F} diff --git a/Plugins/Tests/ClientTests.cs b/Plugins/Tests/ClientTests.cs deleted file mode 100644 index 79770a33b..000000000 --- a/Plugins/Tests/ClientTests.cs +++ /dev/null @@ -1,349 +0,0 @@ -using IW4MAdmin.Application; -using SharedLibraryCore; -using SharedLibraryCore.Commands; -using SharedLibraryCore.Database.Models; -using SharedLibraryCore.Events; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Xunit; - -namespace Tests -{ - [Collection("ManagerCollection")] - public class ClientTests - { - private readonly ApplicationManager _manager; - const int TestTimeout = 10000; - - public ClientTests(ManagerFixture fixture) - { - _manager = fixture.Manager; - } - - [Fact] - public void SetAdditionalPropertyShouldSucceed() - { - var client = new EFClient(); - int newProp = 5; - client.SetAdditionalProperty("NewProp", newProp); - } - - [Fact] - public void GetAdditionalPropertyShouldSucceed() - { - var client = new EFClient(); - int newProp = 5; - client.SetAdditionalProperty("NewProp", newProp); - - Assert.True(client.GetAdditionalProperty("NewProp") == 5, "added property does not match retrieved property"); - } - - [Fact] - public void BanEvasionShouldLink() - { - var server = _manager.Servers[0]; - var waiter = new ManualResetEventSlim(); - - _manager.GetApplicationSettings().Configuration().RConPollRate = 5000; - - - while (!server.IsInitialized) - { - Thread.Sleep(100); - } - - var e = new GameEvent() - { - Type = GameEvent.EventType.PreConnect, - Owner = server, - Origin = new EFClient() - { - NetworkId = 1337, - ClientNumber = 0, - CurrentAlias = new EFAlias() - { - Name = "Ban Me", - IPAddress = 1337 - } - } - }; - - _manager.AddEvent(e); - e.Complete(); - - e = new GameEvent() - { - Type = GameEvent.EventType.PreConnect, - Owner = server, - Origin = new EFClient() - { - NetworkId = 1338, - ClientNumber = 1, - CurrentAlias = new EFAlias() - { - Name = "Ban Me", - IPAddress = null - } - } - }; - - _manager.AddEvent(e); - e.Complete(); - - e = new GameEvent() - { - Type = GameEvent.EventType.Update, - Owner = server, - Origin = new EFClient() - { - NetworkId = 1338, - ClientNumber = 1, - CurrentAlias = new EFAlias() - { - Name = "Ban Me", - IPAddress = 1337 - } - } - }; - - _manager.AddEvent(e); - e.Complete(); - - } - - [Fact] - public void WarnClientShouldSucceed() - { - var onJoined = new ManualResetEventSlim(); - var server = _manager.Servers[0]; - - while (!server.IsInitialized) - { - Thread.Sleep(100); - } - - //_manager.OnServerEvent += (sender, eventArgs) => - //{ - // if (eventArgs.Event.Type == GameEvent.EventType.Connect) - // { - // onJoined.Set(); - // } - //}; - - server.EmulateClientJoinLog(); - onJoined.Wait(); - - var client = server.Clients[0]; - - var warnEvent = client.Warn("test warn", Utilities.IW4MAdminClient(server)); - warnEvent.WaitAsync(new TimeSpan(0, 0, 10), new CancellationToken()).Wait(); - - Assert.False(warnEvent.Failed); - - warnEvent = client.Warn("test warn", new EFClient() { ClientId = 1, Level = EFClient.Permission.Banned, CurrentServer = client.CurrentServer }); - warnEvent.WaitAsync(new TimeSpan(0, 0, 10), new CancellationToken()).Wait(); - - Assert.True(warnEvent.FailReason == GameEvent.EventFailReason.Permission && - client.Warnings == 1, "warning was applied without proper permissions"); - - // warn clear - var warnClearEvent = client.WarnClear(new EFClient { ClientId = 1, Level = EFClient.Permission.Banned, CurrentServer = client.CurrentServer }); - warnClearEvent.WaitAsync(new TimeSpan(0, 0, 10), new CancellationToken()).Wait(); - - Assert.True(warnClearEvent.FailReason == GameEvent.EventFailReason.Permission && - client.Warnings == 1, "warning was removed without proper permissions"); - - warnClearEvent = client.WarnClear(Utilities.IW4MAdminClient(server)); - warnClearEvent.WaitAsync(new TimeSpan(0, 0, 10), new CancellationToken()).Wait(); - - Assert.True(!warnClearEvent.Failed && client.Warnings == 0, "warning was not cleared"); - } - - [Fact] - public void ReportClientShouldSucceed() - { - while (!_manager.IsInitialized) - { - Thread.Sleep(100); - } - - var client = _manager.Servers.First().GetClientsAsList().FirstOrDefault(); - Assert.False(client == null, "no client found to report"); - - // fail - var player = new EFClient() { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }; - player.SetAdditionalProperty("_reportCount", 3); - var reportEvent = client.Report("test report", player); - reportEvent.WaitAsync(new TimeSpan(0, 0, 10), new CancellationToken()).Wait(); - - Assert.True(reportEvent.FailReason == GameEvent.EventFailReason.Throttle & - client.CurrentServer.Reports.Count(r => r.Target.NetworkId == client.NetworkId) == 0, $"too many reports were applied [{reportEvent.FailReason.ToString()}]"); - - // succeed - reportEvent = client.Report("test report", new EFClient() { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }); - reportEvent.WaitAsync(new TimeSpan(0, 0, 10), new CancellationToken()).Wait(); - - Assert.True(!reportEvent.Failed && - client.CurrentServer.Reports.Count(r => r.Target.NetworkId == client.NetworkId) == 1, $"report was not applied [{reportEvent.FailReason.ToString()}]"); - - // fail - reportEvent = client.Report("test report", new EFClient() { ClientId = 1, NetworkId = 1, Level = EFClient.Permission.Banned, CurrentServer = client.CurrentServer }); - - Assert.True(reportEvent.FailReason == GameEvent.EventFailReason.Permission && - client.CurrentServer.Reports.Count(r => r.Target.NetworkId == client.NetworkId) == 1, - $"report was applied without proper permission [{reportEvent.FailReason.ToString()},{ client.CurrentServer.Reports.Count(r => r.Target.NetworkId == client.NetworkId)}]"); - - // fail - reportEvent = client.Report("test report", client); - - Assert.True(reportEvent.FailReason == GameEvent.EventFailReason.Invalid && - client.CurrentServer.Reports.Count(r => r.Target.NetworkId == client.NetworkId) == 1, $"report was applied to self"); - - // fail - reportEvent = client.Report("test report", new EFClient() { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }); - - Assert.True(reportEvent.FailReason == GameEvent.EventFailReason.Exception && - client.CurrentServer.Reports.Count(r => r.Target.NetworkId == client.NetworkId) == 1, $"duplicate report was applied"); - } - - [Fact] - public void FlagClientShouldSucceed() - { - while (!_manager.IsInitialized) - { - Thread.Sleep(100); - } - - var client = _manager.Servers.First().GetClientsAsList().FirstOrDefault(); - Assert.False(client == null, "no client found to flag"); - - var flagEvent = client.Flag("test flag", new EFClient { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }); - flagEvent.Complete(); - - // succeed - Assert.True(!flagEvent.Failed && - client.Level == EFClient.Permission.Flagged, $"player is not flagged [{flagEvent.FailReason.ToString()}]"); - Assert.False(client.ReceivedPenalties.FirstOrDefault(p => p.Offense == "test flag") == null, "flag was not applied"); - - flagEvent = client.Flag("test flag", new EFClient { ClientId = 1, Level = EFClient.Permission.Banned, CurrentServer = client.CurrentServer }); - flagEvent.Complete(); - - // fail - Assert.True(client.ReceivedPenalties.Count == 1, "flag was applied without permisions"); - - flagEvent = client.Flag("test flag", new EFClient { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }); - flagEvent.Complete(); - - // fail - Assert.True(client.ReceivedPenalties.Count == 1, "duplicate flag was applied"); - - var unflagEvent = client.Unflag("test unflag", new EFClient { ClientId = 1, Level = EFClient.Permission.Banned, CurrentServer = client.CurrentServer }); - unflagEvent.Complete(); - - // fail - Assert.False(client.Level == EFClient.Permission.User, "user was unflagged without permissions"); - - unflagEvent = client.Unflag("test unflag", new EFClient { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }); - unflagEvent.Complete(); - - // succeed - Assert.True(client.Level == EFClient.Permission.User, "user was not unflagged"); - - unflagEvent = client.Unflag("test unflag", new EFClient { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }); - unflagEvent.Complete(); - - // succeed - Assert.True(unflagEvent.FailReason == GameEvent.EventFailReason.Invalid, "user was not flagged"); - } - - [Fact] - void KickClientShouldSucceed() - { - while (!_manager.IsInitialized) - { - Thread.Sleep(100); - } - - var client = _manager.Servers.First().GetClientsAsList().FirstOrDefault(); - Assert.False(client == null, "no client found to kick"); - - var kickEvent = client.Kick("test kick", new EFClient() { ClientId = 1, Level = EFClient.Permission.Banned, CurrentServer = client.CurrentServer }); - kickEvent.Complete(); - - Assert.True(kickEvent.FailReason == GameEvent.EventFailReason.Permission, "client was kicked without permission"); - - kickEvent = client.Kick("test kick", new EFClient() { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }); - kickEvent.Complete(); - - Assert.True(_manager.Servers.First().GetClientsAsList().FirstOrDefault(c => c.NetworkId == client.NetworkId) == null, "client was not kicked"); - } - - [Fact] - void TempBanClientShouldSucceed() - { - while (!_manager.IsInitialized) - { - Thread.Sleep(100); - } - - var client = _manager.Servers.First().GetClientsAsList().FirstOrDefault(); - Assert.False(client == null, "no client found to tempban"); - - /* var tbCommand = new TempBanCommand(); - tbCommand.ExecuteAsync(new GameEvent() - { - Origin = new EFClient() { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }, - Target = client, - Data = "5days test tempban", - Type = GameEvent.EventType.Command, - Owner = client.CurrentServer - }).Wait(); - - Assert.True(_manager.GetPenaltyService().GetActivePenaltiesAsync(client.AliasLinkId).Result.Count(p => p.Type == EFPenalty.PenaltyType.TempBan) == 1, - "tempban was not added");*/ - } - - [Fact] - void BanUnbanClientShouldSucceed() - { - while (!_manager.IsInitialized) - { - Thread.Sleep(100); - } - - var client = _manager.Servers.First().GetClientsAsList().FirstOrDefault(); - Assert.False(client == null, "no client found to ban"); -/* - var banCommand = new BanCommand(); - banCommand.ExecuteAsync(new GameEvent() - { - Origin = new EFClient() { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }, - Target = client, - Data = "test ban", - Type = GameEvent.EventType.Command, - Owner = client.CurrentServer - }).Wait(); - - Assert.True(_manager.GetPenaltyService().GetActivePenaltiesAsync(client.AliasLinkId).Result.Count(p => p.Type == EFPenalty.PenaltyType.Ban) == 1, - "ban was not added"); - - var unbanCommand = new UnbanCommand(); - unbanCommand.ExecuteAsync(new GameEvent() - { - Origin = new EFClient() { ClientId = 1, Level = EFClient.Permission.Console, CurrentServer = client.CurrentServer }, - //Target = Manager.GetClientService().Find(c => c.NetworkId == client.NetworkId).Result.First(), - Data = "test unban", - Type = GameEvent.EventType.Command, - Owner = client.CurrentServer - }).Wait(); - - Assert.True(_manager.GetPenaltyService().GetActivePenaltiesAsync(client.AliasLinkId).Result.Count(p => p.Type == EFPenalty.PenaltyType.Ban) == 0, - "ban was not removed");*/ - - } - } -} diff --git a/Plugins/Tests/ManagerFixture.cs b/Plugins/Tests/ManagerFixture.cs deleted file mode 100644 index 29a05ecc4..000000000 --- a/Plugins/Tests/ManagerFixture.cs +++ /dev/null @@ -1,63 +0,0 @@ -using IW4MAdmin.Application; -using IW4MAdmin.Application.Factories; -using IW4MAdmin.Application.Misc; -using SharedLibraryCore.Configuration; -using SharedLibraryCore.Interfaces; -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Threading.Tasks; -using Xunit; - -namespace Tests -{ - public class ManagerFixture : IDisposable - { - public ApplicationManager Manager { get; private set; } - - public ManagerFixture() - { - string logFile = @"X:\IW4MAdmin\Plugins\Tests\bin\Debug\netcoreapp2.2\test_mp.log"; - - File.WriteAllText(logFile, Environment.NewLine); - - Manager = null; - - var config = new ApplicationConfiguration - { - Servers = new[] - { - new ServerConfiguration() - { - IPAddress = "127.0.0.1", - Password = "test", - Port = 28960, - RConParserVersion = "test", - EventParserVersion = "IW4x (v0.6.0)", - ManualLogPath = logFile - } - }, - RConPollRate = int.MaxValue - }; - - Manager.ConfigHandler = new BaseConfigurationHandler("test"); - Manager.ConfigHandler.Set(config); - - Manager.Init().Wait(); - - Task.Run(() => Manager.Start()); - } - - public void Dispose() - { - Manager.Stop(); - } - } - - [CollectionDefinition("ManagerCollection")] - public class ManagerCollection : ICollectionFixture - { - - } -} diff --git a/Plugins/Tests/ManagerTests.cs b/Plugins/Tests/ManagerTests.cs deleted file mode 100644 index 96e75652b..000000000 --- a/Plugins/Tests/ManagerTests.cs +++ /dev/null @@ -1,63 +0,0 @@ -using IW4MAdmin.Application; -using SharedLibraryCore; -using SharedLibraryCore.Database.Models; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; -using Xunit; - -namespace Tests -{ - [Collection("ManagerCollection")] - public class ManagerTests - { - readonly ApplicationManager Manager; - - public ManagerTests(ManagerFixture fixture) - { - Manager = fixture.Manager; - } - - [Fact] - public void AreCommandNamesUnique() - { - bool test = Manager.GetCommands().Count == Manager.GetCommands().Select(c => c.Name).Distinct().Count(); - Assert.True(test, "command names are not unique"); - } - - [Fact] - public void AreCommandAliasesUnique() - { - var mgr = Manager; - bool test = mgr.GetCommands().Count == mgr.GetCommands().Select(c => c.Alias).Distinct().Count(); - - foreach (var duplicate in mgr.GetCommands().GroupBy(_cmd => _cmd.Alias).Where(_grp => _grp.Count() > 1).Select(_grp => new { Command = _grp.First().Name, Alias = _grp.Key })) - { - Debug.WriteLine($"{duplicate.Command}: {duplicate.Alias}"); - } - - Assert.True(test, "command aliases are not unique"); - } - - [Fact] - public void PrintCommands() - { - var sb = new StringBuilder(); - - sb.AppendLine("|Name |Alias|Description |Requires Target|Syntax |Required Level|"); - sb.AppendLine("|--------------| -----| --------------------------------------------------------| -----------------| -------------| ----------------|"); - - foreach (var command in Manager.GetCommands().OrderByDescending(c => c.Permission).ThenBy(c => c.Name)) - { - sb.AppendLine($"|{command.Name}|{command.Alias}|{command.Description}|{((Command)command).RequiresTarget}|{((Command)command).Syntax.Substring(8).EscapeMarkdown()}|{command.Permission}|"); - } - - Assert.True(false, sb.ToString()); - } - } -} - diff --git a/Plugins/Tests/PluginTests.cs b/Plugins/Tests/PluginTests.cs deleted file mode 100644 index ffc5600d3..000000000 --- a/Plugins/Tests/PluginTests.cs +++ /dev/null @@ -1,52 +0,0 @@ -using IW4MAdmin.Application; -using SharedLibraryCore; -using SharedLibraryCore.Database.Models; -using Xunit; - -namespace Tests -{ - [Collection("ManagerCollection")] - public class PluginTests - { - readonly ApplicationManager Manager; - - public PluginTests(ManagerFixture fixture) - { - Manager = fixture.Manager; - } - - [Fact] - public void ClientSayObjectionalWordShouldWarn() - { - var e = new GameEvent() - { - Type = GameEvent.EventType.Connect, - Origin = new EFClient() - { - Name = $"Player1", - NetworkId = 1, - ClientNumber = 1 - }, - Owner = Manager.GetServers()[0] - }; - - Manager.AddEvent(e); - e.Complete(); - - var client = Manager.GetServers()[0].Clients[0]; - - e = new GameEvent() - { - Type = GameEvent.EventType.Say, - Origin = client, - Data = "nigger", - Owner = e.Owner - }; - - Manager.AddEvent(e); - e.Complete(); - - Assert.True(client.Warnings == 1, "client wasn't warned for objectional language"); - } - } -} diff --git a/Plugins/Tests/ServerTests.cs b/Plugins/Tests/ServerTests.cs deleted file mode 100644 index 9f0a984a8..000000000 --- a/Plugins/Tests/ServerTests.cs +++ /dev/null @@ -1,113 +0,0 @@ -using IW4MAdmin.Application; -using SharedLibraryCore; -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Threading; -using Xunit; - -namespace Tests -{ - [Collection("ManagerCollection")] - public class ServerTests - { - private readonly ApplicationManager _manager; - - public ServerTests(ManagerFixture fixture) - { - _manager = fixture.Manager; - } - - [Fact] - public void AddAndRemoveClientViaLog() - { - var resetEvent = new ManualResetEventSlim(); - var server = _manager.Servers[0]; - - var currentClientCount = server.ClientNum; - int eventsProcessed = 0; - - /*_manager.OnServerEvent += (sender, eventArgs) => - { - if (eventArgs.Event.Type == GameEvent.EventType.Connect) - { - eventArgs.Event.Complete(); - Assert.False(eventArgs.Event.Failed, "connect event was not processed"); - Assert.True(server.ClientNum == currentClientCount + 1, "client count was not incremented"); - eventsProcessed++; - resetEvent.Set(); - } - - if (eventArgs.Event.Type == GameEvent.EventType.Disconnect) - { - eventArgs.Event.Complete(); - Assert.False(eventArgs.Event.Failed, "disconnect event was not processed"); - Assert.True(server.ClientNum == currentClientCount, "client count was not decremented"); - eventsProcessed++; - resetEvent.Set(); - } - };*/ - - server.EmulateClientJoinLog(); - - resetEvent.Wait(15000); - resetEvent.Reset(); - - Assert.Equal(1, eventsProcessed); - - server.EmulateClientQuitLog(); - - resetEvent.Wait(15000); - - Assert.Equal(2, eventsProcessed); - } - - [Fact] - public void AddAndRemoveClientViaRcon() - { - var resetEvent = new ManualResetEventSlim(); - var server = _manager.Servers[0]; - - var currentClientCount = server.ClientNum; - int eventsProcessed = 0; - - _manager.GetApplicationSettings().Configuration().RConPollRate = 5000; - /*_manager.OnServerEvent += (sender, eventArgs) => - { - if (eventArgs.Event.Type == GameEvent.EventType.Connect) - { - eventArgs.Event.Complete(); - Assert.False(eventArgs.Event.Failed, "connect event was not processed"); - Assert.True(server.ClientNum == currentClientCount + 1, "client count was not incremented"); - eventsProcessed++; - resetEvent.Set(); - } - - if (eventArgs.Event.Type == GameEvent.EventType.Disconnect) - { - eventArgs.Event.Complete(); - Assert.False(eventArgs.Event.Failed, "disconnect event was not processed"); - Assert.True(server.ClientNum == currentClientCount, "client count was not decremented"); - eventsProcessed++; - resetEvent.Set(); - } - };*/ - - (server.RconParser as TestRconParser).FakeClientCount = 1; - - resetEvent.Wait(15000); - resetEvent.Reset(); - - Assert.Equal(1, eventsProcessed); - - (server.RconParser as TestRconParser).FakeClientCount = 0; - - resetEvent.Wait(15000); - - Assert.Equal(2, eventsProcessed); - - _manager.GetApplicationSettings().Configuration().RConPollRate = int.MaxValue; - } - } -} diff --git a/Plugins/Tests/TestHelpers.cs b/Plugins/Tests/TestHelpers.cs deleted file mode 100644 index 30d13ed7f..000000000 --- a/Plugins/Tests/TestHelpers.cs +++ /dev/null @@ -1,24 +0,0 @@ -using IW4MAdmin.Application; -using SharedLibraryCore; -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; - -namespace Tests -{ - internal static class TestHelpers - { - internal static void EmulateClientJoinLog(this Server svr) - { - long guid = svr.ClientNum + 1; - File.AppendAllText(svr.LogPath, $"0:00 J;{guid};{svr.ClientNum};test_client_{svr.ClientNum}\r\n"); - } - - internal static void EmulateClientQuitLog(this Server svr) - { - long guid = Math.Max(1, svr.ClientNum); - File.AppendAllText(svr.LogPath, $"0:00 Q;{guid};{svr.ClientNum};test_client_{svr.ClientNum}\r\n"); - } - } -} diff --git a/Plugins/Tests/TestRconParser.cs b/Plugins/Tests/TestRconParser.cs deleted file mode 100644 index 23f44344a..000000000 --- a/Plugins/Tests/TestRconParser.cs +++ /dev/null @@ -1,44 +0,0 @@ -using SharedLibraryCore.Database.Models; -using SharedLibraryCore.Interfaces; -using SharedLibraryCore.RCon; -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; - -namespace Tests -{ - class TestRconParser : IW4MAdmin.Application.RconParsers.BaseRConParser - { - public TestRconParser(IParserRegexFactory f) : base(f) - { - - } - - public int FakeClientCount { get; set; } - public List FakeClients { get; set; } = new List(); - - public override string Version => "test"; - - public override async Task<(List, string)> GetStatusAsync(IRConConnection connection) - { - var clientList = new List(); - - for (int i = 0; i < FakeClientCount; i++) - { - clientList.Add(new EFClient() - { - ClientNumber = i, - NetworkId = i + 1, - CurrentAlias = new EFAlias() - { - Name = $"test_bot_{i}", - IPAddress = i + 1 - } - }); - } - - return clientList.Count > 0 ? (clientList, "mp_rust") : (FakeClients, "mp_rust"); - } - } -} diff --git a/Plugins/Tests/Tests.csproj b/Plugins/Tests/Tests.csproj deleted file mode 100644 index 824143ab0..000000000 --- a/Plugins/Tests/Tests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - Library - netcoreapp3.1 - - - 7.1 - - - - TRACE;DEBUG - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - - - -