up
Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Export Center CI / export-ci (push) Has been cancelled
devportal-offline / build-offline (push) Has been cancelled

This commit is contained in:
StellaOps Bot
2025-12-03 00:10:19 +02:00
parent ea1d58a89b
commit 37cba83708
158 changed files with 147438 additions and 867 deletions

View File

@@ -10,14 +10,15 @@ public sealed class RiskBundleBuilderTests
{
using var temp = new TempDir();
var kev = temp.WriteFile("kev.json", "{\"cve\":\"CVE-0001\"}");
var kevSig = temp.WriteFile("kev.sig", "sig");
var epss = temp.WriteFile("epss.csv", "cve,score\nCVE-0001,0.12\n");
var request = new RiskBundleBuildRequest(
BundleId: Guid.Parse("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"),
Providers: new[]
{
new RiskBundleProviderInput("cisa-kev", kev, "CISA KEV"),
new RiskBundleProviderInput("first-epss", epss, "FIRST EPSS")
new RiskBundleProviderInput("cisa-kev", kev, "CISA KEV", SignaturePath: kevSig),
new RiskBundleProviderInput("first-epss", epss, "FIRST EPSS", Optional: true)
});
var builder = new RiskBundleBuilder();
@@ -26,6 +27,8 @@ public sealed class RiskBundleBuilderTests
Assert.Equal(2, result.Manifest.Providers.Count);
Assert.Equal(new[] { "cisa-kev", "first-epss" }, result.Manifest.Providers.Select(p => p.ProviderId));
Assert.NotNull(result.Manifest.Providers[0].SignatureSha256);
Assert.Equal("providers/cisa-kev/snapshot", result.Manifest.Providers[0].BundlePath);
// Manifest hash stable
var second = builder.Build(request, cancellation);
@@ -44,6 +47,22 @@ public sealed class RiskBundleBuilderTests
Assert.Contains("manifests/provider-manifest.json", entries);
Assert.Contains("providers/cisa-kev/snapshot", entries);
Assert.Contains("providers/first-epss/snapshot", entries);
Assert.Contains("providers/cisa-kev/signature", entries);
}
[Fact]
public void Build_WhenMandatoryProviderMissing_Throws()
{
using var temp = new TempDir();
var epss = temp.WriteFile("epss.csv", "cve,score\n");
var request = new RiskBundleBuildRequest(
Guid.NewGuid(),
Providers: new[] { new RiskBundleProviderInput("first-epss", epss, "FIRST EPSS", Optional: true) });
var builder = new RiskBundleBuilder();
Assert.Throws<InvalidOperationException>(() => builder.Build(request, TestContext.Current.CancellationToken));
}
private sealed class TempDir : IDisposable