Files
git.stella-ops.org/src/__Libraries/StellaOps.Canonical.Json.Tests/CanonVersionTests.CanonicalizeVersioned.Basic.cs

45 lines
1.4 KiB
C#

using System.Text;
using StellaOps.TestKit;
using Xunit;
namespace StellaOps.Canonical.Json.Tests;
public partial class CanonVersionTests
{
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CanonicalizeVersioned_IncludesVersionMarker()
{
var obj = new { foo = "bar" };
var canonical = CanonJson.CanonicalizeVersioned(obj);
var json = Encoding.UTF8.GetString(canonical);
Assert.StartsWith("{\"_canonVersion\":\"stella:canon:v1\"", json);
Assert.Contains("\"foo\":\"bar\"", json);
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CanonicalizeVersioned_VersionMarkerIsFirst()
{
var obj = new { aaa = 1, zzz = 2 };
var canonical = CanonJson.CanonicalizeVersioned(obj);
var json = Encoding.UTF8.GetString(canonical);
var versionIndex = json.IndexOf("_canonVersion", StringComparison.Ordinal);
var aaaIndex = json.IndexOf("aaa", StringComparison.Ordinal);
Assert.True(versionIndex < aaaIndex);
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CanonicalizeVersioned_SortsOtherKeys()
{
var obj = new { z = 3, a = 1, m = 2 };
var canonical = CanonJson.CanonicalizeVersioned(obj);
var json = Encoding.UTF8.GetString(canonical);
Assert.Matches(@"\{""_canonVersion"":""[^""]+"",""a"":1,""m"":2,""z"":3\}", json);
}
}