Files
git.stella-ops.org/src/__Libraries/__Tests/StellaOps.TestKit.Tests/DeterminismManifestTests.Metadata.cs

85 lines
2.8 KiB
C#

using FluentAssertions;
using StellaOps.TestKit;
using StellaOps.Testing.Determinism;
using Xunit;
namespace StellaOps.TestKit.Tests;
public sealed partial class DeterminismManifestTests
{
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CreateManifest_WithReproducibilityMetadata_IncludesMetadata()
{
var artifactBytes = "Test artifact"u8.ToArray();
var artifactInfo = new ArtifactInfo
{
Type = "sbom",
Name = "test",
Version = "1.0.0"
};
var toolchain = new ToolchainInfo
{
Platform = ".NET 10.0",
Components = new[] { new ComponentInfo { Name = "Scanner", Version = "1.0.0" } }
};
var reproducibility = new ReproducibilityMetadata
{
DeterministicSeed = 42,
ClockFixed = true,
OrderingGuarantee = "sorted",
NormalizationRules = new[] { "UTF-8", "LF line endings", "sorted JSON keys" }
};
var manifest = DeterminismManifestWriter.CreateManifest(
artifactBytes,
artifactInfo,
toolchain,
reproducibility: reproducibility);
manifest.Reproducibility.Should().NotBeNull();
manifest.Reproducibility!.DeterministicSeed.Should().Be(42);
manifest.Reproducibility.ClockFixed.Should().BeTrue();
manifest.Reproducibility.OrderingGuarantee.Should().Be("sorted");
manifest.Reproducibility.NormalizationRules.Should().ContainInOrder(
"UTF-8",
"LF line endings",
"sorted JSON keys");
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CreateManifest_WithVerificationInfo_IncludesVerification()
{
var artifactBytes = "Test artifact"u8.ToArray();
var artifactInfo = new ArtifactInfo
{
Type = "sbom",
Name = "test",
Version = "1.0.0"
};
var toolchain = new ToolchainInfo
{
Platform = ".NET 10.0",
Components = new[] { new ComponentInfo { Name = "Scanner", Version = "1.0.0" } }
};
var verification = new VerificationInfo
{
Command = "dotnet test --verify-determinism",
ExpectedHash = "abc123def456",
Baseline = "baselines/test-bundle.json"
};
var manifest = DeterminismManifestWriter.CreateManifest(
artifactBytes,
artifactInfo,
toolchain,
verification: verification);
manifest.Verification.Should().NotBeNull();
manifest.Verification!.Command.Should().Be("dotnet test --verify-determinism");
manifest.Verification.ExpectedHash.Should().Be("abc123def456");
manifest.Verification.Baseline.Should().Be("baselines/test-bundle.json");
}
}