Files
natsdotnet/tests/NATS.Server.Core.Tests/Configuration/ConfigPedanticParityBatch1Tests.cs
Joseph Doherty 7fbffffd05 refactor: rename remaining tests to NATS.Server.Core.Tests
- 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
2026-03-12 16:14:02 -04:00

84 lines
2.8 KiB
C#

using System.Reflection;
using NATS.Server.Configuration;
namespace NATS.Server.Core.Tests.Configuration;
public class ConfigPedanticParityBatch1Tests
{
[Fact]
public void ParseWithChecks_matches_parse_for_basic_input()
{
const string config = "port: 4222\nhost: 127.0.0.1\n";
var regular = NatsConfParser.Parse(config);
var withChecks = NatsConfParser.ParseWithChecks(config);
withChecks["port"].ShouldBe(regular["port"]);
withChecks["host"].ShouldBe(regular["host"]);
}
[Fact]
public void ParseFileWithChecks_and_digest_wrappers_are_available_and_stable()
{
var path = Path.GetTempFileName();
try
{
File.WriteAllText(path, "port: 4222\n");
var parsed = NatsConfParser.ParseFileWithChecks(path);
parsed["port"].ShouldBe(4222L);
var (cfg1, d1) = NatsConfParser.ParseFileWithChecksDigest(path);
var (cfg2, d2) = NatsConfParser.ParseFileWithDigest(path);
var (_, d1Repeat) = NatsConfParser.ParseFileWithChecksDigest(path);
cfg1["port"].ShouldBe(4222L);
cfg2["port"].ShouldBe(4222L);
d1.ShouldStartWith("sha256:");
d2.ShouldStartWith("sha256:");
d1.ShouldBe(d1Repeat);
d1.ShouldNotBe(d2);
}
finally
{
File.Delete(path);
}
}
[Fact]
public void PedanticToken_accessors_match_expected_values()
{
var token = new Token(TokenType.Integer, "42", 3, 7);
var pedantic = new PedanticToken(token, value: 42L, usedVariable: true, sourceFile: "test.conf");
pedantic.Value().ShouldBe(42L);
pedantic.Line().ShouldBe(3);
pedantic.Position().ShouldBe(7);
pedantic.IsUsedVariable().ShouldBeTrue();
pedantic.SourceFile().ShouldBe("test.conf");
pedantic.MarshalJson().ShouldBe("42");
}
[Fact]
public void Parser_exposes_pedantic_compatibility_hooks()
{
var parserType = typeof(NatsConfParser);
parserType.GetMethod("CleanupUsedEnvVars", BindingFlags.NonPublic | BindingFlags.Static).ShouldNotBeNull();
var parserStateType = parserType.GetNestedType("ParserState", BindingFlags.NonPublic);
parserStateType.ShouldNotBeNull();
parserStateType!.GetMethod("PushItemKey", BindingFlags.NonPublic | BindingFlags.Instance).ShouldNotBeNull();
parserStateType.GetMethod("PopItemKey", BindingFlags.NonPublic | BindingFlags.Instance).ShouldNotBeNull();
}
[Fact]
public void Bcrypt_prefix_values_are_preserved_for_2a_and_2b()
{
var parsed2a = NatsConfParser.Parse("pwd: $2a$abc\n");
var parsed2b = NatsConfParser.Parse("pwd: $2b$abc\n");
parsed2a["pwd"].ShouldBe("$2a$abc");
parsed2b["pwd"].ShouldBe("$2b$abc");
}
}