- Rename tests/NATS.Server.Tests -> tests/NATS.Server.Core.Tests - Update solution file, InternalsVisibleTo, and csproj references - Remove JETSTREAM_INTEGRATION_MATRIX and NATS.NKeys from csproj (moved to JetStream.Tests and Auth.Tests) - Update all namespaces from NATS.Server.Tests.* to NATS.Server.Core.Tests.* - Replace private GetFreePort/ReadUntilAsync helpers with TestUtilities calls - Fix stale namespace in Transport.Tests/NetworkingGoParityTests.cs
107 lines
3.1 KiB
C#
107 lines
3.1 KiB
C#
using NATS.Server.Server;
|
|
|
|
namespace NATS.Server.Core.Tests.Server;
|
|
|
|
public class CoreServerOptionsParityBatch3Tests
|
|
{
|
|
[Fact]
|
|
public void Core_ports_and_compression_types_exist_with_expected_defaults()
|
|
{
|
|
var ports = new Ports
|
|
{
|
|
Nats = ["nats://127.0.0.1:4222"],
|
|
Monitoring = ["http://127.0.0.1:8222"],
|
|
};
|
|
|
|
ports.Nats.ShouldHaveSingleItem();
|
|
ports.Monitoring.ShouldHaveSingleItem();
|
|
|
|
CompressionModes.Off.ShouldBe("off");
|
|
CompressionModes.S2Auto.ShouldBe("s2_auto");
|
|
|
|
var opts = new CompressionOpts();
|
|
opts.Mode.ShouldBe(CompressionModes.Off);
|
|
opts.RTTThresholds.ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact]
|
|
public void RoutesFromStr_parses_comma_delimited_routes()
|
|
{
|
|
var routes = NatsOptions.RoutesFromStr(" nats://a:6222, tls://b:7222 ");
|
|
|
|
routes.Count.ShouldBe(2);
|
|
routes[0].ToString().ShouldBe("nats://a:6222/");
|
|
routes[1].ToString().ShouldBe("tls://b:7222/");
|
|
}
|
|
|
|
[Fact]
|
|
public void Clone_returns_deep_copy_for_common_collections()
|
|
{
|
|
var original = new NatsOptions
|
|
{
|
|
Host = "127.0.0.1",
|
|
Port = 4222,
|
|
Tags = new Dictionary<string, string> { ["a"] = "1" },
|
|
SubjectMappings = new Dictionary<string, string> { ["foo.*"] = "bar.$1" },
|
|
TlsPinnedCerts = ["abc"],
|
|
};
|
|
original.InCmdLine.Add("host");
|
|
|
|
var clone = original.Clone();
|
|
|
|
clone.ShouldNotBeSameAs(original);
|
|
clone.Tags.ShouldNotBeSameAs(original.Tags);
|
|
clone.SubjectMappings.ShouldNotBeSameAs(original.SubjectMappings);
|
|
clone.TlsPinnedCerts.ShouldNotBeSameAs(original.TlsPinnedCerts);
|
|
clone.InCmdLine.ShouldNotBeSameAs(original.InCmdLine);
|
|
clone.InCmdLine.ShouldContain("host");
|
|
}
|
|
|
|
[Fact]
|
|
public void ProcessConfigString_sets_config_digest_and_applies_values()
|
|
{
|
|
var opts = new NatsOptions();
|
|
opts.ProcessConfigString("port: 4333");
|
|
|
|
opts.Port.ShouldBe(4333);
|
|
opts.ConfigDigest().ShouldNotBeNullOrWhiteSpace();
|
|
}
|
|
|
|
[Fact]
|
|
public void NoErrOnUnknownFields_toggle_is_available()
|
|
{
|
|
NatsOptions.NoErrOnUnknownFields(true);
|
|
var ex = Record.Exception(() => new NatsOptions().ProcessConfigString("totally_unknown_field: 1"));
|
|
ex.ShouldBeNull();
|
|
NatsOptions.NoErrOnUnknownFields(false);
|
|
}
|
|
|
|
[Fact]
|
|
public void Option_parity_types_exist()
|
|
{
|
|
var jsLimits = new JSLimitOpts
|
|
{
|
|
MaxRequestBatch = 10,
|
|
MaxAckPending = 20,
|
|
};
|
|
jsLimits.MaxRequestBatch.ShouldBe(10);
|
|
jsLimits.MaxAckPending.ShouldBe(20);
|
|
|
|
var callout = new AuthCallout
|
|
{
|
|
Issuer = "issuer",
|
|
Account = "A",
|
|
AllowedAccounts = ["A", "B"],
|
|
};
|
|
callout.Issuer.ShouldBe("issuer");
|
|
callout.AllowedAccounts.ShouldContain("B");
|
|
|
|
var proxies = new ProxiesConfig
|
|
{
|
|
Trusted = [new ProxyConfig { Key = "k1" }],
|
|
};
|
|
proxies.Trusted.Count.ShouldBe(1);
|
|
proxies.Trusted[0].Key.ShouldBe("k1");
|
|
}
|
|
}
|