Refactor code structure for improved readability and maintainability; optimize performance in key functions.
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using StellaOps.Graph.Api.Contracts;
|
||||
using StellaOps.Graph.Api.Services;
|
||||
using Xunit;
|
||||
|
||||
namespace StellaOps.Graph.Api.Tests;
|
||||
|
||||
public sealed class LineageServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task GetLineageAsync_ReturnsSbomAndArtifactChain()
|
||||
{
|
||||
var repository = new InMemoryGraphRepository();
|
||||
var service = new InMemoryGraphLineageService(repository);
|
||||
|
||||
var request = new GraphLineageRequest
|
||||
{
|
||||
SbomDigest = "sha256:sbom-b",
|
||||
MaxDepth = 3
|
||||
};
|
||||
|
||||
var response = await service.GetLineageAsync("acme", request, CancellationToken.None);
|
||||
|
||||
Assert.Contains(response.Nodes, node => node.Id == "gn:acme:sbom:sha256:sbom-b");
|
||||
Assert.Contains(response.Nodes, node => node.Id == "gn:acme:sbom:sha256:sbom-a");
|
||||
Assert.Contains(response.Nodes, node => node.Id == "gn:acme:artifact:sha256:abc");
|
||||
Assert.Contains(response.Edges, edge => edge.Kind == "SBOM_LINEAGE_PARENT");
|
||||
Assert.Contains(response.Edges, edge => edge.Kind == "SBOM_VERSION_OF");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user