work
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
using System.Text.Json;
|
||||
using FluentAssertions;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using StellaOps.SbomService.Models;
|
||||
using Xunit;
|
||||
|
||||
namespace StellaOps.SbomService.Tests;
|
||||
|
||||
public class SbomEventEndpointsTests : IClassFixture<WebApplicationFactory<Program>>
|
||||
{
|
||||
private readonly WebApplicationFactory<Program> _factory;
|
||||
|
||||
public SbomEventEndpointsTests(WebApplicationFactory<Program> factory)
|
||||
{
|
||||
_factory = factory.WithWebHostBuilder(_ => { });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Backfill_publishes_version_created_events_once()
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
|
||||
var backfillResponse = await client.PostAsync("/internal/sbom/events/backfill", content: null);
|
||||
backfillResponse.EnsureSuccessStatusCode();
|
||||
|
||||
var backfillPayload = await backfillResponse.Content.ReadFromJsonAsync<JsonElement>();
|
||||
backfillPayload.TryGetProperty("published", out var publishedProp).Should().BeTrue();
|
||||
publishedProp.GetInt32().Should().BeGreaterOrEqualTo(1);
|
||||
|
||||
var events = await client.GetFromJsonAsync<List<SbomVersionCreatedEvent>>("/internal/sbom/events");
|
||||
events.Should().NotBeNull();
|
||||
events!.Should().HaveCount(1);
|
||||
events[0].SnapshotId.Should().Be("snap-001");
|
||||
events[0].TenantId.Should().Be("tenant-a");
|
||||
|
||||
// Requesting the projection should not duplicate events.
|
||||
var projectionResponse = await client.GetAsync("/sboms/snap-001/projection?tenant=tenant-a");
|
||||
projectionResponse.StatusCode.Should().Be(HttpStatusCode.OK);
|
||||
|
||||
var eventsAfterProjection = await client.GetFromJsonAsync<List<SbomVersionCreatedEvent>>("/internal/sbom/events");
|
||||
eventsAfterProjection.Should().NotBeNull();
|
||||
eventsAfterProjection!.Should().HaveCount(1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user