Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.

This commit is contained in:
StellaOps Bot
2025-12-26 21:54:17 +02:00
parent 335ff7da16
commit c2b9cd8d1f
3717 changed files with 264714 additions and 48202 deletions

View File

@@ -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);

View File

@@ -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")]

View File

@@ -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);

View File

@@ -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);

View File

@@ -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%");
}

View File

@@ -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);

View File

@@ -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",

View File

@@ -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",

View File

@@ -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

View File

@@ -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();

View File

@@ -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);

View File

@@ -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)]

View File

@@ -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}.");

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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:

View File

@@ -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>();

View File

@@ -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

View File

@@ -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(

View File

@@ -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);

View File

@@ -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",

View File

@@ -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);

View File

@@ -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>()

View File

@@ -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;

View File

@@ -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}";

View File

@@ -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}";

View File

@@ -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

View File

@@ -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" }

View File

@@ -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;

View File

@@ -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>();

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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>

View File

@@ -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