61 lines
2.0 KiB
C#
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");
|
|
}
|
|
}
|