remove old test project
This commit is contained in:
parent
214d15384d
commit
021c0244b4
@ -30,8 +30,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProfanityDeterment", "Plugi
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Login", "Plugins\Login\Login.csproj", "{D9F2ED28-6FA5-40CA-9912-E7A849147AB1}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Login", "Plugins\Login\Login.csproj", "{D9F2ED28-6FA5-40CA-9912-E7A849147AB1}"
|
||||||
EndProject
|
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}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IW4ScriptCommands", "Plugins\IW4ScriptCommands\IW4ScriptCommands.csproj", "{6C706CE5-A206-4E46-8712-F8C48D526091}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ScriptPlugins", "ScriptPlugins", "{3F9ACC27-26DB-49FA-BCD2-50C54A49C9FA}"
|
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
|
Plugins\ScriptPlugins\VPNDetection.js = Plugins\ScriptPlugins\VPNDetection.js
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
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}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web", "Web", "{A848FCF1-8527-4AA8-A1AA-50D29695C678}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StatsWeb", "Plugins\Web\StatsWeb\StatsWeb.csproj", "{776B348B-F818-4A0F-A625-D0AF8BAD3E9B}"
|
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|x64.Build.0 = Release|Any CPU
|
||||||
{D9F2ED28-6FA5-40CA-9912-E7A849147AB1}.Release|x86.ActiveCfg = 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
|
{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.ActiveCfg = Debug|Any CPU
|
||||||
{6C706CE5-A206-4E46-8712-F8C48D526091}.Debug|Any CPU.Build.0 = 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
|
{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|x64.Build.0 = Release|Any CPU
|
||||||
{6C706CE5-A206-4E46-8712-F8C48D526091}.Release|x86.ActiveCfg = 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
|
{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.ActiveCfg = Debug|Any CPU
|
||||||
{776B348B-F818-4A0F-A625-D0AF8BAD3E9B}.Debug|Any CPU.Build.0 = 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
|
{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}
|
{179140D3-97AA-4CB4-8BF6-A0C73CA75701} = {26E8B310-269E-46D4-A612-24601F16065F}
|
||||||
{958FF7EC-0226-4E85-A85B-B84EC768197D} = {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}
|
{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}
|
{6C706CE5-A206-4E46-8712-F8C48D526091} = {26E8B310-269E-46D4-A612-24601F16065F}
|
||||||
{3F9ACC27-26DB-49FA-BCD2-50C54A49C9FA} = {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}
|
{A848FCF1-8527-4AA8-A1AA-50D29695C678} = {26E8B310-269E-46D4-A612-24601F16065F}
|
||||||
|
@ -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<int>("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");*/
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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<ApplicationConfiguration>("test");
|
|
||||||
Manager.ConfigHandler.Set(config);
|
|
||||||
|
|
||||||
Manager.Init().Wait();
|
|
||||||
|
|
||||||
Task.Run(() => Manager.Start());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Manager.Stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[CollectionDefinition("ManagerCollection")]
|
|
||||||
public class ManagerCollection : ICollectionFixture<ManagerFixture>
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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<EFClient> FakeClients { get; set; } = new List<EFClient>();
|
|
||||||
|
|
||||||
public override string Version => "test";
|
|
||||||
|
|
||||||
public override async Task<(List<EFClient>, string)> GetStatusAsync(IRConConnection connection)
|
|
||||||
{
|
|
||||||
var clientList = new List<EFClient>();
|
|
||||||
|
|
||||||
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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
|
||||||
<ApplicationIcon />
|
|
||||||
<StartupObject />
|
|
||||||
<LangVersion>7.1</LangVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
|
||||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="xunit" Version="2.4.1" />
|
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\Application\Application.csproj" />
|
|
||||||
<ProjectReference Include="..\..\SharedLibraryCore\SharedLibraryCore.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
Loading…
x
Reference in New Issue
Block a user