diff --git a/SharedLibraryCore/PartialEntities/EFClient.cs b/SharedLibraryCore/PartialEntities/EFClient.cs
index e9a87cfe..c39656a8 100644
--- a/SharedLibraryCore/PartialEntities/EFClient.cs
+++ b/SharedLibraryCore/PartialEntities/EFClient.cs
@@ -317,7 +317,7 @@ namespace SharedLibraryCore.Database.Models
///
/// reason to kick for
/// client performing the kick
- public GameEvent Kick(String kickReason, EFClient sender)
+ public GameEvent Kick(string kickReason, EFClient sender)
{
var e = new GameEvent()
{
@@ -330,7 +330,7 @@ namespace SharedLibraryCore.Database.Models
};
// enforce level restrictions
- if (Level > sender.Level)
+ if (sender.Level <= Level)
{
e.FailReason = GameEvent.EventFailReason.Permission;
}
diff --git a/Tests/ApplicationTests/ClientTests.cs b/Tests/ApplicationTests/ClientTests.cs
new file mode 100644
index 00000000..4a294968
--- /dev/null
+++ b/Tests/ApplicationTests/ClientTests.cs
@@ -0,0 +1,70 @@
+using ApplicationTests.Fixtures;
+using FakeItEasy;
+using IW4MAdmin;
+using Microsoft.Extensions.DependencyInjection;
+using NUnit.Framework;
+using SharedLibraryCore;
+using SharedLibraryCore.Database.Models;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ApplicationTests
+{
+ [TestFixture]
+ public class ClientTests
+ {
+ private IServiceProvider serviceProvider;
+
+ [SetUp]
+ public void Setup()
+ {
+ serviceProvider = new ServiceCollection()
+ .BuildBase()
+ .BuildServiceProvider();
+ }
+
+ #region KICK
+ [Test]
+ public void Test_Kick_Happy()
+ {
+ var server = serviceProvider.GetRequiredService();
+ var target = ClientGenerators.CreateBasicClient(server);
+ var origin = ClientGenerators.CreateBasicClient(server);
+ origin.Level = EFClient.Permission.Owner;
+
+ var result = target.Kick("test", origin);
+
+ Assert.False(result.Failed);
+ Assert.AreEqual(EFClient.ClientState.Disconnecting, target.State);
+ }
+
+ [Test]
+ public void Test_Kick_FailSamePermission()
+ {
+ var server = serviceProvider.GetRequiredService();
+ var target = ClientGenerators.CreateBasicClient(server);
+ var origin = ClientGenerators.CreateBasicClient(server);
+
+ var result = target.Kick("test", origin);
+
+ Assert.True(result.Failed);
+ Assert.AreEqual(GameEvent.EventFailReason.Permission, result.FailReason);
+ }
+
+ [Test]
+ public void Test_Kick_FailLessPermission()
+ {
+ var server = serviceProvider.GetRequiredService();
+ var target = ClientGenerators.CreateBasicClient(server);
+ var origin = ClientGenerators.CreateBasicClient(server);
+ target.Level = EFClient.Permission.Owner;
+
+ var result = target.Kick("test", origin);
+
+ Assert.True(result.Failed);
+ Assert.AreEqual(GameEvent.EventFailReason.Permission, result.FailReason);
+ }
+ #endregion
+ }
+}