Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// ActionablesEndpointsTests.cs
|
||||
// Sprint: SPRINT_4200_0002_0006_delta_compare_api
|
||||
// Description: Integration tests for actionables engine endpoints.
|
||||
@@ -128,7 +128,6 @@ public sealed class ActionablesEndpointsTests
|
||||
using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var response = await client.GetAsync("/api/v1/actionables/delta/delta-12345678");
|
||||
var result = await response.Content.ReadFromJsonAsync<ActionablesResponseDto>(SerializerOptions);
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ public sealed class ApprovalEndpointsTests : IDisposable
|
||||
Assert.Equal("CVE-2024-12345", approval!.FindingId);
|
||||
Assert.Equal("AcceptRisk", approval.Decision);
|
||||
Assert.NotNull(approval.AttestationId);
|
||||
Assert.True(approval.AttestationId.StartsWith("sha256:"));
|
||||
Assert.StartsWith("sha256:", approval.AttestationId);
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "POST /approvals rejects empty finding_id")]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Net;
|
||||
using System.Net;
|
||||
|
||||
|
||||
using StellaOps.TestKit;
|
||||
@@ -21,7 +21,6 @@ public sealed class AuthorizationTests
|
||||
});
|
||||
|
||||
using var client = factory.CreateClient();
|
||||
using StellaOps.TestKit;
|
||||
var response = await client.GetAsync("/api/v1/__auth-probe");
|
||||
|
||||
Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// BaselineEndpointsTests.cs
|
||||
// Sprint: SPRINT_4200_0002_0006_delta_compare_api
|
||||
// Description: Integration tests for baseline selection endpoints.
|
||||
@@ -112,7 +112,6 @@ public sealed class BaselineEndpointsTests
|
||||
using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var response = await client.GetAsync("/api/v1/baselines/recommendations/sha256:artifact123");
|
||||
var result = await response.Content.ReadFromJsonAsync<BaselineRecommendationsResponseDto>(SerializerOptions);
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ public sealed class TtfsPerformanceTests
|
||||
var completeness = CalculateEvidenceCompleteness(evidence);
|
||||
|
||||
// Assert
|
||||
completeness.Should().BeGreaterOrEqualTo(0.90,
|
||||
completeness.Should().BeGreaterThanOrEqualTo(0.90,
|
||||
"Evidence completeness should be >= 90%");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Net;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using StellaOps.Scanner.WebService.Contracts;
|
||||
using Xunit;
|
||||
@@ -63,7 +63,6 @@ public sealed class CallGraphEndpointsTests
|
||||
{
|
||||
Content = JsonContent.Create(request)
|
||||
};
|
||||
using StellaOps.TestKit;
|
||||
secondRequest.Headers.TryAddWithoutValidation("Content-Digest", "sha256:deadbeef");
|
||||
|
||||
var second = await client.SendAsync(secondRequest);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// CounterfactualEndpointsTests.cs
|
||||
// Sprint: SPRINT_4200_0002_0005_counterfactuals
|
||||
// Description: Integration tests for counterfactual analysis endpoints.
|
||||
@@ -205,7 +205,6 @@ public sealed class CounterfactualEndpointsTests
|
||||
using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var request = new CounterfactualRequestDto
|
||||
{
|
||||
FindingId = "finding-123",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// DeltaCompareEndpointsTests.cs
|
||||
// Sprint: SPRINT_4200_0002_0006_delta_compare_api
|
||||
// Description: Integration tests for delta compare endpoints.
|
||||
@@ -130,7 +130,6 @@ public sealed class DeltaCompareEndpointsTests
|
||||
using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var request = new DeltaCompareRequestDto
|
||||
{
|
||||
BaseDigest = "sha256:base123",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// EvidenceCompositionServiceTests.cs
|
||||
// Sprint: SPRINT_3800_0003_0001_evidence_api_endpoint
|
||||
// Description: Integration tests for Evidence API endpoints.
|
||||
@@ -112,7 +112,6 @@ public sealed class EvidenceEndpointsTests
|
||||
});
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var response = await client.GetAsync("/api/v1/scans/nonexistent-scan/evidence");
|
||||
|
||||
// Current behavior: returns empty list (200 OK) for non-existent scans
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Net;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using System.Text.Json;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
@@ -123,7 +123,6 @@ public sealed class FindingsEvidenceControllerTests
|
||||
private static async Task<Guid> SeedFindingAsync(ScannerApplicationFactory factory)
|
||||
{
|
||||
using var scope = factory.Services.CreateScope();
|
||||
using StellaOps.TestKit;
|
||||
var db = scope.ServiceProvider.GetRequiredService<TriageDbContext>();
|
||||
|
||||
await db.Database.MigrateAsync();
|
||||
|
||||
@@ -31,7 +31,7 @@ public sealed class GatingContractsSerializationTests
|
||||
[InlineData(GatingReason.VexNotAffected, "vexNotAffected")]
|
||||
[InlineData(GatingReason.Superseded, "superseded")]
|
||||
[InlineData(GatingReason.UserMuted, "userMuted")]
|
||||
public void GatingReason_SerializesAsExpectedString(GatingReason reason, string expectedValue)
|
||||
public void GatingReason_SerializesAsExpectedString(GatingReason reason, string _)
|
||||
{
|
||||
var dto = new FindingGatingStatusDto { GatingReason = reason };
|
||||
var json = JsonSerializer.Serialize(dto, SerializerOptions);
|
||||
|
||||
@@ -390,11 +390,11 @@ public sealed class GatingReasonServiceTests
|
||||
[InlineData("debian", 0.95)]
|
||||
[InlineData("suse", 0.9)]
|
||||
[InlineData("microsoft", 0.9)]
|
||||
public void VexIssuerTrust_KnownIssuers_HaveExpectedTrustScores(string issuer, double expectedTrust)
|
||||
public void VexIssuerTrust_KnownIssuers_HaveExpectedTrustScores(string _, double expectedTrust)
|
||||
{
|
||||
// This test documents the expected trust scores for known issuers
|
||||
// The actual implementation is in GatingReasonService.GetIssuerTrust()
|
||||
expectedTrust.Should().BeGreaterOrEqualTo(0.9);
|
||||
expectedTrust.Should().BeGreaterThanOrEqualTo(0.9);
|
||||
}
|
||||
|
||||
[Trait("Category", TestCategories.Unit)]
|
||||
@@ -429,7 +429,7 @@ public sealed class GatingReasonServiceTests
|
||||
var justification = new string('x', 600);
|
||||
|
||||
// Assert
|
||||
justification.Length.Should().BeGreaterOrEqualTo(500);
|
||||
justification.Length.Should().BeGreaterThanOrEqualTo(500);
|
||||
}
|
||||
|
||||
[Trait("Category", TestCategories.Unit)]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Net.Http.Json;
|
||||
using System.Net.Http.Json;
|
||||
|
||||
|
||||
using StellaOps.TestKit;
|
||||
@@ -13,7 +13,6 @@ public sealed class HealthEndpointsTests
|
||||
using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var healthResponse = await client.GetAsync("/healthz");
|
||||
Assert.True(healthResponse.IsSuccessStatusCode, $"Expected 200 from /healthz, received {(int)healthResponse.StatusCode}.");
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// IdempotencyMiddlewareTests.cs
|
||||
// Sprint: SPRINT_3500_0002_0003_proof_replay_api
|
||||
// Task: T6 - Unit Tests for Idempotency Middleware
|
||||
@@ -128,7 +128,6 @@ public sealed class IdempotencyMiddlewareTests
|
||||
await using var factory = CreateFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var content = new StringContent("""{"test":"nodigest"}""", Encoding.UTF8, "application/json");
|
||||
// Not adding Content-Digest header - middleware should compute it
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// ManifestEndpointsTests.cs
|
||||
// Sprint: SPRINT_3500_0002_0003_proof_replay_api
|
||||
// Task: T6 - Unit Tests for Manifest and Proof Bundle Endpoints
|
||||
@@ -420,7 +420,6 @@ public sealed class ManifestEndpointsTests
|
||||
// Arrange
|
||||
await using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
using StellaOps.TestKit;
|
||||
var scanId = Guid.NewGuid();
|
||||
|
||||
// Act - Trailing slash with empty root hash
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Net;
|
||||
using System.Net;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
@@ -6,8 +6,8 @@ using System.Text.Json;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using StellaOps.Authority.Storage.Postgres.Models;
|
||||
using StellaOps.Authority.Storage.Postgres.Repositories;
|
||||
using StellaOps.Authority.Persistence.Postgres.Models;
|
||||
using StellaOps.Authority.Persistence.Postgres.Repositories;
|
||||
using Xunit;
|
||||
|
||||
|
||||
@@ -62,18 +62,18 @@ public sealed class OfflineKitEndpointsTests
|
||||
|
||||
content.Add(new StringContent(dsseJson, Encoding.UTF8, "application/json"), "bundleSignature", "statement.dsse.json");
|
||||
|
||||
using var response = await client.PostAsync("/api/offline-kit/import", content).ConfigureAwait(false);
|
||||
using var response = await client.PostAsync("/api/offline-kit/import", content);
|
||||
Assert.Equal(HttpStatusCode.Accepted, response.StatusCode);
|
||||
|
||||
using var statusResponse = await client.GetAsync("/api/offline-kit/status").ConfigureAwait(false);
|
||||
using var statusResponse = await client.GetAsync("/api/offline-kit/status");
|
||||
Assert.Equal(HttpStatusCode.OK, statusResponse.StatusCode);
|
||||
|
||||
var statusJson = await statusResponse.Content.ReadAsStringAsync().ConfigureAwait(false);
|
||||
var statusJson = await statusResponse.Content.ReadAsStringAsync();
|
||||
using var statusDoc = JsonDocument.Parse(statusJson);
|
||||
var current = statusDoc.RootElement.GetProperty("current");
|
||||
Assert.Equal("test-bundle", current.GetProperty("bundleId").GetString());
|
||||
|
||||
var metrics = await client.GetStringAsync("/metrics").ConfigureAwait(false);
|
||||
var metrics = await client.GetStringAsync("/metrics");
|
||||
Assert.Contains("offlinekit_import_total", metrics, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
@@ -127,10 +127,10 @@ public sealed class OfflineKitEndpointsTests
|
||||
|
||||
content.Add(new StringContent(invalidDsseJson, Encoding.UTF8, "application/json"), "bundleSignature", "statement.dsse.json");
|
||||
|
||||
using var response = await client.PostAsync("/api/offline-kit/import", content).ConfigureAwait(false);
|
||||
using var response = await client.PostAsync("/api/offline-kit/import", content);
|
||||
Assert.Equal(HttpStatusCode.UnprocessableEntity, response.StatusCode);
|
||||
|
||||
var problemJson = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
|
||||
var problemJson = await response.Content.ReadAsStringAsync();
|
||||
using var problem = JsonDocument.Parse(problemJson);
|
||||
Assert.Equal("DSSE_VERIFY_FAIL", problem.RootElement.GetProperty("extensions").GetProperty("reason_code").GetString());
|
||||
}
|
||||
@@ -177,7 +177,7 @@ public sealed class OfflineKitEndpointsTests
|
||||
|
||||
content.Add(new StringContent(invalidDsseJson, Encoding.UTF8, "application/json"), "bundleSignature", "statement.dsse.json");
|
||||
|
||||
using var response = await client.PostAsync("/api/offline-kit/import", content).ConfigureAwait(false);
|
||||
using var response = await client.PostAsync("/api/offline-kit/import", content);
|
||||
Assert.Equal(HttpStatusCode.Accepted, response.StatusCode);
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ public sealed class OfflineKitEndpointsTests
|
||||
using var request = new HttpRequestMessage(HttpMethod.Post, "/api/offline-kit/import") { Content = content };
|
||||
request.Headers.Add("X-Stella-Tenant", "tenant-a");
|
||||
|
||||
using var response = await client.SendAsync(request).ConfigureAwait(false);
|
||||
using var response = await client.SendAsync(request);
|
||||
Assert.Equal(HttpStatusCode.Accepted, response.StatusCode);
|
||||
|
||||
var entity = auditEmitter.LastRecorded;
|
||||
@@ -239,7 +239,6 @@ public sealed class OfflineKitEndpointsTests
|
||||
private static (string KeyId, string PublicKeyPem, string DsseJson) CreateSignedDsse(byte[] bundleBytes)
|
||||
{
|
||||
using var rsa = RSA.Create(2048);
|
||||
using StellaOps.TestKit;
|
||||
var publicKeyDer = rsa.ExportSubjectPublicKeyInfo();
|
||||
var fingerprint = ComputeSha256Hex(publicKeyDer);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using StellaOps.Scanner.WebService.Options;
|
||||
using StellaOps.Scanner.WebService.Services;
|
||||
@@ -55,7 +55,6 @@ public sealed class PlatformEventPublisherRegistrationTests
|
||||
});
|
||||
using var scope = factory.Services.CreateScope();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var options = scope.ServiceProvider.GetRequiredService<IOptions<ScannerWebServiceOptions>>().Value;
|
||||
Assert.True(options.Events.Enabled);
|
||||
Assert.Equal("redis", options.Events.Driver);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Net;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
@@ -64,7 +64,6 @@ public sealed class PolicyEndpointsTests
|
||||
using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
const string policyYaml = """
|
||||
version: "1.0"
|
||||
rules:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Formats.Cbor;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
@@ -179,7 +179,6 @@ public sealed class ProofSpineEndpointsTests
|
||||
await using var factory = new ScannerApplicationFactory();
|
||||
using var scope = factory.Services.CreateScope();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var builder = scope.ServiceProvider.GetRequiredService<ProofSpineBuilder>();
|
||||
var repository = scope.ServiceProvider.GetRequiredService<IProofSpineRepository>();
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// RateLimitingTests.cs
|
||||
// Sprint: SPRINT_3500_0002_0003_proof_replay_api
|
||||
// Task: T6 - Unit Tests for Rate Limiting
|
||||
@@ -175,7 +175,6 @@ public sealed class RateLimitingTests
|
||||
// Arrange
|
||||
await using var factory = CreateFactory();
|
||||
using var client = factory.CreateClient();
|
||||
using StellaOps.TestKit;
|
||||
var scanId = Guid.NewGuid();
|
||||
|
||||
// Act - Requests from "anonymous" tenant
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
@@ -87,7 +87,6 @@ public sealed class ReachabilityDriftEndpointsTests
|
||||
private static async Task SeedCallGraphSnapshotsAsync(IServiceProvider services, string baseScanId, string headScanId)
|
||||
{
|
||||
using var scope = services.CreateScope();
|
||||
using StellaOps.TestKit;
|
||||
var repo = scope.ServiceProvider.GetRequiredService<ICallGraphSnapshotRepository>();
|
||||
|
||||
var baseSnapshot = CreateSnapshot(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
@@ -26,7 +26,6 @@ public sealed class ReportSamplesTests
|
||||
var path = Path.Combine(repoRoot, "samples", "api", "reports", "report-sample.dsse.json");
|
||||
Assert.True(File.Exists(path), $"Sample file not found at {path}.");
|
||||
await using var stream = File.OpenRead(path);
|
||||
using StellaOps.TestKit;
|
||||
var response = await JsonSerializer.DeserializeAsync<ReportResponseDto>(stream, SerializerOptions);
|
||||
Assert.NotNull(response);
|
||||
Assert.NotNull(response!.Report);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Net;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
@@ -186,7 +186,6 @@ rules:
|
||||
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var request = new ReportRequestDto
|
||||
{
|
||||
ImageDigest = "sha256:cafebabe",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
@@ -270,7 +270,6 @@ public sealed class RubyPackagesEndpointsTests
|
||||
}
|
||||
|
||||
using var client = factory.CreateClient();
|
||||
using StellaOps.TestKit;
|
||||
var encodedDigest = Uri.EscapeDataString(digest);
|
||||
var response = await client.GetAsync($"/api/v1/scans/{encodedDigest}/entrytrace");
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
@@ -301,7 +301,6 @@ rules: []
|
||||
using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var request = new RuntimePolicyRequestDto
|
||||
{
|
||||
Images = Array.Empty<string>()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
@@ -563,7 +563,7 @@ public sealed class RuntimeReconciliationTests
|
||||
|
||||
if (paths.Length > 0)
|
||||
{
|
||||
component.Evidence = new Evidence
|
||||
component.Evidence = new CycloneDX.Models.Evidence
|
||||
{
|
||||
Occurrences = paths.Select(p => new EvidenceOccurrence
|
||||
{
|
||||
@@ -597,7 +597,6 @@ public sealed class RuntimeReconciliationTests
|
||||
public Task PutAsync(ArtifactObjectDescriptor descriptor, Stream content, CancellationToken cancellationToken)
|
||||
{
|
||||
using var ms = new MemoryStream();
|
||||
using StellaOps.TestKit;
|
||||
content.CopyTo(ms);
|
||||
_store[$"{descriptor.Bucket}/{descriptor.Key}"] = ms.ToArray();
|
||||
return Task.CompletedTask;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using System.Text;
|
||||
@@ -85,7 +85,6 @@ public sealed class SbomEndpointsTests
|
||||
ArgumentNullException.ThrowIfNull(content);
|
||||
|
||||
using var buffer = new MemoryStream();
|
||||
using StellaOps.TestKit;
|
||||
await content.CopyToAsync(buffer, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var key = $"{descriptor.Bucket}:{descriptor.Key}";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
@@ -143,7 +143,6 @@ public sealed class SbomUploadEndpointsTests
|
||||
ArgumentNullException.ThrowIfNull(content);
|
||||
|
||||
using var buffer = new MemoryStream();
|
||||
using StellaOps.TestKit;
|
||||
await content.CopyToAsync(buffer, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var key = $"{descriptor.Bucket}:{descriptor.Key}";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
@@ -143,7 +143,6 @@ public sealed class ScannerSurfaceSecretConfiguratorTests
|
||||
""";
|
||||
|
||||
using var handle = SurfaceSecretHandle.FromBytes(Encoding.UTF8.GetBytes(json));
|
||||
using StellaOps.TestKit;
|
||||
var secretProvider = new StubSecretProvider(new Dictionary<string, SurfaceSecretHandle>(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["registry"] = handle
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
@@ -24,7 +24,6 @@ public sealed partial class ScansEndpointsTests
|
||||
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var submitResponse = await client.PostAsJsonAsync("/api/v1/scans", new
|
||||
{
|
||||
image = new { digest = "sha256:image-demo" }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Http.Json;
|
||||
@@ -100,7 +100,6 @@ public sealed partial class ScansEndpointsTests
|
||||
public Task PutAsync(ArtifactObjectDescriptor descriptor, Stream content, CancellationToken cancellationToken)
|
||||
{
|
||||
using var buffer = new MemoryStream();
|
||||
using StellaOps.TestKit;
|
||||
content.CopyTo(buffer);
|
||||
Objects[descriptor.Key] = buffer.ToArray();
|
||||
return Task.CompletedTask;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
@@ -38,7 +38,6 @@ public sealed partial class ScansEndpointsTests
|
||||
var scanId = submitPayload!.ScanId;
|
||||
|
||||
using var scope = factory.Services.CreateScope();
|
||||
using StellaOps.TestKit;
|
||||
var coordinator = scope.ServiceProvider.GetRequiredService<IScanCoordinator>();
|
||||
var recordMode = scope.ServiceProvider.GetRequiredService<IRecordModeService>();
|
||||
var timeProvider = scope.ServiceProvider.GetRequiredService<TimeProvider>();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
@@ -182,7 +182,6 @@ public sealed partial class ScansEndpointsTests
|
||||
});
|
||||
|
||||
using var client = factory.CreateClient();
|
||||
using StellaOps.TestKit;
|
||||
var response = await client.GetAsync("/api/v1/scans/scan-missing/entrytrace");
|
||||
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Immutable;
|
||||
using System.Collections.Immutable;
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using System.Text.Json;
|
||||
@@ -477,7 +477,6 @@ public sealed class SliceCacheTests
|
||||
// Arrange
|
||||
var options = Microsoft.Extensions.Options.Options.Create(new SliceCacheOptions { Enabled = false });
|
||||
using var cache = new SliceCache(options);
|
||||
using StellaOps.TestKit;
|
||||
var cacheResult = CreateTestCacheResult();
|
||||
|
||||
// Act
|
||||
|
||||
@@ -9,24 +9,14 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../../StellaOps.Scanner.WebService/StellaOps.Scanner.WebService.csproj" />
|
||||
<ProjectReference Include="..\\..\\..\\__Tests\\__Libraries\\StellaOps.Infrastructure.Postgres.Testing\\StellaOps.Infrastructure.Postgres.Testing.csproj" />
|
||||
<!-- NOTE: TestKit reference removed due to package version conflict (Microsoft.AspNetCore.Mvc.Testing 10.0.0 vs 10.0.0-rc.2) -->
|
||||
<!-- TestKit-dependent tests excluded from compilation until resolved -->
|
||||
<ProjectReference Include="../../../__Tests/__Libraries/StellaOps.Infrastructure.Postgres.Testing/StellaOps.Infrastructure.Postgres.Testing.csproj" />
|
||||
<ProjectReference Include="../../../__Libraries/StellaOps.TestKit/StellaOps.TestKit.csproj" />
|
||||
<ProjectReference Include="../../../Authority/__Libraries/StellaOps.Authority.Persistence/StellaOps.Authority.Persistence.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<!-- Exclude tests that require StellaOps.TestKit until package version conflict is resolved -->
|
||||
<Compile Remove="Contract\\ScannerOpenApiContractTests.cs" />
|
||||
<Compile Remove="Negative\\ScannerNegativeTests.cs" />
|
||||
<Compile Remove="Security\\ScannerAuthorizationTests.cs" />
|
||||
<Compile Remove="Telemetry\\ScannerOtelAssertionTests.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
|
||||
<PackageReference Include="FluentAssertions" Version="6.12.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.0" />
|
||||
<PackageReference Include="Moq" Version="4.20.72" />
|
||||
<PackageReference Include="xunit" Version="2.9.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
|
||||
<PackageReference Include="BenchmarkDotNet" />
|
||||
<PackageReference Include="FluentAssertions" />
|
||||
<PackageReference Include="Moq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\docs\events\samples\scanner.event.report.ready@1.sample.json">
|
||||
@@ -36,4 +26,4 @@
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -1,4 +1,4 @@
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// TriageStatusEndpointsTests.cs
|
||||
// Sprint: SPRINT_4200_0001_0001_triage_rest_api
|
||||
// Description: Integration tests for triage status endpoints.
|
||||
@@ -189,7 +189,6 @@ public sealed class TriageStatusEndpointsTests
|
||||
using var factory = new ScannerApplicationFactory();
|
||||
using var client = factory.CreateClient();
|
||||
|
||||
using StellaOps.TestKit;
|
||||
var request = new BulkTriageQueryRequestDto
|
||||
{
|
||||
Limit = 10
|
||||
|
||||
Reference in New Issue
Block a user