Files
git.stella-ops.org/tests/unit/StellaOps.AuditPack.Tests/AuditPackBuilderTests.cs

78 lines
2.4 KiB
C#

namespace StellaOps.AuditPack.Tests;
using StellaOps.AuditPack.Models;
using StellaOps.AuditPack.Services;
[Trait("Category", "Unit")]
public class AuditPackBuilderTests
{
[Fact]
public async Task Build_FromScanResult_CreatesCompletePack()
{
// Arrange
var scanResult = new ScanResult("scan-123");
var builder = new AuditPackBuilder();
var options = new AuditPackOptions { Name = "test-pack" };
// Act
var pack = await builder.BuildAsync(scanResult, options);
// Assert
pack.Should().NotBeNull();
pack.PackId.Should().NotBeNullOrEmpty();
pack.Name.Should().Be("test-pack");
pack.RunManifest.Should().NotBeNull();
pack.Verdict.Should().NotBeNull();
pack.EvidenceIndex.Should().NotBeNull();
pack.PackDigest.Should().NotBeNullOrEmpty();
}
[Fact]
public async Task Export_CreatesValidArchive()
{
// Arrange
var scanResult = new ScanResult("scan-123");
var builder = new AuditPackBuilder();
var pack = await builder.BuildAsync(scanResult, new AuditPackOptions());
var outputPath = Path.Combine(Path.GetTempPath(), $"test-pack-{Guid.NewGuid():N}.tar.gz");
var exportOptions = new ExportOptions { Sign = false };
try
{
// Act
await builder.ExportAsync(pack, outputPath, exportOptions);
// Assert
File.Exists(outputPath).Should().BeTrue();
var fileInfo = new FileInfo(outputPath);
fileInfo.Length.Should().BeGreaterThan(0);
}
finally
{
if (File.Exists(outputPath))
File.Delete(outputPath);
}
}
[Fact]
public void PackDigest_IsComputedCorrectly()
{
// Arrange
var pack = new AuditPack
{
PackId = "test-pack",
Name = "Test Pack",
CreatedAt = new DateTimeOffset(2025, 1, 1, 0, 0, 0, TimeSpan.Zero),
RunManifest = new RunManifest("scan-1", DateTimeOffset.UtcNow),
EvidenceIndex = new EvidenceIndex([]),
Verdict = new Verdict("verdict-1", "pass"),
OfflineBundle = new BundleManifest("bundle-1", "1.0"),
Contents = new PackContents()
};
// Act - digest should be set during build
pack.PackDigest.Should().NotBeNull();
}
}