48 lines
1.8 KiB
C#
48 lines
1.8 KiB
C#
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;
|
|
|
|
|
|
using StellaOps.TestKit;
|
|
namespace StellaOps.Signals.Tests;
|
|
|
|
public class SignalsApiTests : IClassFixture<SignalsTestFactory>
|
|
{
|
|
private readonly SignalsTestFactory factory;
|
|
|
|
public SignalsApiTests(SignalsTestFactory factory)
|
|
{
|
|
this.factory = factory;
|
|
}
|
|
|
|
[Trait("Category", TestCategories.Unit)]
|
|
[Fact]
|
|
public async Task Callgraph_Ingest_Response_Includes_Extended_Fields()
|
|
{
|
|
using var client = factory.CreateClient();
|
|
client.DefaultRequestHeaders.Add("X-Scopes", "signals:write signals:read");
|
|
|
|
var req = CallgraphIngestionTests.CreateRequest("java", component: "api-test", version: "1.2.3");
|
|
var res = await client.PostAsJsonAsync("/signals/callgraphs", req);
|
|
|
|
Assert.Equal(HttpStatusCode.Accepted, res.StatusCode);
|
|
var body = await res.Content.ReadFromJsonAsync<CallgraphIngestResponse>();
|
|
Assert.NotNull(body);
|
|
Assert.False(string.IsNullOrWhiteSpace(body!.SchemaVersion));
|
|
Assert.True(body.NodeCount >= 0);
|
|
Assert.True(body.EdgeCount >= 0);
|
|
Assert.True(body.RootCount >= 0);
|
|
|
|
// Fetch manifest and ensure schemaVersion matches response
|
|
var manifestRes = await client.GetAsync($"/signals/callgraphs/{body.CallgraphId}/manifest");
|
|
Assert.Equal(HttpStatusCode.OK, manifestRes.StatusCode);
|
|
var manifest = await manifestRes.Content.ReadFromJsonAsync<CallgraphManifest>(new JsonSerializerOptions(JsonSerializerDefaults.Web));
|
|
Assert.NotNull(manifest);
|
|
Assert.Equal(body.SchemaVersion, manifest!.SchemaVersion);
|
|
}
|
|
}
|