up
This commit is contained in:
@@ -15,7 +15,13 @@ public class InMemoryEventsPublisherTests
|
||||
public async Task PublishFactUpdatedAsync_EmitsStructuredEvent()
|
||||
{
|
||||
var logger = new TestLogger<InMemoryEventsPublisher>();
|
||||
var publisher = new InMemoryEventsPublisher(logger, new SignalsOptions());
|
||||
var options = new SignalsOptions();
|
||||
options.Events.Driver = "inmemory";
|
||||
options.Events.Stream = "signals.fact.updated.v1";
|
||||
options.Events.DefaultTenant = "tenant-default";
|
||||
|
||||
var builder = new ReachabilityFactEventBuilder(options, TimeProvider.System);
|
||||
var publisher = new InMemoryEventsPublisher(logger, builder);
|
||||
|
||||
var fact = new ReachabilityFactDocument
|
||||
{
|
||||
@@ -33,21 +39,23 @@ public class InMemoryEventsPublisherTests
|
||||
}
|
||||
};
|
||||
|
||||
var envelope = builder.Build(fact);
|
||||
await publisher.PublishFactUpdatedAsync(fact, CancellationToken.None);
|
||||
|
||||
Assert.Contains("signals.fact.updated", logger.LastMessage);
|
||||
Assert.Contains("\"subjectKey\":\"tenant:image@sha256:abc\"", logger.LastMessage);
|
||||
Assert.Contains("\"callgraphId\":\"cg-123\"", logger.LastMessage);
|
||||
Assert.Contains("\"reachableCount\":1", logger.LastMessage);
|
||||
Assert.Contains("\"unreachableCount\":1", logger.LastMessage);
|
||||
Assert.Contains("\"runtimeFactsCount\":1", logger.LastMessage);
|
||||
Assert.Contains("\"bucket\":\"runtime\"", logger.LastMessage);
|
||||
Assert.Contains("\"weight\":0.45", logger.LastMessage);
|
||||
Assert.Contains("\"factScore\":", logger.LastMessage);
|
||||
Assert.Contains("\"unknownsCount\":0", logger.LastMessage);
|
||||
Assert.Contains("\"unknownsPressure\":0", logger.LastMessage);
|
||||
Assert.Contains("\"stateCount\":2", logger.LastMessage);
|
||||
Assert.Contains("\"targets\":[\"pkg:pypi/django\",\"pkg:pypi/requests\"]", logger.LastMessage);
|
||||
Assert.Equal("signals.fact.updated.v1", envelope.Topic);
|
||||
Assert.Equal("signals.fact.updated@v1", envelope.Version);
|
||||
Assert.False(string.IsNullOrWhiteSpace(envelope.EventId));
|
||||
Assert.Equal("tenant-default", envelope.Tenant);
|
||||
Assert.Equal("tenant:image@sha256:abc", envelope.SubjectKey);
|
||||
Assert.Equal("cg-123", envelope.CallgraphId);
|
||||
Assert.Equal(1, envelope.Summary.ReachableCount);
|
||||
Assert.Equal(1, envelope.Summary.UnreachableCount);
|
||||
Assert.Equal(1, envelope.Summary.RuntimeFactsCount);
|
||||
Assert.Equal("runtime", envelope.Summary.Bucket);
|
||||
Assert.Equal(2, envelope.Summary.StateCount);
|
||||
Assert.Contains("pkg:pypi/django", envelope.Summary.Targets);
|
||||
Assert.Contains("pkg:pypi/requests", envelope.Summary.Targets);
|
||||
Assert.Contains("signals.fact.updated.v1", logger.LastMessage);
|
||||
}
|
||||
|
||||
private sealed class TestLogger<T> : ILogger<T>
|
||||
|
||||
Reference in New Issue
Block a user