refactor: extract NATS.Server.Monitoring.Tests project
Move 39 monitoring, events, and system endpoint test files from NATS.Server.Tests into a dedicated NATS.Server.Monitoring.Tests project. Update namespaces, replace private GetFreePort/ReadUntilAsync with TestUtilities shared helpers, add InternalsVisibleTo, and register in the solution file. All 439 tests pass.
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
using System.Text.Json;
|
||||
using System.Text;
|
||||
|
||||
namespace NATS.Server.Monitoring.Tests;
|
||||
|
||||
public class ConnzParityFieldTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Connz_includes_identity_tls_and_proxy_parity_fields()
|
||||
{
|
||||
await using var fx = await MonitoringParityFixture.StartAsync();
|
||||
var jwt = BuildJwt("UISSUER", ["team:core", "tier:gold"]);
|
||||
await fx.ConnectClientAsync("proxy:edge", "orders.created", jwt);
|
||||
|
||||
var connz = fx.GetConnz("?subs=detail&auth=true");
|
||||
connz.Conns.ShouldNotBeEmpty();
|
||||
var conn = connz.Conns.Single(c => c.AuthorizedUser == "proxy:edge");
|
||||
conn.Proxy.ShouldNotBeNull();
|
||||
conn.Proxy.Key.ShouldBe("edge");
|
||||
conn.Jwt.ShouldBe(jwt);
|
||||
conn.IssuerKey.ShouldBe("UISSUER");
|
||||
conn.Tags.ShouldContain("team:core");
|
||||
|
||||
var json = JsonSerializer.Serialize(connz);
|
||||
json.ShouldContain("tls_peer_cert_subject");
|
||||
json.ShouldContain("tls_peer_certs");
|
||||
json.ShouldContain("issuer_key");
|
||||
json.ShouldContain("\"tags\"");
|
||||
json.ShouldContain("proxy");
|
||||
json.ShouldNotContain("jwt_issuer_key");
|
||||
}
|
||||
|
||||
private static string BuildJwt(string issuer, string[] tags)
|
||||
{
|
||||
static string B64Url(string json)
|
||||
{
|
||||
return Convert.ToBase64String(Encoding.UTF8.GetBytes(json))
|
||||
.TrimEnd('=')
|
||||
.Replace('+', '-')
|
||||
.Replace('/', '_');
|
||||
}
|
||||
|
||||
var header = B64Url("{\"alg\":\"none\",\"typ\":\"JWT\"}");
|
||||
var payload = B64Url(JsonSerializer.Serialize(new
|
||||
{
|
||||
iss = issuer,
|
||||
nats = new
|
||||
{
|
||||
tags,
|
||||
},
|
||||
}));
|
||||
return $"{header}.{payload}.eA";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user