This commit is contained in:
StellaOps Bot
2025-12-26 21:43:56 +02:00
354 changed files with 354 additions and 0 deletions

View File

@@ -129,6 +129,7 @@ public sealed class AdvisoryGuardrailInjectionTests
} }
using var stream = File.OpenRead(path); using var stream = File.OpenRead(path);
using StellaOps.TestKit;
var cases = JsonSerializer.Deserialize<List<InjectionCase>>(stream, SerializerOptions); var cases = JsonSerializer.Deserialize<List<InjectionCase>>(stream, SerializerOptions);
return cases ?? throw new InvalidOperationException("Guardrail injection harness cases could not be loaded."); return cases ?? throw new InvalidOperationException("Guardrail injection harness cases could not be loaded.");
} }

View File

@@ -67,6 +67,7 @@ public sealed class AdvisoryGuardrailOptionsBindingTests
services.AddAdvisoryAiCore(configuration); services.AddAdvisoryAiCore(configuration);
await using var provider = services.BuildServiceProvider(); await using var provider = services.BuildServiceProvider();
using StellaOps.TestKit;
var action = () => provider.GetRequiredService<IOptions<AdvisoryGuardrailOptions>>().Value; var action = () => provider.GetRequiredService<IOptions<AdvisoryGuardrailOptions>>().Value;
action.Should().Throw<FileNotFoundException>(); action.Should().Throw<FileNotFoundException>();
} }

View File

@@ -118,6 +118,7 @@ public sealed class AdvisoryGuardrailPerformanceTests
var path = Path.Combine(AppContext.BaseDirectory, "TestData", "guardrail-blocked-phrases.json"); var path = Path.Combine(AppContext.BaseDirectory, "TestData", "guardrail-blocked-phrases.json");
using var stream = File.OpenRead(path); using var stream = File.OpenRead(path);
using var document = JsonDocument.Parse(stream); using var document = JsonDocument.Parse(stream);
using StellaOps.TestKit;
if (document.RootElement.TryGetProperty("phrases", out var phrasesElement) && phrasesElement.ValueKind == JsonValueKind.Array) if (document.RootElement.TryGetProperty("phrases", out var phrasesElement) && phrasesElement.ValueKind == JsonValueKind.Array)
{ {
return phrasesElement.EnumerateArray() return phrasesElement.EnumerateArray()

View File

@@ -178,6 +178,7 @@ public sealed class AdvisoryPipelineExecutorTests : IDisposable
var guardrail = new StubGuardrailPipeline(blocked: false); var guardrail = new StubGuardrailPipeline(blocked: false);
var store = new InMemoryAdvisoryOutputStore(); var store = new InMemoryAdvisoryOutputStore();
using var metrics = new AdvisoryPipelineMetrics(_meterFactory); using var metrics = new AdvisoryPipelineMetrics(_meterFactory);
using StellaOps.TestKit;
var inferenceMetadata = ImmutableDictionary<string, string>.Empty.Add("inference.fallback_reason", "throttle"); var inferenceMetadata = ImmutableDictionary<string, string>.Empty.Add("inference.fallback_reason", "throttle");
var inference = new StubInferenceClient var inference = new StubInferenceClient
{ {

View File

@@ -71,6 +71,7 @@ public sealed class AdvisoryPromptAssemblerTests
var prompt = await assembler.AssembleAsync(plan, CancellationToken.None); var prompt = await assembler.AssembleAsync(plan, CancellationToken.None);
using var document = JsonDocument.Parse(prompt.Prompt); using var document = JsonDocument.Parse(prompt.Prompt);
using StellaOps.TestKit;
var matches = document.RootElement var matches = document.RootElement
.GetProperty("vectors")[0] .GetProperty("vectors")[0]
.GetProperty("matches") .GetProperty("matches")

View File

@@ -118,6 +118,7 @@ public sealed class HttpClientUsageAnalyzerTests
{ {
using var workspace = new AdhocWorkspace(); using var workspace = new AdhocWorkspace();
using StellaOps.TestKit;
var projectId = ProjectId.CreateNewId(); var projectId = ProjectId.CreateNewId();
var documentId = DocumentId.CreateNewId(projectId); var documentId = DocumentId.CreateNewId(projectId);
var stubDocumentId = DocumentId.CreateNewId(projectId); var stubDocumentId = DocumentId.CreateNewId(projectId);

View File

@@ -485,6 +485,7 @@ public sealed class PolicyAnalyzerRoslynTests
{ {
using var workspace = new AdhocWorkspace(); using var workspace = new AdhocWorkspace();
using StellaOps.TestKit;
var projectId = ProjectId.CreateNewId(); var projectId = ProjectId.CreateNewId();
var documentId = DocumentId.CreateNewId(projectId); var documentId = DocumentId.CreateNewId(projectId);
var stubDocumentId = DocumentId.CreateNewId(projectId); var stubDocumentId = DocumentId.CreateNewId(projectId);

View File

@@ -202,6 +202,7 @@ public sealed class EgressPolicyTests
using var client = EgressHttpClientFactory.Create(recordingPolicy, request); using var client = EgressHttpClientFactory.Create(recordingPolicy, request);
using StellaOps.TestKit;
Assert.True(recordingPolicy.EnsureAllowedCalled); Assert.True(recordingPolicy.EnsureAllowedCalled);
Assert.NotNull(client); Assert.NotNull(client);
} }

View File

@@ -554,6 +554,7 @@ public sealed class BundleImportTests : IAsyncLifetime
private static async Task<string> ComputeFileDigestAsync(string filePath) private static async Task<string> ComputeFileDigestAsync(string filePath)
{ {
await using var stream = File.OpenRead(filePath); await using var stream = File.OpenRead(filePath);
using StellaOps.TestKit;
var hash = await SHA256.HashDataAsync(stream); var hash = await SHA256.HashDataAsync(stream);
return Convert.ToHexString(hash).ToLowerInvariant(); return Convert.ToHexString(hash).ToLowerInvariant();
} }

View File

@@ -364,6 +364,7 @@ public sealed class AirGapControllerContractTests
{ {
// Arrange - Create a trace context // Arrange - Create a trace context
using var activity = new Activity("test-airgap-operation"); using var activity = new Activity("test-airgap-operation");
using StellaOps.TestKit;
activity.Start(); activity.Start();
// Act // Act

View File

@@ -46,6 +46,7 @@ public sealed class AocGuardEndpointFilterExtensionsTests
builder.Services.AddAocGuard(); builder.Services.AddAocGuard();
using var app = builder.Build(); using var app = builder.Build();
using StellaOps.TestKit;
var route = app.MapPost("/guard-object", (GuardPayload _) => TypedResults.Ok()); var route = app.MapPost("/guard-object", (GuardPayload _) => TypedResults.Ok());
var result = route.RequireAocGuard<GuardPayload>(_ => new GuardPayload(JsonDocument.Parse("{}").RootElement)); var result = route.RequireAocGuard<GuardPayload>(_ => new GuardPayload(JsonDocument.Parse("{}").RootElement));

View File

@@ -37,6 +37,7 @@ public sealed class AocHttpResultsTests
context.Response.Body.Seek(0, SeekOrigin.Begin); context.Response.Body.Seek(0, SeekOrigin.Begin);
using var document = await JsonDocument.ParseAsync(context.Response.Body, cancellationToken: TestContext.Current.CancellationToken); using var document = await JsonDocument.ParseAsync(context.Response.Body, cancellationToken: TestContext.Current.CancellationToken);
using StellaOps.TestKit;
var root = document.RootElement; var root = document.RootElement;
// Assert // Assert

View File

@@ -203,6 +203,7 @@ public sealed class AocWriteGuardTests
} }
"""); """);
using StellaOps.TestKit;
var result = Guard.Validate(document.RootElement); var result = Guard.Validate(document.RootElement);
Assert.False(result.IsValid); Assert.False(result.IsValid);

View File

@@ -47,6 +47,7 @@ public sealed class DsseEnvelopeSerializerTests
"payload hash must reflect the raw payload bytes"); "payload hash must reflect the raw payload bytes");
using var document = JsonDocument.Parse(result.CompactJson!); using var document = JsonDocument.Parse(result.CompactJson!);
using StellaOps.TestKit;
var keyIds = document.RootElement var keyIds = document.RootElement
.GetProperty("signatures") .GetProperty("signatures")
.EnumerateArray() .EnumerateArray()

View File

@@ -149,6 +149,7 @@ public sealed class EnvelopeSignatureServiceTests
{ {
var jwk = $"{{\"crv\":\"Ed25519\",\"kty\":\"OKP\",\"x\":\"{ToBase64Url(publicKey)}\"}}"; var jwk = $"{{\"crv\":\"Ed25519\",\"kty\":\"OKP\",\"x\":\"{ToBase64Url(publicKey)}\"}}";
using var sha = SHA256.Create(); using var sha = SHA256.Create();
using StellaOps.TestKit;
var digest = sha.ComputeHash(Encoding.UTF8.GetBytes(jwk)); var digest = sha.ComputeHash(Encoding.UTF8.GetBytes(jwk));
return $"sha256:{ToBase64Url(digest)}"; return $"sha256:{ToBase64Url(digest)}";
} }

View File

@@ -114,6 +114,7 @@ public sealed class DsseEnvelopeSerializerTests
Assert.NotNull(result.ExpandedJson); Assert.NotNull(result.ExpandedJson);
using var expanded = JsonDocument.Parse(result.ExpandedJson!); using var expanded = JsonDocument.Parse(result.ExpandedJson!);
using StellaOps.TestKit;
var detached = expanded.RootElement.GetProperty("detachedPayload"); var detached = expanded.RootElement.GetProperty("detachedPayload");
Assert.Equal(reference.Uri, detached.GetProperty("uri").GetString()); Assert.Equal(reference.Uri, detached.GetProperty("uri").GetString());

View File

@@ -256,6 +256,7 @@ public sealed class AttestorSigningServiceTests : IDisposable
using var metrics = new AttestorMetrics(); using var metrics = new AttestorMetrics();
using var registry = new AttestorSigningKeyRegistry(options, TimeProvider.System, NullLogger<AttestorSigningKeyRegistry>.Instance); using var registry = new AttestorSigningKeyRegistry(options, TimeProvider.System, NullLogger<AttestorSigningKeyRegistry>.Instance);
using StellaOps.TestKit;
var auditSink = new InMemoryAttestorAuditSink(); var auditSink = new InMemoryAttestorAuditSink();
var service = new AttestorSigningService( var service = new AttestorSigningService(
registry, registry,

View File

@@ -277,6 +277,7 @@ public sealed class AttestorSubmissionServiceTests
var logger = new NullLogger<AttestorSubmissionService>(); var logger = new NullLogger<AttestorSubmissionService>();
using var metrics = new AttestorMetrics(); using var metrics = new AttestorMetrics();
using StellaOps.TestKit;
var service = new AttestorSubmissionService( var service = new AttestorSubmissionService(
validator, validator,
repository, repository,

View File

@@ -700,6 +700,7 @@ public sealed class AttestorVerificationServiceTests
private static byte[] ComputeMerkleNode(byte[] left, byte[] right) private static byte[] ComputeMerkleNode(byte[] left, byte[] right)
{ {
using var sha = SHA256.Create(); using var sha = SHA256.Create();
using StellaOps.TestKit;
var buffer = new byte[1 + left.Length + right.Length]; var buffer = new byte[1 + left.Length + right.Length];
buffer[0] = 0x01; buffer[0] = 0x01;
Buffer.BlockCopy(left, 0, buffer, 1, left.Length); Buffer.BlockCopy(left, 0, buffer, 1, left.Length);

View File

@@ -24,6 +24,7 @@ public sealed class BulkVerificationWorkerTests
var jobStore = new InMemoryBulkVerificationJobStore(); var jobStore = new InMemoryBulkVerificationJobStore();
var verificationService = new StubVerificationService(); var verificationService = new StubVerificationService();
using var metrics = new AttestorMetrics(); using var metrics = new AttestorMetrics();
using StellaOps.TestKit;
var options = Options.Create(new AttestorOptions var options = Options.Create(new AttestorOptions
{ {
BulkVerification = new AttestorOptions.BulkVerificationOptions BulkVerification = new AttestorOptions.BulkVerificationOptions

View File

@@ -86,6 +86,7 @@ public sealed class CachedAttestorVerificationServiceTests
var options = Options.Create(new AttestorOptions()); var options = Options.Create(new AttestorOptions());
using var memoryCache = new MemoryCache(new MemoryCacheOptions()); using var memoryCache = new MemoryCache(new MemoryCacheOptions());
using var metrics = new AttestorMetrics(); using var metrics = new AttestorMetrics();
using StellaOps.TestKit;
var cache = new InMemoryAttestorVerificationCache(memoryCache, options, new NullLogger<InMemoryAttestorVerificationCache>()); var cache = new InMemoryAttestorVerificationCache(memoryCache, options, new NullLogger<InMemoryAttestorVerificationCache>());
var inner = new StubVerificationService(); var inner = new StubVerificationService();
var service = new CachedAttestorVerificationService( var service = new CachedAttestorVerificationService(

View File

@@ -136,6 +136,7 @@ public sealed class HttpTransparencyWitnessClientTests
using var metrics = new AttestorMetrics(); using var metrics = new AttestorMetrics();
using var activitySource = new AttestorActivitySource(); using var activitySource = new AttestorActivitySource();
using StellaOps.TestKit;
var options = Options.Create(new AttestorOptions var options = Options.Create(new AttestorOptions
{ {
TransparencyWitness = new AttestorOptions.TransparencyWitnessOptions TransparencyWitness = new AttestorOptions.TransparencyWitnessOptions

View File

@@ -309,6 +309,7 @@ public sealed class RekorInclusionVerificationIntegrationTests
private static byte[] ComputeInteriorHash(byte[] left, byte[] right) private static byte[] ComputeInteriorHash(byte[] left, byte[] right)
{ {
using var sha256 = System.Security.Cryptography.SHA256.Create(); using var sha256 = System.Security.Cryptography.SHA256.Create();
using StellaOps.TestKit;
var combined = new byte[1 + left.Length + right.Length]; var combined = new byte[1 + left.Length + right.Length];
combined[0] = 0x01; // Interior node prefix combined[0] = 0x01; // Interior node prefix
left.CopyTo(combined, 1); left.CopyTo(combined, 1);

View File

@@ -328,6 +328,7 @@ public class SigstoreBundleVerifierTests
DateTimeOffset.UtcNow.AddDays(-1), DateTimeOffset.UtcNow.AddDays(-1),
DateTimeOffset.UtcNow.AddYears(1)); DateTimeOffset.UtcNow.AddYears(1));
using StellaOps.TestKit;
return cert.Export(System.Security.Cryptography.X509Certificates.X509ContentType.Cert); return cert.Export(System.Security.Cryptography.X509Certificates.X509ContentType.Cert);
} }
} }

View File

@@ -406,6 +406,7 @@ public class BundleWorkflowIntegrationTests
} }
using var sha256 = System.Security.Cryptography.SHA256.Create(); using var sha256 = System.Security.Cryptography.SHA256.Create();
using StellaOps.TestKit;
var combined = string.Join("|", attestations.Select(a => a.EntryId)); var combined = string.Join("|", attestations.Select(a => a.EntryId));
var hash = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(combined)); var hash = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(combined));
return Convert.ToHexString(hash).ToLowerInvariant(); return Convert.ToHexString(hash).ToLowerInvariant();

View File

@@ -350,6 +350,7 @@ public class FileSystemRootStoreTests : IDisposable
private static X509Certificate2 CreateTestCertificate(string subject) private static X509Certificate2 CreateTestCertificate(string subject)
{ {
using var rsa = RSA.Create(2048); using var rsa = RSA.Create(2048);
using StellaOps.TestKit;
var request = new CertificateRequest( var request = new CertificateRequest(
subject, subject,
rsa, rsa,

View File

@@ -349,6 +349,7 @@ public class OfflineCertChainValidatorTests
private static X509Certificate2 CreateFutureCertificate(string subject) private static X509Certificate2 CreateFutureCertificate(string subject)
{ {
using var rsa = RSA.Create(2048); using var rsa = RSA.Create(2048);
using StellaOps.TestKit;
var request = new CertificateRequest( var request = new CertificateRequest(
subject, subject,
rsa, rsa,

View File

@@ -54,6 +54,7 @@ public sealed class JsonCanonicalizerTests
var output = _canonicalizer.Canonicalize(input); var output = _canonicalizer.Canonicalize(input);
using var document = JsonDocument.Parse(output); using var document = JsonDocument.Parse(output);
using StellaOps.TestKit;
Assert.Equal(text, document.RootElement.GetProperty("text").GetString()); Assert.Equal(text, document.RootElement.GetProperty("text").GetString());
} }

View File

@@ -92,6 +92,7 @@ public sealed class SmartDiffSchemaValidationTests
} }
"""); """);
using StellaOps.TestKit;
var result = schema.Evaluate(doc.RootElement, new EvaluationOptions var result = schema.Evaluate(doc.RootElement, new EvaluationOptions
{ {
OutputFormat = OutputFormat.List, OutputFormat = OutputFormat.List,

View File

@@ -216,6 +216,7 @@ public class ServiceCollectionExtensionsTests
}); });
using var provider = services.BuildServiceProvider(); using var provider = services.BuildServiceProvider();
using StellaOps.TestKit;
var client = provider.GetRequiredService<IHttpClientFactory>().CreateClient("notify"); var client = provider.GetRequiredService<IHttpClientFactory>().CreateClient("notify");
await client.GetAsync("https://notify.example/api"); await client.GetAsync("https://notify.example/api");

View File

@@ -34,6 +34,7 @@ public class ServiceCollectionExtensionsTests
using var provider = services.BuildServiceProvider(); using var provider = services.BuildServiceProvider();
using StellaOps.TestKit;
var resourceOptions = provider.GetRequiredService<IOptionsMonitor<StellaOpsResourceServerOptions>>().CurrentValue; var resourceOptions = provider.GetRequiredService<IOptionsMonitor<StellaOpsResourceServerOptions>>().CurrentValue;
var jwtOptions = provider.GetRequiredService<IOptionsMonitor<JwtBearerOptions>>().Get(StellaOpsAuthenticationDefaults.AuthenticationScheme); var jwtOptions = provider.GetRequiredService<IOptionsMonitor<JwtBearerOptions>>().Get(StellaOpsAuthenticationDefaults.AuthenticationScheme);

View File

@@ -238,6 +238,7 @@ public class StandardPluginRegistrarTests
registrar.Register(new AuthorityPluginRegistrationContext(services, pluginContext, configuration)); registrar.Register(new AuthorityPluginRegistrationContext(services, pluginContext, configuration));
using var provider = services.BuildServiceProvider(); using var provider = services.BuildServiceProvider();
using StellaOps.TestKit;
var optionsMonitor = provider.GetRequiredService<IOptionsMonitor<StandardPluginOptions>>(); var optionsMonitor = provider.GetRequiredService<IOptionsMonitor<StandardPluginOptions>>();
var options = optionsMonitor.Get("standard"); var options = optionsMonitor.Get("standard");

View File

@@ -56,6 +56,7 @@ public sealed class AuthorityMigrationTests
{ {
// Arrange // Arrange
await using var connection = new NpgsqlConnection(_fixture.ConnectionString); await using var connection = new NpgsqlConnection(_fixture.ConnectionString);
using StellaOps.TestKit;
await connection.OpenAsync(); await connection.OpenAsync();
// Act - Check schema_migrations table // Act - Check schema_migrations table

View File

@@ -31,6 +31,7 @@ public sealed class BenchmarkJsonWriterTests
await BenchmarkJsonWriter.WriteAsync(path, metadata, new[] { report }, CancellationToken.None); await BenchmarkJsonWriter.WriteAsync(path, metadata, new[] { report }, CancellationToken.None);
using var document = JsonDocument.Parse(await File.ReadAllTextAsync(path)); using var document = JsonDocument.Parse(await File.ReadAllTextAsync(path));
using StellaOps.TestKit;
var root = document.RootElement; var root = document.RootElement;
Assert.Equal("1.0", root.GetProperty("schemaVersion").GetString()); Assert.Equal("1.0", root.GetProperty("schemaVersion").GetString());

View File

@@ -509,6 +509,7 @@ public class BinaryIdentityDeterminismTests
using var stream1 = new MemoryStream(content1); using var stream1 = new MemoryStream(content1);
using var stream2 = new MemoryStream(content2); using var stream2 = new MemoryStream(content2);
using StellaOps.TestKit;
var identity1 = await extractor.ExtractIdentityAsync(stream1); var identity1 = await extractor.ExtractIdentityAsync(stream1);
var identity2 = await extractor.ExtractIdentityAsync(stream2); var identity2 = await extractor.ExtractIdentityAsync(stream2);

View File

@@ -404,6 +404,7 @@ public sealed class AttestationBundleVerifierTests : IDisposable
{ {
var bytes = Encoding.UTF8.GetBytes(content); var bytes = Encoding.UTF8.GetBytes(content);
using var dataStream = new MemoryStream(bytes); using var dataStream = new MemoryStream(bytes);
using StellaOps.TestKit;
var entry = new PaxTarEntry(TarEntryType.RegularFile, name) var entry = new PaxTarEntry(TarEntryType.RegularFile, name)
{ {
DataStream = dataStream DataStream = dataStream

View File

@@ -73,6 +73,7 @@ public sealed class CccsConnectorTests
public async Task Fetch_PersistsRawDocumentWithMetadata() public async Task Fetch_PersistsRawDocumentWithMetadata()
{ {
await using var harness = await BuildHarnessAsync(); await using var harness = await BuildHarnessAsync();
using StellaOps.TestKit;
SeedFeedResponses(harness.Handler); SeedFeedResponses(harness.Handler);
var connector = harness.ServiceProvider.GetRequiredService<CccsConnector>(); var connector = harness.ServiceProvider.GetRequiredService<CccsConnector>();

View File

@@ -83,6 +83,7 @@ public sealed class CertBundConnectorTests
public async Task Fetch_PersistsDocumentWithMetadata() public async Task Fetch_PersistsDocumentWithMetadata()
{ {
await using var harness = await BuildHarnessAsync(); await using var harness = await BuildHarnessAsync();
using StellaOps.TestKit;
SeedResponses(harness.Handler); SeedResponses(harness.Handler);
var connector = harness.ServiceProvider.GetRequiredService<CertBundConnector>(); var connector = harness.ServiceProvider.GetRequiredService<CertBundConnector>();

View File

@@ -33,6 +33,7 @@ public sealed class AlpineConnectorTests
{ {
await using var harness = await BuildHarnessAsync(); await using var harness = await BuildHarnessAsync();
using StellaOps.TestKit;
harness.Handler.AddJsonResponse(SecDbUri, BuildMinimalSecDb()); harness.Handler.AddJsonResponse(SecDbUri, BuildMinimalSecDb());
var connector = harness.ServiceProvider.GetRequiredService<AlpineConnector>(); var connector = harness.ServiceProvider.GetRequiredService<AlpineConnector>();

View File

@@ -44,6 +44,7 @@ public sealed class AlpineDependencyInjectionRoutineTests
using var provider = services.BuildServiceProvider(validateScopes: true); using var provider = services.BuildServiceProvider(validateScopes: true);
using StellaOps.TestKit;
var options = provider.GetRequiredService<IOptions<AlpineOptions>>().Value; var options = provider.GetRequiredService<IOptions<AlpineOptions>>().Value;
Assert.Equal(new Uri("https://secdb.alpinelinux.org/"), options.BaseUri); Assert.Equal(new Uri("https://secdb.alpinelinux.org/"), options.BaseUri);
Assert.Equal(new[] { "v3.20" }, options.Releases); Assert.Equal(new[] { "v3.20" }, options.Releases);

View File

@@ -73,6 +73,7 @@ public sealed class DebianConnectorTests : IAsyncLifetime
{ {
await using var provider = await BuildServiceProviderAsync(); await using var provider = await BuildServiceProviderAsync();
using StellaOps.TestKit;
SeedInitialResponses(); SeedInitialResponses();
var connector = provider.GetRequiredService<DebianConnector>(); var connector = provider.GetRequiredService<DebianConnector>();

View File

@@ -43,6 +43,7 @@ public sealed class SuseConnectorTests
{ {
await using var harness = await BuildHarnessAsync(); await using var harness = await BuildHarnessAsync();
using StellaOps.TestKit;
SeedInitialResponses(harness.Handler); SeedInitialResponses(harness.Handler);
var connector = harness.ServiceProvider.GetRequiredService<SuseConnector>(); var connector = harness.ServiceProvider.GetRequiredService<SuseConnector>();

View File

@@ -42,6 +42,7 @@ public sealed class UbuntuConnectorTests
{ {
await using var harness = await BuildHarnessAsync(); await using var harness = await BuildHarnessAsync();
using StellaOps.TestKit;
SeedInitialResponses(harness.Handler); SeedInitialResponses(harness.Handler);
var connector = harness.ServiceProvider.GetRequiredService<UbuntuConnector>(); var connector = harness.ServiceProvider.GetRequiredService<UbuntuConnector>();

View File

@@ -34,6 +34,7 @@ public sealed class IcsCisaConnectorTests
public async Task FetchParseMap_EndToEnd_ProducesCanonicalAdvisories() public async Task FetchParseMap_EndToEnd_ProducesCanonicalAdvisories()
{ {
await using var harness = await BuildHarnessAsync(); await using var harness = await BuildHarnessAsync();
using StellaOps.TestKit;
RegisterResponses(harness.Handler); RegisterResponses(harness.Handler);
var connector = harness.ServiceProvider.GetRequiredService<IcsCisaConnector>(); var connector = harness.ServiceProvider.GetRequiredService<IcsCisaConnector>();

View File

@@ -351,6 +351,7 @@ public sealed class KisaConnectorTests : IAsyncLifetime
using var metrics = new KisaMetricCollector(); using var metrics = new KisaMetricCollector();
using StellaOps.TestKit;
var connector = provider.GetRequiredService<KisaConnector>(); var connector = provider.GetRequiredService<KisaConnector>();
await connector.FetchAsync(provider, CancellationToken.None); await connector.FetchAsync(provider, CancellationToken.None);
await connector.ParseAsync(provider, CancellationToken.None); await connector.ParseAsync(provider, CancellationToken.None);

View File

@@ -264,6 +264,7 @@ public sealed class RuBduConnectorSnapshotTests : IAsyncLifetime
entry.LastWriteTime = new DateTimeOffset(2025, 10, 14, 9, 0, 0, TimeSpan.Zero); entry.LastWriteTime = new DateTimeOffset(2025, 10, 14, 9, 0, 0, TimeSpan.Zero);
using var entryStream = entry.Open(); using var entryStream = entry.Open();
using var writer = new StreamWriter(entryStream, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false)); using var writer = new StreamWriter(entryStream, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
using StellaOps.TestKit;
writer.Write(xml); writer.Write(xml);
} }

View File

@@ -88,6 +88,7 @@ public sealed class RuNkckiConnectorTests : IAsyncLifetime
public async Task Fetch_ReusesCachedBulletinWhenListingFails() public async Task Fetch_ReusesCachedBulletinWhenListingFails()
{ {
await using var provider = await BuildServiceProviderAsync(); await using var provider = await BuildServiceProviderAsync();
using StellaOps.TestKit;
SeedListingAndBulletin(); SeedListingAndBulletin();
var connector = provider.GetRequiredService<RuNkckiConnector>(); var connector = provider.GetRequiredService<RuNkckiConnector>();

View File

@@ -43,6 +43,7 @@ public sealed class RuNkckiJsonParserTests
"""; """;
using var document = JsonDocument.Parse(json); using var document = JsonDocument.Parse(json);
using StellaOps.TestKit;
var dto = RuNkckiJsonParser.Parse(document.RootElement); var dto = RuNkckiJsonParser.Parse(document.RootElement);
Assert.Equal("BDU:2025-00001", dto.FstecId); Assert.Equal("BDU:2025-00001", dto.FstecId);

View File

@@ -145,6 +145,7 @@ public sealed class MirrorSignatureVerifierTests
private static string WritePublicKeyPem(CryptoSigningKey signingKey) private static string WritePublicKeyPem(CryptoSigningKey signingKey)
{ {
using var ecdsa = ECDsa.Create(signingKey.PublicParameters); using var ecdsa = ECDsa.Create(signingKey.PublicParameters);
using StellaOps.TestKit;
var info = ecdsa.ExportSubjectPublicKeyInfo(); var info = ecdsa.ExportSubjectPublicKeyInfo();
var pem = PemEncoding.Write("PUBLIC KEY", info); var pem = PemEncoding.Write("PUBLIC KEY", info);
var path = Path.Combine(Path.GetTempPath(), $"stellaops-mirror-{Guid.NewGuid():N}.pem"); var path = Path.Combine(Path.GetTempPath(), $"stellaops-mirror-{Guid.NewGuid():N}.pem");

View File

@@ -427,6 +427,7 @@ public sealed class StellaOpsMirrorConnectorTests : IAsyncLifetime
ArgumentNullException.ThrowIfNull(signingKey); ArgumentNullException.ThrowIfNull(signingKey);
var path = Path.Combine(Path.GetTempPath(), $"stellaops-mirror-{Guid.NewGuid():N}.pem"); var path = Path.Combine(Path.GetTempPath(), $"stellaops-mirror-{Guid.NewGuid():N}.pem");
using var ecdsa = ECDsa.Create(signingKey.PublicParameters); using var ecdsa = ECDsa.Create(signingKey.PublicParameters);
using StellaOps.TestKit;
var publicKeyInfo = ecdsa.ExportSubjectPublicKeyInfo(); var publicKeyInfo = ecdsa.ExportSubjectPublicKeyInfo();
var pem = PemEncoding.Write("PUBLIC KEY", publicKeyInfo); var pem = PemEncoding.Write("PUBLIC KEY", publicKeyInfo);
File.WriteAllText(path, pem); File.WriteAllText(path, pem);

View File

@@ -50,6 +50,7 @@ public sealed class MsrcConnectorTests : IAsyncLifetime
public async Task FetchParseMap_ProducesCanonicalAdvisory() public async Task FetchParseMap_ProducesCanonicalAdvisory()
{ {
await using var provider = await BuildServiceProviderAsync(); await using var provider = await BuildServiceProviderAsync();
using StellaOps.TestKit;
SeedResponses(); SeedResponses();
var connector = provider.GetRequiredService<MsrcConnector>(); var connector = provider.GetRequiredService<MsrcConnector>();

View File

@@ -270,6 +270,7 @@ public sealed class JobCoordinatorTests
jobOptions.Definitions.Add(definition.Kind, definition); jobOptions.Definitions.Add(definition.Kind, definition);
using var diagnostics = new JobDiagnostics(); using var diagnostics = new JobDiagnostics();
using StellaOps.TestKit;
var coordinator = new JobCoordinator( var coordinator = new JobCoordinator(
Options.Create(jobOptions), Options.Create(jobOptions),
jobStore, jobStore,

View File

@@ -51,6 +51,7 @@ public sealed class JobPluginRegistrationExtensionsTests
descriptor => descriptor.ServiceType.FullName == typeof(PluginRoutineExecuted).FullName); descriptor => descriptor.ServiceType.FullName == typeof(PluginRoutineExecuted).FullName);
using var provider = services.BuildServiceProvider(); using var provider = services.BuildServiceProvider();
using StellaOps.TestKit;
var schedulerOptions = provider.GetRequiredService<IOptions<JobSchedulerOptions>>().Value; var schedulerOptions = provider.GetRequiredService<IOptions<JobSchedulerOptions>>().Value;
Assert.True(schedulerOptions.Definitions.TryGetValue(PluginJob.JobKind, out var definition)); Assert.True(schedulerOptions.Definitions.TryGetValue(PluginJob.JobKind, out var definition));

View File

@@ -49,6 +49,7 @@ public sealed class JobSchedulerBuilderTests
builder.AddJob<DefaultedJob>(kind: "jobs:defaults"); builder.AddJob<DefaultedJob>(kind: "jobs:defaults");
using var provider = services.BuildServiceProvider(); using var provider = services.BuildServiceProvider();
using StellaOps.TestKit;
var options = provider.GetRequiredService<IOptions<JobSchedulerOptions>>().Value; var options = provider.GetRequiredService<IOptions<JobSchedulerOptions>>().Value;
Assert.True(options.Definitions.TryGetValue("jobs:defaults", out var definition)); Assert.True(options.Definitions.TryGetValue("jobs:defaults", out var definition));

View File

@@ -44,6 +44,7 @@ public sealed class JsonExporterDependencyInjectionRoutineTests
routine.Register(services, configuration); routine.Register(services, configuration);
using var provider = services.BuildServiceProvider(); using var provider = services.BuildServiceProvider();
using StellaOps.TestKit;
var optionsAccessor = provider.GetRequiredService<IOptions<JobSchedulerOptions>>(); var optionsAccessor = provider.GetRequiredService<IOptions<JobSchedulerOptions>>();
var options = optionsAccessor.Value; var options = optionsAccessor.Value;

View File

@@ -433,6 +433,7 @@ public sealed class JsonFeedExporterTests : IDisposable
private static string WriteSigningKey(string directory) private static string WriteSigningKey(string directory)
{ {
using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP256); using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP256);
using StellaOps.TestKit;
var pkcs8 = ecdsa.ExportPkcs8PrivateKey(); var pkcs8 = ecdsa.ExportPkcs8PrivateKey();
var pem = BuildPem("PRIVATE KEY", pkcs8); var pem = BuildPem("PRIVATE KEY", pkcs8);
var path = Path.Combine(directory, $"mirror-key-{Guid.NewGuid():N}.pem"); var path = Path.Combine(directory, $"mirror-key-{Guid.NewGuid():N}.pem");

View File

@@ -1198,6 +1198,7 @@ public sealed class TrivyDbFeedExporterTests : IDisposable
var archivePath = Path.Combine(workingDirectory, "db.tar.gz"); var archivePath = Path.Combine(workingDirectory, "db.tar.gz");
File.WriteAllBytes(archivePath, _payload); File.WriteAllBytes(archivePath, _payload);
using var sha256 = SHA256.Create(); using var sha256 = SHA256.Create();
using StellaOps.TestKit;
var digest = "sha256:" + Convert.ToHexString(sha256.ComputeHash(_payload)).ToLowerInvariant(); var digest = "sha256:" + Convert.ToHexString(sha256.ComputeHash(_payload)).ToLowerInvariant();
return Task.FromResult(new TrivyDbBuilderResult( return Task.FromResult(new TrivyDbBuilderResult(

View File

@@ -498,6 +498,7 @@ public sealed class AdvisoryPrecedenceMergerTests
var logger = new TestLogger<AdvisoryPrecedenceMerger>(); var logger = new TestLogger<AdvisoryPrecedenceMerger>();
using var metrics = new MetricCollector("StellaOps.Concelier.Merge"); using var metrics = new MetricCollector("StellaOps.Concelier.Merge");
using StellaOps.TestKit;
var merger = new AdvisoryPrecedenceMerger( var merger = new AdvisoryPrecedenceMerger(
new AffectedPackagePrecedenceResolver(), new AffectedPackagePrecedenceResolver(),
options, options,

View File

@@ -130,6 +130,7 @@ public sealed class CanonicalJsonSerializerTests
var json = CanonicalJsonSerializer.Serialize(advisory); var json = CanonicalJsonSerializer.Serialize(advisory);
using var document = JsonDocument.Parse(json); using var document = JsonDocument.Parse(json);
using StellaOps.TestKit;
var rangeElement = document.RootElement var rangeElement = document.RootElement
.GetProperty("affectedPackages")[0] .GetProperty("affectedPackages")[0]
.GetProperty("versionRanges")[0]; .GetProperty("versionRanges")[0];

View File

@@ -56,6 +56,7 @@ public sealed class OsvGhsaParityDiagnosticsTests
var measurements = new List<(string Instrument, long Value, IReadOnlyDictionary<string, object?> Tags)>(); var measurements = new List<(string Instrument, long Value, IReadOnlyDictionary<string, object?> Tags)>();
using var listener = CreateListener(measurements); using var listener = CreateListener(measurements);
using StellaOps.TestKit;
OsvGhsaParityDiagnostics.RecordReport(report, ""); OsvGhsaParityDiagnostics.RecordReport(report, "");
listener.Dispose(); listener.Dispose();

View File

@@ -114,6 +114,7 @@ public sealed class ProvenanceDiagnosticsTests
var measurements = new List<(string Instrument, long Value, IReadOnlyDictionary<string, object?> Tags)>(); var measurements = new List<(string Instrument, long Value, IReadOnlyDictionary<string, object?> Tags)>();
using var listener = CreateListener(measurements, "concelier.range.primitives"); using var listener = CreateListener(measurements, "concelier.range.primitives");
using StellaOps.TestKit;
ProvenanceDiagnostics.RecordRangePrimitive("source-D", range); ProvenanceDiagnostics.RecordRangePrimitive("source-D", range);
listener.Dispose(); listener.Dispose();

View File

@@ -508,6 +508,7 @@ public class SbomParserTests
using var stream = new MemoryStream(Encoding.UTF8.GetBytes(content)); using var stream = new MemoryStream(Encoding.UTF8.GetBytes(content));
using StellaOps.TestKit;
// Act // Act
var result = await _parser.ParseAsync(stream, SbomFormat.CycloneDX); var result = await _parser.ParseAsync(stream, SbomFormat.CycloneDX);

View File

@@ -25,6 +25,7 @@ public class ConcelierTimelineCursorTests : IClassFixture<WebApplicationFactory<
client.DefaultRequestHeaders.Add("X-Stella-Tenant", "tenant-a"); client.DefaultRequestHeaders.Add("X-Stella-Tenant", "tenant-a");
using var request = new HttpRequestMessage(HttpMethod.Get, "/obs/concelier/timeline?cursor=5&limit=2"); using var request = new HttpRequestMessage(HttpMethod.Get, "/obs/concelier/timeline?cursor=5&limit=2");
using StellaOps.TestKit;
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/event-stream")); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/event-stream"));
var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

View File

@@ -43,6 +43,7 @@ public class ConcelierTimelineEndpointTests : IClassFixture<WebApplicationFactor
var stream = await response.Content.ReadAsStreamAsync(); var stream = await response.Content.ReadAsStreamAsync();
using var reader = new StreamReader(stream); using var reader = new StreamReader(stream);
using StellaOps.TestKit;
var firstLine = await reader.ReadLineAsync(); var firstLine = await reader.ReadLineAsync();
firstLine.Should().NotBeNull(); firstLine.Should().NotBeNull();
firstLine!.Should().StartWith("event: ingest.update"); firstLine!.Should().StartWith("event: ingest.update");

View File

@@ -69,6 +69,7 @@ public sealed class VulnExplorerTelemetryTests : IDisposable
public void IsWithdrawn_DetectsWithdrawnFlagsAndTimestamps() public void IsWithdrawn_DetectsWithdrawnFlagsAndTimestamps()
{ {
using var json = JsonDocument.Parse("{\"withdrawn\":true,\"withdrawn_at\":\"2024-10-10T00:00:00Z\"}"); using var json = JsonDocument.Parse("{\"withdrawn\":true,\"withdrawn_at\":\"2024-10-10T00:00:00Z\"}");
using StellaOps.TestKit;
Assert.True(VulnExplorerTelemetry.IsWithdrawn(json.RootElement)); Assert.True(VulnExplorerTelemetry.IsWithdrawn(json.RootElement));
} }

View File

@@ -101,6 +101,7 @@ public sealed class DatabaseMigrationTests : IAsyncLifetime
Assert.Equal(0, otherVisible); Assert.Equal(0, otherVisible);
await using var violationConnection = await _dataSource.OpenConnectionAsync(tenant, cancellationToken); await using var violationConnection = await _dataSource.OpenConnectionAsync(tenant, cancellationToken);
using StellaOps.TestKit;
await using var violationCommand = new NpgsqlCommand(@" await using var violationCommand = new NpgsqlCommand(@"
INSERT INTO evidence_locker.evidence_bundles INSERT INTO evidence_locker.evidence_bundles
(bundle_id, tenant_id, kind, status, root_hash, storage_key) (bundle_id, tenant_id, kind, status, root_hash, storage_key)

View File

@@ -443,6 +443,7 @@ public sealed class EvidenceBundlePackagingServiceTests
{ {
Stored = true; Stored = true;
using var memory = new MemoryStream(); using var memory = new MemoryStream();
using StellaOps.TestKit;
content.CopyTo(memory); content.CopyTo(memory);
StoredBytes = memory.ToArray(); StoredBytes = memory.ToArray();

View File

@@ -395,6 +395,7 @@ public sealed class EvidenceLockerIntegrationTests : IDisposable
if (entry.DataStream is not null) if (entry.DataStream is not null)
{ {
using var contentStream = new MemoryStream(); using var contentStream = new MemoryStream();
using StellaOps.TestKit;
entry.DataStream.CopyTo(contentStream); entry.DataStream.CopyTo(contentStream);
entries[entry.Name] = Encoding.UTF8.GetString(contentStream.ToArray()); entries[entry.Name] = Encoding.UTF8.GetString(contentStream.ToArray());
} }

View File

@@ -99,6 +99,7 @@ public sealed class EvidenceLockerWebServiceContractTests : IDisposable
var content = await response.Content.ReadAsStringAsync(TestContext.Current.CancellationToken); var content = await response.Content.ReadAsStringAsync(TestContext.Current.CancellationToken);
using var doc = JsonDocument.Parse(content); using var doc = JsonDocument.Parse(content);
using StellaOps.TestKit;
var root = doc.RootElement; var root = doc.RootElement;
// Verify contract schema for retrieved bundle // Verify contract schema for retrieved bundle

View File

@@ -347,6 +347,7 @@ public sealed class EvidenceLockerWebServiceTests
} }
using var entryStream = new MemoryStream(); using var entryStream = new MemoryStream();
using StellaOps.TestKit;
entry.DataStream!.CopyTo(entryStream); entry.DataStream!.CopyTo(entryStream);
var content = Encoding.UTF8.GetString(entryStream.ToArray()); var content = Encoding.UTF8.GetString(entryStream.ToArray());
entries[entry.Name] = content; entries[entry.Name] = content;

View File

@@ -337,6 +337,7 @@ public sealed class EvidencePortableBundleServiceTests
{ {
Stored = true; Stored = true;
using var memory = new MemoryStream(); using var memory = new MemoryStream();
using StellaOps.TestKit;
content.CopyTo(memory); content.CopyTo(memory);
StoredBytes = memory.ToArray(); StoredBytes = memory.ToArray();

View File

@@ -200,6 +200,7 @@ public sealed class EvidenceSignatureServiceTests
private static SigningKeyMaterialOptions CreateKeyMaterial() private static SigningKeyMaterialOptions CreateKeyMaterial()
{ {
using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP256); using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP256);
using StellaOps.TestKit;
var privatePem = ecdsa.ExportECPrivateKeyPem(); var privatePem = ecdsa.ExportECPrivateKeyPem();
var publicPem = ecdsa.ExportSubjectPublicKeyInfoPem(); var publicPem = ecdsa.ExportSubjectPublicKeyInfoPem();
return new SigningKeyMaterialOptions return new SigningKeyMaterialOptions

View File

@@ -477,6 +477,7 @@ public sealed class EvidenceSnapshotServiceTests
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
using var memory = new MemoryStream(); using var memory = new MemoryStream();
using StellaOps.TestKit;
content.CopyTo(memory); content.CopyTo(memory);
var bytes = memory.ToArray(); var bytes = memory.ToArray();

View File

@@ -45,6 +45,7 @@ public sealed class FileSystemEvidenceObjectStoreTests : IDisposable
var firstMetadata = await store.StoreAsync(first, options, cancellationToken); var firstMetadata = await store.StoreAsync(first, options, cancellationToken);
using var second = CreateStream("payload-1"); using var second = CreateStream("payload-1");
using StellaOps.TestKit;
var secondMetadata = await store.StoreAsync(second, options, cancellationToken); var secondMetadata = await store.StoreAsync(second, options, cancellationToken);
Assert.Equal(firstMetadata.Sha256, secondMetadata.Sha256); Assert.Equal(firstMetadata.Sha256, secondMetadata.Sha256);

View File

@@ -77,6 +77,7 @@ public sealed class GoldenFixturesTests
private static JsonElement ReadJson(string path) private static JsonElement ReadJson(string path)
{ {
using var doc = JsonDocument.Parse(File.ReadAllText(path), new JsonDocumentOptions { AllowTrailingCommas = true }); using var doc = JsonDocument.Parse(File.ReadAllText(path), new JsonDocumentOptions { AllowTrailingCommas = true });
using StellaOps.TestKit;
return doc.RootElement.Clone(); return doc.RootElement.Clone();
} }
} }

View File

@@ -116,6 +116,7 @@ public sealed class S3EvidenceObjectStoreTests
var ifNoneMatch = request.Headers?["If-None-Match"]; var ifNoneMatch = request.Headers?["If-None-Match"];
using var memory = new MemoryStream(); using var memory = new MemoryStream();
using StellaOps.TestKit;
request.InputStream.CopyTo(memory); request.InputStream.CopyTo(memory);
PutRequests.Add(new CapturedPutObjectRequest( PutRequests.Add(new CapturedPutObjectRequest(

View File

@@ -125,6 +125,7 @@ public sealed class TimelineIndexerEvidenceTimelinePublisherTests
Assert.Equal(HttpMethod.Post, request.Method); Assert.Equal(HttpMethod.Post, request.Method);
using var json = JsonDocument.Parse(request.Content!); using var json = JsonDocument.Parse(request.Content!);
using StellaOps.TestKit;
var root = json.RootElement; var root = json.RootElement;
Assert.Equal("evidence.hold.created", root.GetProperty("kind").GetString()); Assert.Equal("evidence.hold.created", root.GetProperty("kind").GetString());
Assert.Equal(hold.CaseId, root.GetProperty("attributes").GetProperty("caseId").GetString()); Assert.Equal(hold.CaseId, root.GetProperty("attributes").GetProperty("caseId").GetString());

View File

@@ -35,6 +35,7 @@ public sealed class S3ArtifactClientTests
var client = new S3ArtifactClient(mock.Object, Microsoft.Extensions.Logging.Abstractions.NullLogger<S3ArtifactClient>.Instance); var client = new S3ArtifactClient(mock.Object, Microsoft.Extensions.Logging.Abstractions.NullLogger<S3ArtifactClient>.Instance);
using var stream = new MemoryStream(new byte[] { 1, 2, 3 }); using var stream = new MemoryStream(new byte[] { 1, 2, 3 });
using StellaOps.TestKit;
await client.PutObjectAsync("bucket", "key", stream, new Dictionary<string, string> { ["a"] = "b" }, default); await client.PutObjectAsync("bucket", "key", stream, new Dictionary<string, string> { ["a"] = "b" }, default);
mock.Verify(x => x.PutObjectAsync(It.Is<PutObjectRequest>(r => r.Metadata["a"] == "b"), default), Times.Once); mock.Verify(x => x.PutObjectAsync(It.Is<PutObjectRequest>(r => r.Metadata["a"] == "b"), default), Times.Once);

View File

@@ -92,6 +92,7 @@ public sealed class VexPolicyBinderTests
public void Bind_Stream_SupportsEncoding() public void Bind_Stream_SupportsEncoding()
{ {
using var stream = new MemoryStream(Encoding.UTF8.GetBytes(JsonPolicy)); using var stream = new MemoryStream(Encoding.UTF8.GetBytes(JsonPolicy));
using StellaOps.TestKit;
var result = VexPolicyBinder.Bind(stream, VexPolicyDocumentFormat.Json); var result = VexPolicyBinder.Bind(stream, VexPolicyDocumentFormat.Json);
Assert.True(result.Success); Assert.True(result.Success);

View File

@@ -79,6 +79,7 @@ public class VexPolicyDiagnosticsTests
public void PolicyProvider_ComputesRevisionAndDigest_AndEmitsTelemetry() public void PolicyProvider_ComputesRevisionAndDigest_AndEmitsTelemetry()
{ {
using var listener = new MeterListener(); using var listener = new MeterListener();
using StellaOps.TestKit;
var reloadMeasurements = 0; var reloadMeasurements = 0;
string? lastRevision = null; string? lastRevision = null;
listener.InstrumentPublished += (instrument, _) => listener.InstrumentPublished += (instrument, _) =>

View File

@@ -289,6 +289,7 @@ public sealed class MirrorBundlePublisherTests
private static string ComputeSha256(byte[] bytes) private static string ComputeSha256(byte[] bytes)
{ {
using var sha = SHA256.Create(); using var sha = SHA256.Create();
using StellaOps.TestKit;
var digest = sha.ComputeHash(bytes); var digest = sha.ComputeHash(bytes);
return "sha256:" + Convert.ToHexString(digest).ToLowerInvariant(); return "sha256:" + Convert.ToHexString(digest).ToLowerInvariant();
} }

View File

@@ -38,6 +38,7 @@ public sealed class OfflineBundleArtifactStoreTests
Assert.True(fs.FileExists(manifestPath)); Assert.True(fs.FileExists(manifestPath));
await using var manifestStream = fs.File.OpenRead(manifestPath); await using var manifestStream = fs.File.OpenRead(manifestPath);
using var document = await JsonDocument.ParseAsync(manifestStream); using var document = await JsonDocument.ParseAsync(manifestStream);
using StellaOps.TestKit;
var artifacts = document.RootElement.GetProperty("artifacts"); var artifacts = document.RootElement.GetProperty("artifacts");
Assert.True(artifacts.GetArrayLength() >= 1); Assert.True(artifacts.GetArrayLength() >= 1);
var first = artifacts.EnumerateArray().First(); var first = artifacts.EnumerateArray().First();

View File

@@ -71,6 +71,7 @@ public sealed class S3ArtifactStoreTests
public Task PutObjectAsync(string bucketName, string key, Stream content, IDictionary<string, string> metadata, CancellationToken cancellationToken) public Task PutObjectAsync(string bucketName, string key, Stream content, IDictionary<string, string> metadata, CancellationToken cancellationToken)
{ {
using var ms = new MemoryStream(); using var ms = new MemoryStream();
using StellaOps.TestKit;
content.CopyTo(ms); content.CopyTo(ms);
var bytes = ms.ToArray(); var bytes = ms.ToArray();
PutCalls.GetOrAdd(bucketName, _ => new List<S3Entry>()).Add(new S3Entry(key, bytes, new Dictionary<string, string>(metadata))); PutCalls.GetOrAdd(bucketName, _ => new List<S3Entry>()).Add(new S3Entry(key, bytes, new Dictionary<string, string>(metadata)));

View File

@@ -60,6 +60,7 @@ public sealed class CsafExporterTests
stream.Position = 0; stream.Position = 0;
using var document = JsonDocument.Parse(stream); using var document = JsonDocument.Parse(stream);
using StellaOps.TestKit;
var root = document.RootElement; var root = document.RootElement;
root.GetProperty("document").GetProperty("tracking").GetProperty("id").GetString()!.Should().StartWith("stellaops:csaf"); root.GetProperty("document").GetProperty("tracking").GetProperty("id").GetString()!.Should().StartWith("stellaops:csaf");

View File

@@ -44,6 +44,7 @@ public sealed class CycloneDxExporterTests
stream.Position = 0; stream.Position = 0;
using var document = JsonDocument.Parse(stream); using var document = JsonDocument.Parse(stream);
using StellaOps.TestKit;
var root = document.RootElement; var root = document.RootElement;
root.GetProperty("bomFormat").GetString().Should().Be("CycloneDX"); root.GetProperty("bomFormat").GetString().Should().Be("CycloneDX");

View File

@@ -38,6 +38,7 @@ public sealed class OpenVexExporterTests
stream.Position = 0; stream.Position = 0;
using var document = JsonDocument.Parse(stream); using var document = JsonDocument.Parse(stream);
using StellaOps.TestKit;
var root = document.RootElement; var root = document.RootElement;
root.GetProperty("document").GetProperty("author").GetString().Should().Be("StellaOps Excititor"); root.GetProperty("document").GetProperty("author").GetString().Should().Be("StellaOps Excititor");
root.GetProperty("statements").GetArrayLength().Should().Be(1); root.GetProperty("statements").GetArrayLength().Should().Be(1);

View File

@@ -50,6 +50,7 @@ public sealed class PostgresAppendOnlyLinksetStoreTests : IAsyncLifetime
if (stream is not null) if (stream is not null)
{ {
using var reader = new StreamReader(stream); using var reader = new StreamReader(stream);
using StellaOps.TestKit;
var sql = await reader.ReadToEndAsync(); var sql = await reader.ReadToEndAsync();
await _fixture.Fixture.ExecuteSqlAsync(sql); await _fixture.Fixture.ExecuteSqlAsync(sql);
} }

View File

@@ -107,6 +107,7 @@ public class AirgapImportEndpointTests
}); });
using var client = factory.CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false }); using var client = factory.CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false });
using StellaOps.TestKit;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "vex.admin"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "vex.admin");
var request = new AirgapImportRequest var request = new AirgapImportRequest

View File

@@ -64,6 +64,7 @@ public class AirgapSignerTrustServiceTests
public void Validate_Allows_On_Metadata_Match() public void Validate_Allows_On_Metadata_Match()
{ {
using var temp = ConnectorMetadataTempFile(); using var temp = ConnectorMetadataTempFile();
using StellaOps.TestKit;
Environment.SetEnvironmentVariable("STELLAOPS_CONNECTOR_SIGNER_METADATA_PATH", temp.Path); Environment.SetEnvironmentVariable("STELLAOPS_CONNECTOR_SIGNER_METADATA_PATH", temp.Path);
var service = new AirgapSignerTrustService(NullLogger<AirgapSignerTrustService>.Instance); var service = new AirgapSignerTrustService(NullLogger<AirgapSignerTrustService>.Instance);

View File

@@ -65,6 +65,7 @@ public sealed class AttestationVerifyEndpointTests
{ {
using var factory = new TestWebApplicationFactory( using var factory = new TestWebApplicationFactory(
configureServices: services => TestServiceOverrides.Apply(services)); configureServices: services => TestServiceOverrides.Apply(services));
using StellaOps.TestKit;
var client = factory.CreateClient(); var client = factory.CreateClient();
var request = new AttestationVerifyRequest var request = new AttestationVerifyRequest

View File

@@ -99,6 +99,7 @@ public sealed class EvidenceLockerEndpointTests : IAsyncLifetime
await _stubStore.SaveAsync(record, CancellationToken.None); await _stubStore.SaveAsync(record, CancellationToken.None);
using var client = _factory.WithWebHostBuilder(_ => { }).CreateClient(); using var client = _factory.WithWebHostBuilder(_ => { }).CreateClient();
using StellaOps.TestKit;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "vex.read"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "vex.read");
var response = await client.GetAsync($"/evidence/vex/locker/{record.BundleId}/manifest/file"); var response = await client.GetAsync($"/evidence/vex/locker/{record.BundleId}/manifest/file");

View File

@@ -43,6 +43,7 @@ public sealed class EvidenceTelemetryTests
using var listener = CreateListener((instrument, value, tags) => using var listener = CreateListener((instrument, value, tags) =>
{ {
measurements.Add((instrument.Name, value, tags.ToArray())); measurements.Add((instrument.Name, value, tags.ToArray()));
using StellaOps.TestKit;
}); });
var now = DateTimeOffset.UtcNow; var now = DateTimeOffset.UtcNow;

View File

@@ -202,6 +202,7 @@ public sealed class IngestEndpointsTests
Assert.Equal(TimeSpan.FromDays(2), _orchestrator.LastReconcileOptions?.MaxAge); Assert.Equal(TimeSpan.FromDays(2), _orchestrator.LastReconcileOptions?.MaxAge);
using var document = JsonDocument.Parse(JsonSerializer.Serialize(ok.Value)); using var document = JsonDocument.Parse(JsonSerializer.Serialize(ok.Value));
using StellaOps.TestKit;
Assert.Equal("reconciled", document.RootElement.GetProperty("providers")[0].GetProperty("action").GetString()); Assert.Equal("reconciled", document.RootElement.GetProperty("providers")[0].GetProperty("action").GetString());
} }

View File

@@ -79,6 +79,7 @@ public sealed class MirrorEndpointsTests : IDisposable
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
using var document = JsonDocument.Parse(await response.Content.ReadAsStringAsync()); using var document = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
using StellaOps.TestKit;
var exports = document.RootElement.GetProperty("exports"); var exports = document.RootElement.GetProperty("exports");
Assert.Equal(1, exports.GetArrayLength()); Assert.Equal(1, exports.GetArrayLength());
var entry = exports[0]; var entry = exports[0];

View File

@@ -90,6 +90,7 @@ public sealed class ObservabilityEndpointTests : IDisposable
private void SeedDatabase() private void SeedDatabase()
{ {
using var scope = _factory.Services.CreateScope(); using var scope = _factory.Services.CreateScope();
using StellaOps.TestKit;
var rawStore = scope.ServiceProvider.GetRequiredService<IVexRawStore>(); var rawStore = scope.ServiceProvider.GetRequiredService<IVexRawStore>();
var linksetStore = scope.ServiceProvider.GetRequiredService<IAppendOnlyLinksetStore>(); var linksetStore = scope.ServiceProvider.GetRequiredService<IAppendOnlyLinksetStore>();
var providerStore = scope.ServiceProvider.GetRequiredService<IVexProviderStore>(); var providerStore = scope.ServiceProvider.GetRequiredService<IVexProviderStore>();

View File

@@ -27,6 +27,7 @@ public sealed class PolicyEndpointsTests
}); });
using var client = factory.CreateClient(new() { AllowAutoRedirect = false }); using var client = factory.CreateClient(new() { AllowAutoRedirect = false });
using StellaOps.TestKit;
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "vex.read"); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "vex.read");
client.DefaultRequestHeaders.Add("X-Stella-Tenant", "test"); client.DefaultRequestHeaders.Add("X-Stella-Tenant", "test");

View File

@@ -157,6 +157,7 @@ public sealed class ResolveEndpointTests : IDisposable
private async Task SeedClaimAsync(string vulnerabilityId, string productKey, string providerId) private async Task SeedClaimAsync(string vulnerabilityId, string productKey, string providerId)
{ {
await using var scope = _factory.Services.CreateAsyncScope(); await using var scope = _factory.Services.CreateAsyncScope();
using StellaOps.TestKit;
var store = scope.ServiceProvider.GetRequiredService<IVexClaimStore>(); var store = scope.ServiceProvider.GetRequiredService<IVexClaimStore>();
var timeProvider = scope.ServiceProvider.GetRequiredService<TimeProvider>(); var timeProvider = scope.ServiceProvider.GetRequiredService<TimeProvider>();
var observedAt = timeProvider.GetUtcNow(); var observedAt = timeProvider.GetUtcNow();

View File

@@ -141,6 +141,7 @@ public sealed class RiskFeedEndpointsTests
}); });
using var client = factory.CreateClient(new() { AllowAutoRedirect = false }); using var client = factory.CreateClient(new() { AllowAutoRedirect = false });
using StellaOps.TestKit;
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "vex.read"); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "vex.read");
client.DefaultRequestHeaders.Add("X-Stella-Tenant", TestTenant); client.DefaultRequestHeaders.Add("X-Stella-Tenant", TestTenant);

View File

@@ -38,6 +38,7 @@ public sealed class VexAttestationLinkEndpointTests : IDisposable
public async Task GetAttestationLink_ReturnsServiceUnavailable() public async Task GetAttestationLink_ReturnsServiceUnavailable()
{ {
using var client = _factory.CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false }); using var client = _factory.CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false });
using StellaOps.TestKit;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "vex.read"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "vex.read");
var response = await client.GetAsync("/v1/vex/attestations/att-123"); var response = await client.GetAsync("/v1/vex/attestations/att-123");

View File

@@ -57,6 +57,7 @@ public sealed class VexEvidenceChunksEndpointTests : IDisposable
public async Task ChunksEndpoint_ReportsMigrationStatusHeaders() public async Task ChunksEndpoint_ReportsMigrationStatusHeaders()
{ {
using var client = _factory.CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false }); using var client = _factory.CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false });
using StellaOps.TestKit;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "vex.read"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "vex.read");
client.DefaultRequestHeaders.Add("X-Stella-Tenant", "tests"); client.DefaultRequestHeaders.Add("X-Stella-Tenant", "tests");

Some files were not shown because too many files have changed in this diff Show More