78 lines
2.4 KiB
C#
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();
|
|
}
|
|
}
|