Files
git.stella-ops.org/src/Graph/__Tests/StellaOps.Graph.Indexer.Tests/SbomLineageTransformerTests.cs

46 lines
1.3 KiB
C#

using System;
using System.Linq;
using System.Text.Json.Nodes;
using StellaOps.Graph.Indexer.Ingestion.Sbom;
using Xunit;
namespace StellaOps.Graph.Indexer.Tests;
public sealed class SbomLineageTransformerTests
{
[Fact]
public void Transform_adds_lineage_edges_when_present()
{
var snapshot = new SbomSnapshot
{
Tenant = "tenant-a",
ArtifactDigest = "sha256:artifact",
SbomDigest = "sha256:sbom",
SbomFormat = "cyclonedx",
SbomFormatVersion = "1.6",
Lineage = new[]
{
new SbomLineageReference
{
Relationship = "parent",
SbomDigest = "sha256:parent",
ArtifactDigest = "sha256:parent-artifact",
CollectedAt = DateTimeOffset.Parse("2025-12-01T00:00:00Z")
}
}
};
var transformer = new SbomIngestTransformer();
var batch = transformer.Transform(snapshot);
Assert.Contains(batch.Nodes, n => n["kind"]!.GetValue<string>() == "sbom");
var edgeKinds = batch.Edges
.Select(e => e["kind"]!.GetValue<string>())
.ToArray();
Assert.Contains("SBOM_VERSION_OF", edgeKinds);
Assert.Contains("SBOM_LINEAGE_PARENT", edgeKinds);
}
}