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

80 lines
2.3 KiB
C#

namespace StellaOps.AuditPack.Tests;
using StellaOps.AuditPack.Services;
[Trait("Category", "Unit")]
public class AuditPackImporterTests
{
[Fact]
public async Task Import_ValidPack_Succeeds()
{
// Arrange
var archivePath = await CreateTestArchiveAsync();
var importer = new AuditPackImporter();
var options = new ImportOptions { VerifySignatures = false };
try
{
// Act
var result = await importer.ImportAsync(archivePath, options);
// Assert
result.Success.Should().BeTrue();
result.Pack.Should().NotBeNull();
result.IntegrityResult?.IsValid.Should().BeTrue();
}
finally
{
if (File.Exists(archivePath))
File.Delete(archivePath);
}
}
[Fact]
public async Task Import_MissingManifest_Fails()
{
// Arrange
var archivePath = Path.Combine(Path.GetTempPath(), "invalid.tar.gz");
await CreateEmptyArchiveAsync(archivePath);
var importer = new AuditPackImporter();
try
{
// Act
var result = await importer.ImportAsync(archivePath, new ImportOptions());
// Assert
result.Success.Should().BeFalse();
result.Errors.Should().Contain(e => e.Contains("Manifest"));
}
finally
{
if (File.Exists(archivePath))
File.Delete(archivePath);
}
}
private static async Task<string> CreateTestArchiveAsync()
{
// Create a test pack and export it
var builder = new AuditPackBuilder();
var pack = await builder.BuildAsync(
new ScanResult("test-scan"),
new AuditPackOptions());
var archivePath = Path.Combine(Path.GetTempPath(), $"test-{Guid.NewGuid():N}.tar.gz");
await builder.ExportAsync(pack, archivePath, new ExportOptions { Sign = false });
return archivePath;
}
private static async Task CreateEmptyArchiveAsync(string path)
{
// Create an empty tar.gz
using var fs = File.Create(path);
using var gz = new System.IO.Compression.GZipStream(fs, System.IO.Compression.CompressionLevel.Fastest);
await gz.WriteAsync(new byte[] { 0 });
}
}