Move 50 auth/accounts/permissions/JWT/NKey test files from NATS.Server.Tests into a dedicated NATS.Server.Auth.Tests project. Update namespaces, replace private GetFreePort/ReadUntilAsync helpers with TestUtilities calls, replace Task.Delay with TaskCompletionSource in test doubles, and add InternalsVisibleTo. 690 tests pass.
72 lines
1.9 KiB
C#
72 lines
1.9 KiB
C#
using NATS.Server.Auth;
|
|
using NATS.Server.Subscriptions;
|
|
|
|
namespace NATS.Server.Auth.Tests;
|
|
|
|
public class AccountTests
|
|
{
|
|
[Fact]
|
|
public void Account_has_name_and_own_sublist()
|
|
{
|
|
var account = new Account("test-account");
|
|
|
|
account.Name.ShouldBe("test-account");
|
|
account.SubList.ShouldNotBeNull();
|
|
account.SubList.Count.ShouldBe(0u);
|
|
}
|
|
|
|
[Fact]
|
|
public void Account_tracks_clients()
|
|
{
|
|
var account = new Account("test");
|
|
|
|
account.ClientCount.ShouldBe(0);
|
|
account.AddClient(1);
|
|
account.ClientCount.ShouldBe(1);
|
|
account.RemoveClient(1);
|
|
account.ClientCount.ShouldBe(0);
|
|
}
|
|
|
|
[Fact]
|
|
public void GlobalAccount_has_default_name()
|
|
{
|
|
Account.GlobalAccountName.ShouldBe("$G");
|
|
}
|
|
|
|
[Fact]
|
|
public void Account_enforces_max_connections()
|
|
{
|
|
var acc = new Account("test") { MaxConnections = 2 };
|
|
acc.AddClient(1).ShouldBeTrue();
|
|
acc.AddClient(2).ShouldBeTrue();
|
|
acc.AddClient(3).ShouldBeFalse(); // exceeds limit
|
|
acc.ClientCount.ShouldBe(2);
|
|
}
|
|
|
|
[Fact]
|
|
public void Account_unlimited_connections_when_zero()
|
|
{
|
|
var acc = new Account("test") { MaxConnections = 0 };
|
|
acc.AddClient(1).ShouldBeTrue();
|
|
acc.AddClient(2).ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Account_enforces_max_subscriptions()
|
|
{
|
|
var acc = new Account("test") { MaxSubscriptions = 2 };
|
|
acc.IncrementSubscriptions().ShouldBeTrue();
|
|
acc.IncrementSubscriptions().ShouldBeTrue();
|
|
acc.IncrementSubscriptions().ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Account_decrement_subscriptions()
|
|
{
|
|
var acc = new Account("test") { MaxSubscriptions = 1 };
|
|
acc.IncrementSubscriptions().ShouldBeTrue();
|
|
acc.DecrementSubscriptions();
|
|
acc.IncrementSubscriptions().ShouldBeTrue(); // slot freed
|
|
}
|
|
}
|