46 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|