Files
git.stella-ops.org/src/__Libraries/__Tests/StellaOps.Testing.Determinism.Tests/DeterminismSummaryTests.Writer.cs

61 lines
2.0 KiB
C#

using System.IO;
using FluentAssertions;
using StellaOps.TestKit;
using StellaOps.Testing.Determinism;
using Xunit;
namespace StellaOps.Testing.Determinism.Tests;
public sealed partial class DeterminismSummaryTests
{
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task WriteToFileAsync_CreatesValidJsonFileAsync()
{
var summary = new DeterminismSummaryBuilder()
.WithSourceRef("test-sha")
.AddResult(CreateMatchResult("sbom", "test-artifact"))
.Build();
var filePath = Path.Combine(_testDirectory, "determinism.json");
await DeterminismSummaryWriter.WriteToFileAsync(summary, filePath);
File.Exists(filePath).Should().BeTrue();
var content = await File.ReadAllTextAsync(filePath);
content.Should().Contain("\"schemaVersion\": \"1.0\"");
content.Should().Contain("\"sourceRef\": \"test-sha\"");
content.Should().Contain("\"status\": \"pass\"");
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task WriteToFileAsync_CreatesDirectoryIfNeededAsync()
{
var summary = new DeterminismSummaryBuilder().Build();
var filePath = Path.Combine(_testDirectory, "nested", "dir", "determinism.json");
await DeterminismSummaryWriter.WriteToFileAsync(summary, filePath);
File.Exists(filePath).Should().BeTrue();
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public void ToJson_ReturnsValidJson()
{
var summary = new DeterminismSummaryBuilder()
.AddResult(CreateMatchResult("sbom", "artifact"))
.AddResult(CreateDriftResult("vex", "document"))
.Build();
var json = DeterminismSummaryWriter.ToJson(summary);
json.Should().Contain("\"schemaVersion\": \"1.0\"");
json.Should().Contain("\"status\": \"fail\"");
json.Should().Contain("\"total\": 2");
json.Should().Contain("\"matched\": 1");
json.Should().Contain("\"drifted\": 1");
}
}