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

58 lines
1.6 KiB
C#

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);
}
}