Add unit tests for SBOM ingestion and transformation
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
- Implement `SbomIngestServiceCollectionExtensionsTests` to verify the SBOM ingestion pipeline exports snapshots correctly. - Create `SbomIngestTransformerTests` to ensure the transformation produces expected nodes and edges, including deduplication of license nodes and normalization of timestamps. - Add `SbomSnapshotExporterTests` to test the export functionality for manifest, adjacency, nodes, and edges. - Introduce `VexOverlayTransformerTests` to validate the transformation of VEX nodes and edges. - Set up project file for the test project with necessary dependencies and configurations. - Include JSON fixture files for testing purposes.
This commit is contained in:
@@ -354,7 +354,7 @@ internal static class CommandHandlers
|
||||
throw new InvalidOperationException("Tenant must be provided via --tenant or STELLA_TENANT.");
|
||||
}
|
||||
|
||||
var payload = await LoadIngestInputAsync(input, cancellationToken).ConfigureAwait(false);
|
||||
var payload = await LoadIngestInputAsync(services, input, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
logger.LogInformation("Executing ingestion dry-run for source {Source} using input {Input}.", source, payload.Name);
|
||||
|
||||
@@ -5009,22 +5009,22 @@ internal static class CommandHandlers
|
||||
return string.IsNullOrWhiteSpace(fromEnvironment) ? string.Empty : fromEnvironment.Trim();
|
||||
}
|
||||
|
||||
private static async Task<IngestInputPayload> LoadIngestInputAsync(string input, CancellationToken cancellationToken)
|
||||
private static async Task<IngestInputPayload> LoadIngestInputAsync(IServiceProvider services, string input, CancellationToken cancellationToken)
|
||||
{
|
||||
if (Uri.TryCreate(input, UriKind.Absolute, out var uri) &&
|
||||
(uri.Scheme.Equals(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) ||
|
||||
uri.Scheme.Equals(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
return await LoadIngestInputFromHttpAsync(uri, cancellationToken).ConfigureAwait(false);
|
||||
return await LoadIngestInputFromHttpAsync(services, uri, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
return await LoadIngestInputFromFileAsync(input, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private static async Task<IngestInputPayload> LoadIngestInputFromHttpAsync(Uri uri, CancellationToken cancellationToken)
|
||||
private static async Task<IngestInputPayload> LoadIngestInputFromHttpAsync(IServiceProvider services, Uri uri, CancellationToken cancellationToken)
|
||||
{
|
||||
using var handler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.All };
|
||||
using var httpClient = new HttpClient(handler);
|
||||
var httpClientFactory = services.GetRequiredService<IHttpClientFactory>();
|
||||
var httpClient = httpClientFactory.CreateClient("stellaops-cli.ingest-download");
|
||||
using var response = await httpClient.GetAsync(uri, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (!response.IsSuccessStatusCode)
|
||||
|
||||
Reference in New Issue
Block a user