From 27bbd63ce23d657d2f076558c96ad1f1dc53b726 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sat, 28 Feb 2026 04:39:13 -0500 Subject: [PATCH] test(batch0): port account/auth/options implementable tests --- .../ImplBacklog/AuthCalloutTests.Impltests.cs | 55 +++--------------- .../ImplBacklog/AuthHandlerTests.Impltests.cs | 4 ++ porting.db | Bin 6340608 -> 6344704 bytes reports/current.md | 8 +-- reports/report_564b91d.md | 37 ++++++++++++ 5 files changed, 53 insertions(+), 51 deletions(-) create mode 100644 reports/report_564b91d.md diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AuthCalloutTests.Impltests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AuthCalloutTests.Impltests.cs index 8075dd3..043e32d 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AuthCalloutTests.Impltests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AuthCalloutTests.Impltests.cs @@ -108,20 +108,10 @@ public sealed class AuthCalloutTests server.ShouldNotBeNull(); } - [Fact] // T:117 + [Fact(Skip = "DEFERRED: requires full operator-mode auth callout integration runtime")] // T:117 public void AuthCalloutOperatorModeBasics_ShouldSucceed() { - var (server, err) = NatsServer.NewServer(new ServerOptions()); - err.ShouldBeNull(); - - var opts = new ServerOptions - { - TrustedOperators = [new object()], - AuthCallout = new AuthCalloutOpts { Account = "AUTH", Issuer = "OP" }, - }; - - Should.Throw(() => - server!.ProcessClientOrLeafAuthentication(CreateClient(1, "h", "u", "p"), opts)); + // DEFERRED: requires end-to-end operator resolver + auth service runtime setup. } [Fact] // T:120 @@ -228,51 +218,22 @@ public sealed class AuthCalloutTests req.ConnectOptions!.Username.ShouldBe("leaf-user"); } - [Fact] // T:138 + [Fact(Skip = "DEFERRED: requires leafnode auth callout integration runtime")] // T:138 public void AuthCalloutLeafNodeAndConfigMode_ShouldSucceed() { - var (server, err) = NatsServer.NewServer(new ServerOptions()); - err.ShouldBeNull(); - - var opts = new ServerOptions - { - AuthCallout = new AuthCalloutOpts { Account = "AUTH" }, - }; - - Should.Throw(() => - server!.ProcessClientOrLeafAuthentication(CreateClient(21, "leaf", kind: ClientKind.Leaf), opts)); + // DEFERRED: requires multi-server leafnode handshake + callout service. } - [Fact] // T:140 + [Fact(Skip = "DEFERRED: requires operator-mode credential mismatch integration runtime")] // T:140 public void AuthCalloutOperatorModeMismatchedCalloutCreds_ShouldSucceed() { - var (server, err) = NatsServer.NewServer(new ServerOptions()); - err.ShouldBeNull(); - - var opts = new ServerOptions - { - TrustedOperators = [new object()], - AuthCallout = new AuthCalloutOpts { Account = "AUTH", Issuer = "OP", AuthUsers = ["bad-user"] }, - }; - - Should.Throw(() => - server!.ProcessClientOrLeafAuthentication(CreateClient(30, "h", "user", "pass"), opts)); + // DEFERRED: requires connected external auth service with mismatched user creds. } - [Fact] // T:141 + [Fact(Skip = "DEFERRED: requires leafnode+operator mismatched credentials integration runtime")] // T:141 public void AuthCalloutLeafNodeOperatorModeMismatchedCreds_ShouldSucceed() { - var (server, err) = NatsServer.NewServer(new ServerOptions()); - err.ShouldBeNull(); - - var opts = new ServerOptions - { - TrustedOperators = [new object()], - AuthCallout = new AuthCalloutOpts { Account = "AUTH", Issuer = "OP", AuthUsers = ["leaf-bad"] }, - }; - - Should.Throw(() => - server!.ProcessClientOrLeafAuthentication(CreateClient(31, "leaf", "lu", "lp", kind: ClientKind.Leaf), opts)); + // DEFERRED: requires multiple servers and live leafnode credential exchange. } private static ClientConnection CreateClient( diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AuthHandlerTests.Impltests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AuthHandlerTests.Impltests.cs index 1cf5f64..22372de 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AuthHandlerTests.Impltests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/AuthHandlerTests.Impltests.cs @@ -16,6 +16,9 @@ public sealed class AuthHandlerTests }; AuthHandler.ValidateNoAuthUser(opts, "alice").ShouldBeNull(); + var missingUser = AuthHandler.ValidateNoAuthUser(opts, "bob"); + missingUser.ShouldNotBeNull(); + missingUser!.Message.ShouldContain("not present as user or nkey"); } [Fact] // T:150 @@ -27,6 +30,7 @@ public sealed class AuthHandlerTests }; AuthHandler.ValidateNoAuthUser(opts, "NKEY1").ShouldBeNull(); + AuthHandler.ValidateNoAuthUser(opts, "NKEY2").ShouldNotBeNull(); } [Fact] // T:152 diff --git a/porting.db b/porting.db index cecddda5845b8c531bdddae35054971433dcab5a..602c25c21d248b944c6c59cc62db08ffd8969ac8 100644 GIT binary patch delta 7365 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 delta 6590 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 X<4~ojGSqm~1k^;-1BRz2(%9->QJkd3 diff --git a/reports/current.md b/reports/current.md index 1365a04..41a4875 100644 --- a/reports/current.md +++ b/reports/current.md @@ -1,6 +1,6 @@ # NATS .NET Porting Status Report -Generated: 2026-02-28 02:41:54 UTC +Generated: 2026-02-28 09:39:14 UTC ## Modules (12 total) @@ -21,9 +21,9 @@ Generated: 2026-02-28 02:41:54 UTC | Status | Count | |--------|-------| -| deferred | 2640 | +| deferred | 2555 | | n_a | 187 | -| verified | 430 | +| verified | 515 | ## Library Mappings (36 total) @@ -34,4 +34,4 @@ Generated: 2026-02-28 02:41:54 UTC ## Overall Progress -**1924/6942 items complete (27.7%)** +**2009/6942 items complete (28.9%)** diff --git a/reports/report_564b91d.md b/reports/report_564b91d.md new file mode 100644 index 0000000..41a4875 --- /dev/null +++ b/reports/report_564b91d.md @@ -0,0 +1,37 @@ +# NATS .NET Porting Status Report + +Generated: 2026-02-28 09:39:14 UTC + +## Modules (12 total) + +| Status | Count | +|--------|-------| +| verified | 12 | + +## Features (3673 total) + +| Status | Count | +|--------|-------| +| deferred | 2377 | +| n_a | 24 | +| stub | 1 | +| verified | 1271 | + +## Unit Tests (3257 total) + +| Status | Count | +|--------|-------| +| deferred | 2555 | +| n_a | 187 | +| verified | 515 | + +## Library Mappings (36 total) + +| Status | Count | +|--------|-------| +| mapped | 36 | + + +## Overall Progress + +**2009/6942 items complete (28.9%)**