76 lines
2.1 KiB
C#
76 lines
2.1 KiB
C#
using NATS.Server.Auth;
|
|
using NATS.Server.Imports;
|
|
|
|
namespace NATS.Server.Tests;
|
|
|
|
public class ImportExportTests
|
|
{
|
|
[Fact]
|
|
public void ExportAuth_public_export_authorizes_any_account()
|
|
{
|
|
var auth = new ExportAuth();
|
|
var account = new Account("test");
|
|
auth.IsAuthorized(account).ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void ExportAuth_approved_accounts_restricts_access()
|
|
{
|
|
var auth = new ExportAuth { ApprovedAccounts = ["allowed"] };
|
|
var allowed = new Account("allowed");
|
|
var denied = new Account("denied");
|
|
auth.IsAuthorized(allowed).ShouldBeTrue();
|
|
auth.IsAuthorized(denied).ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void ExportAuth_revoked_account_denied()
|
|
{
|
|
var auth = new ExportAuth
|
|
{
|
|
ApprovedAccounts = ["test"],
|
|
RevokedAccounts = new() { ["test"] = DateTimeOffset.UtcNow.ToUnixTimeSeconds() },
|
|
};
|
|
var account = new Account("test");
|
|
auth.IsAuthorized(account).ShouldBeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void ServiceResponseType_defaults_to_singleton()
|
|
{
|
|
var import = new ServiceImport
|
|
{
|
|
DestinationAccount = new Account("dest"),
|
|
From = "requests.>",
|
|
To = "api.>",
|
|
};
|
|
import.ResponseType.ShouldBe(ServiceResponseType.Singleton);
|
|
}
|
|
|
|
[Fact]
|
|
public void ExportMap_stores_and_retrieves_exports()
|
|
{
|
|
var map = new ExportMap();
|
|
map.Services["api.>"] = new ServiceExport { Account = new Account("svc") };
|
|
map.Streams["events.>"] = new StreamExport();
|
|
|
|
map.Services.ShouldContainKey("api.>");
|
|
map.Streams.ShouldContainKey("events.>");
|
|
}
|
|
|
|
[Fact]
|
|
public void ImportMap_stores_service_imports()
|
|
{
|
|
var map = new ImportMap();
|
|
var si = new ServiceImport
|
|
{
|
|
DestinationAccount = new Account("dest"),
|
|
From = "requests.>",
|
|
To = "api.>",
|
|
};
|
|
map.AddServiceImport(si);
|
|
map.Services.ShouldContainKey("requests.>");
|
|
map.Services["requests.>"].Count.ShouldBe(1);
|
|
}
|
|
}
|