using StellaOps.TestKit; using Xunit; namespace StellaOps.Canonical.Json.Tests; public partial class CanonVersionTests { [Trait("Category", TestCategories.Unit)] [Fact] public void HashVersioned_DiffersFromLegacyHash() { var obj = new { foo = "bar", count = 42 }; var legacyHash = CanonJson.Hash(obj); var versionedHash = CanonJson.HashVersioned(obj); Assert.NotEqual(legacyHash, versionedHash); } [Trait("Category", TestCategories.Unit)] [Fact] public void HashVersionedPrefixed_DiffersFromLegacyHashPrefixed() { var obj = new { foo = "bar", count = 42 }; var legacyHash = CanonJson.HashPrefixed(obj); var versionedHash = CanonJson.HashVersionedPrefixed(obj); Assert.NotEqual(legacyHash, versionedHash); Assert.StartsWith("sha256:", versionedHash); Assert.StartsWith("sha256:", legacyHash); } [Trait("Category", TestCategories.Unit)] [Fact] public void HashVersioned_SameInput_ProducesSameHash() { var obj = new { foo = "bar", count = 42 }; var hash1 = CanonJson.HashVersioned(obj); var hash2 = CanonJson.HashVersioned(obj); Assert.Equal(hash1, hash2); } [Trait("Category", TestCategories.Unit)] [Fact] public void HashVersioned_DifferentVersions_ProduceDifferentHashes() { var obj = new { foo = "bar" }; var hashV1 = CanonJson.HashVersioned(obj, "stella:canon:v1"); var hashV2 = CanonJson.HashVersioned(obj, "stella:canon:v2"); Assert.NotEqual(hashV1, hashV2); } }