Files
git.stella-ops.org/src/Findings/StellaOps.Findings.Ledger.Tests/Infrastructure/InMemoryLedgerEventRepositoryTests.cs
master 8355e2ff75
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
feat: Add initial implementation of Vulnerability Resolver Jobs
- Created project for StellaOps.Scanner.Analyzers.Native.Tests with necessary dependencies.
- Documented roles and guidelines in AGENTS.md for Scheduler module.
- Implemented IResolverJobService interface and InMemoryResolverJobService for handling resolver jobs.
- Added ResolverBacklogNotifier and ResolverBacklogService for monitoring job metrics.
- Developed API endpoints for managing resolver jobs and retrieving metrics.
- Defined models for resolver job requests and responses.
- Integrated dependency injection for resolver job services.
- Implemented ImpactIndexSnapshot for persisting impact index data.
- Introduced SignalsScoringOptions for configurable scoring weights in reachability scoring.
- Added unit tests for ReachabilityScoringService and RuntimeFactsIngestionService.
- Created dotnet-filter.sh script to handle command-line arguments for dotnet.
- Established nuget-prime project for managing package downloads.
2025-11-18 07:52:15 +02:00

55 lines
1.8 KiB
C#

using System.Text.Json.Nodes;
using FluentAssertions;
using StellaOps.Findings.Ledger.Domain;
using StellaOps.Findings.Ledger.Infrastructure.InMemory;
using Xunit;
namespace StellaOps.Findings.Ledger.Tests.Infrastructure;
public class InMemoryLedgerEventRepositoryTests
{
[Fact]
public async Task GetEvidenceReferencesAsync_returns_only_events_with_refs()
{
var repo = new InMemoryLedgerEventRepository();
var tenant = "tenant-1";
var findingId = "finding-123";
var withEvidence = CreateRecord(tenant, findingId, sequence: 1, evidenceRef: "bundle-1");
var withoutEvidence = CreateRecord(tenant, findingId, sequence: 2, evidenceRef: null);
await repo.AppendAsync(withEvidence, CancellationToken.None);
await repo.AppendAsync(withoutEvidence, CancellationToken.None);
var results = await repo.GetEvidenceReferencesAsync(tenant, findingId, CancellationToken.None);
results.Should().HaveCount(1);
results[0].EvidenceBundleRef.Should().Be("bundle-1");
results[0].EventId.Should().Be(withEvidence.EventId);
}
private static LedgerEventRecord CreateRecord(string tenant, string findingId, long sequence, string? evidenceRef)
{
var body = new JsonObject { ["status"] = "affected" };
return new LedgerEventRecord(
tenant,
Guid.NewGuid(),
sequence,
Guid.NewGuid(),
"finding.status.changed",
"policy-v1",
findingId,
"artifact-1",
null,
"actor-1",
"operator",
DateTimeOffset.UtcNow,
DateTimeOffset.UtcNow,
body,
"hash-event",
"hash-prev",
"hash-leaf",
"canon",
evidenceRef);
}
}