58 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|