up
Some checks failed
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled
Manifest Integrity / Validate Schema Integrity (push) Has been cancelled
Manifest Integrity / Validate Contract Documents (push) Has been cancelled
Manifest Integrity / Validate Pack Fixtures (push) Has been cancelled
Manifest Integrity / Audit SHA256SUMS Files (push) Has been cancelled
Manifest Integrity / Verify Merkle Roots (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled

This commit is contained in:
StellaOps Bot
2025-12-12 09:35:37 +02:00
parent ce5ec9c158
commit efaf3cb789
238 changed files with 146274 additions and 5767 deletions

View File

@@ -0,0 +1,55 @@
using System.Net;
using System.Net.Http.Json;
using System.Text.Json;
using System.Threading.Tasks;
using StellaOps.Signals.Models;
using StellaOps.Signals.Tests.TestInfrastructure;
using Xunit;
namespace StellaOps.Signals.Tests;
public class SyntheticRuntimeProbeTests : IClassFixture<SignalsTestFactory>
{
private readonly SignalsTestFactory factory;
public SyntheticRuntimeProbeTests(SignalsTestFactory factory)
{
this.factory = factory;
}
[Fact]
public async Task SyntheticProbe_Generates_Runtime_Facts_And_Scoring()
{
using var client = factory.CreateClient();
client.DefaultRequestHeaders.Add("X-Scopes", "signals:write signals:read");
var callgraphRequest = CallgraphIngestionTests.CreateRequest("java", component: "synthetic-probe", version: "1.0.0");
var callgraphRes = await client.PostAsJsonAsync("/signals/callgraphs", callgraphRequest);
Assert.Equal(HttpStatusCode.Accepted, callgraphRes.StatusCode);
var callgraphBody = await callgraphRes.Content.ReadFromJsonAsync<CallgraphIngestResponse>();
Assert.NotNull(callgraphBody);
var probeRequest = new SyntheticRuntimeProbeRequest
{
CallgraphId = callgraphBody!.CallgraphId,
Subject = new ReachabilitySubject { ScanId = "scan-synthetic-001" },
EventCount = 3
};
var probeRes = await client.PostAsJsonAsync("/signals/runtime-facts/synthetic", probeRequest);
Assert.Equal(HttpStatusCode.Accepted, probeRes.StatusCode);
var ingestBody = await probeRes.Content.ReadFromJsonAsync<RuntimeFactsIngestResponse>();
Assert.NotNull(ingestBody);
Assert.Equal("scan-synthetic-001", ingestBody!.SubjectKey);
Assert.True(ingestBody.RuntimeFactCount > 0);
var factRes = await client.GetAsync($"/signals/facts/{ingestBody.SubjectKey}");
Assert.Equal(HttpStatusCode.OK, factRes.StatusCode);
var factJson = await factRes.Content.ReadAsStringAsync();
using var doc = JsonDocument.Parse(factJson);
Assert.True(doc.RootElement.TryGetProperty("states", out var states));
Assert.True(states.GetArrayLength() > 0);
Assert.True(doc.RootElement.TryGetProperty("runtimeFacts", out var runtimeFacts));
Assert.True(runtimeFacts.GetArrayLength() > 0);
}
}