Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 127 additions & 2 deletions managed/CounterStrikeSharp.API.Tests/AdminTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,33 @@ public void ShouldAddFlagsAtRuntime()
[Fact]
public void ShouldAddPlayerToGroup()
{
// AddPlayerToGroup will create a new AdminData instance here, as "STEAM_0:1:3" does not
// exist internally at this stage. Afterwards, AddPlayerToGroup will add "#css/root" as
// a group.
AdminManager.AddPlayerToGroup(new SteamID("STEAM_0:1:3"), "#css/root");
var adminData = AdminManager.GetPlayerAdminData(new SteamID("STEAM_0:1:3"));
Assert.NotNull(adminData);
Assert.True(adminData.Groups.Any());
Assert.Equal("#css/root", adminData.Groups.Single());
}


[Fact]
public void ShouldAddPlayerToGroupAtRuntime()
{
// Similar to ShouldPlayerAddToGroup, but different in that we create AdminData
// manually first, then add the player into the group.
// Aimed to resolve an issue raised on Discord by r3troattack.

AdminManager.CreateAdminData((SteamID)76561197960265999);
Assert.False(AdminManager.PlayerInGroup((SteamID)76561197960265999, "#css/root"));
AdminManager.AddPlayerToGroup((SteamID)76561197960265999, "#css/root");

var adminData = AdminManager.GetPlayerAdminData((SteamID)76561197960265999);
Assert.NotNull(adminData);
Assert.True(adminData.Groups.Any());
Assert.Equal("#css/root", adminData.Groups.Single());
}

[Fact]
public void ShouldAddPlayerPermissionOverridesAtRuntime()
{
Expand All @@ -116,4 +137,108 @@ public void ShouldAddCommandPermissionOverridesWithEmpty()
Assert.True(AdminManager.CommandIsOverriden("runtime_command_b"));
Assert.False(AdminManager.GetPermissionOverrides("runtime_command_b").Any());
}
}

[Fact]
public void ShouldAllowRootFlagInRequiresPermissions()
{
Assert.False(AdminManager.PlayerHasPermissions((SteamID)76561197960265732, "@css/root"));
AdminManager.AddPlayerPermissions((SteamID)76561197960265732, "@css/root");
Assert.True(AdminManager.PlayerHasPermissions((SteamID)76561197960265732, "@css/root"));

var adminData = AdminManager.GetPlayerAdminData((SteamID)76561197960265732);
Assert.NotNull(adminData);
Assert.True(adminData.DomainHasRootFlag("css"));

var requirePerms = new RequiresPermissions("@css/ban");
Assert.NotNull(requirePerms);
Assert.True(requirePerms.CanExecuteCommand((SteamID)76561197960265732));
}

[Fact]
public void ShouldRequiresPermissionsPass()
{
Assert.False(AdminManager.PlayerHasPermissions((SteamID)76561197960265738, "@css/ban"));
AdminManager.AddPlayerPermissions((SteamID)76561197960265738, "@css/ban");
Assert.True(AdminManager.PlayerHasPermissions((SteamID)76561197960265738, "@css/ban"));

var requirePerms = new RequiresPermissions("@css/ban");
Assert.NotNull(requirePerms);
Assert.True(requirePerms.CanExecuteCommand((SteamID)76561197960265738));
}

[Fact]
public void ShouldRequiresPermissionsOrPassSameDomain()
{
Assert.False(AdminManager.PlayerHasPermissions((SteamID)76561197960265739, "@css/ban"));
AdminManager.AddPlayerPermissions((SteamID)76561197960265739, "@css/ban");
Assert.True(AdminManager.PlayerHasPermissions((SteamID)76561197960265739, "@css/ban"));

var requirePerms = new RequiresPermissionsOr("@css/ban", "@css/kick");
Assert.NotNull(requirePerms);
Assert.True(requirePerms.CanExecuteCommand((SteamID)76561197960265739));
}

[Fact]
public void ShouldRequiresPermissionsOrPassDifferentDomains()
{
Assert.False(AdminManager.PlayerHasPermissions((SteamID)76561197960265740, "@css/ban"));
AdminManager.AddPlayerPermissions((SteamID)76561197960265740, "@css/ban");
Assert.True(AdminManager.PlayerHasPermissions((SteamID)76561197960265740, "@css/ban"));

var requirePerms = new RequiresPermissionsOr("@css/ban", "@domain2/flag");
Assert.NotNull(requirePerms);
Assert.True(requirePerms.CanExecuteCommand((SteamID)76561197960265740));
}

[Fact]
public void ShouldRequiresPermissionsCheckFail()
{
Assert.False(AdminManager.PlayerHasPermissions((SteamID)76561197960265735, "@css/ban"));
AdminManager.AddPlayerPermissions((SteamID)76561197960265735, "@css/ban");
Assert.True(AdminManager.PlayerHasPermissions((SteamID)76561197960265735, "@css/ban"));

var requirePerms = new RequiresPermissions("@css/kick");
Assert.NotNull(requirePerms);
Assert.False(requirePerms.CanExecuteCommand((SteamID)76561197960265735));
}

[Fact]
public void ShouldRequiresPermissionsOrCheckFailSameDomain()
{
Assert.False(AdminManager.PlayerHasPermissions((SteamID)76561197960265736, "@css/ban"));
AdminManager.AddPlayerPermissions((SteamID)76561197960265736, "@css/ban");
Assert.True(AdminManager.PlayerHasPermissions((SteamID)76561197960265736, "@css/ban"));

var requirePerms = new RequiresPermissionsOr("@css/kick", "@css/vote");
Assert.NotNull(requirePerms);
Assert.False(requirePerms.CanExecuteCommand((SteamID)76561197960265736));
}

[Fact]
public void ShouldRequiresPermissionsOrCheckFailDifferentDomains()
{
Assert.False(AdminManager.PlayerHasPermissions((SteamID)76561197960265737, "@css/ban"));
AdminManager.AddPlayerPermissions((SteamID)76561197960265737, "@css/ban");
Assert.True(AdminManager.PlayerHasPermissions((SteamID)76561197960265737, "@css/ban"));

var requirePerms = new RequiresPermissionsOr("@css/kick", "@domain2/flag");
Assert.NotNull(requirePerms);
Assert.False(requirePerms.CanExecuteCommand((SteamID)76561197960265737));
}

[Fact]
public void ShouldAllowRootFlagInRequiresPermissionsOr()
{
Assert.False(AdminManager.PlayerHasPermissions((SteamID)76561197960265733, "@css/root"));
AdminManager.AddPlayerPermissions((SteamID)76561197960265733, "@css/root");
Assert.True(AdminManager.PlayerHasPermissions((SteamID)76561197960265733, "@css/root"));

var adminData = AdminManager.GetPlayerAdminData((SteamID)76561197960265733);
Assert.NotNull(adminData);
Assert.True(adminData.DomainHasRootFlag("css"));

var requirePerms = new RequiresPermissionsOr("@css/ban", "@css/kick", "@domain2/flag");
Assert.NotNull(requirePerms);
Assert.True(requirePerms.CanExecuteCommand((SteamID)76561197960265733));
}
}
Loading
Loading