Gaps fill up, fixes, ui restructuring

This commit is contained in:
master
2026-02-19 22:10:54 +02:00
parent b5829dce5c
commit 04cacdca8a
331 changed files with 42859 additions and 2174 deletions

View File

@@ -0,0 +1,62 @@
using System.Net;
using System.Net.Http.Json;
using StellaOps.Scanner.WebService.Endpoints;
using StellaOps.TestKit;
namespace StellaOps.Scanner.WebService.Tests;
public sealed class SecurityAdapterEndpointsTests
{
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task SecurityAdapterRoutes_ReturnSuccessAndDeterministicFindingsPayload()
{
await using var factory = ScannerApplicationFactory.CreateLightweight();
await factory.InitializeAsync();
using var client = factory.CreateClient();
var firstResponse = await client.GetAsync("/api/v1/security/findings", TestContext.Current.CancellationToken);
var secondResponse = await client.GetAsync("/api/v1/security/findings", TestContext.Current.CancellationToken);
Assert.Equal(HttpStatusCode.OK, firstResponse.StatusCode);
Assert.Equal(HttpStatusCode.OK, secondResponse.StatusCode);
var first = await firstResponse.Content.ReadAsStringAsync(TestContext.Current.CancellationToken);
var second = await secondResponse.Content.ReadAsStringAsync(TestContext.Current.CancellationToken);
Assert.Equal(first, second);
var endpoints = new[]
{
"/api/v1/security/vulnerabilities",
"/api/v1/security/vex",
"/api/v1/security/reachability",
};
foreach (var endpoint in endpoints)
{
var response = await client.GetAsync(endpoint, TestContext.Current.CancellationToken);
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task SecurityFindings_FilteringBySeverityAndReachability_Works()
{
await using var factory = ScannerApplicationFactory.CreateLightweight();
await factory.InitializeAsync();
using var client = factory.CreateClient();
var payload = await client.GetFromJsonAsync<SecurityFindingsResponseDto>(
"/api/v1/security/findings?severity=critical&reachability=reachable",
TestContext.Current.CancellationToken);
Assert.NotNull(payload);
Assert.NotEmpty(payload!.Items);
Assert.All(payload.Items, item =>
{
Assert.Equal("critical", item.Severity, ignoreCase: true);
Assert.Equal("reachable", item.Reachability, ignoreCase: true);
});
}
}