using System; using System.Collections.Generic; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using StellaOps.Scanner.Surface.FS; using StellaOps.Zastava.Observer.Configuration; using StellaOps.Zastava.Observer.Surface; using Xunit; namespace StellaOps.Zastava.Observer.Tests.Surface; public sealed class RuntimeSurfaceFsClientTests { [Fact] public async Task TryGetManifestAsync_ReturnsPublishedManifest() { var configuration = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary { [$"{ZastavaObserverOptions.SectionName}:runtimes:0:engine"] = "Containerd", [$"{ZastavaObserverOptions.SectionName}:backend:baseAddress"] = "https://scanner.internal" }) .Build(); var services = new ServiceCollection(); services.AddLogging(); services.AddZastavaObserver(configuration); using var provider = services.BuildServiceProvider(); var manifestWriter = provider.GetRequiredService(); var client = provider.GetRequiredService(); var document = new SurfaceManifestDocument { Tenant = "default", ImageDigest = "sha256:deadbeef", GeneratedAt = DateTimeOffset.UtcNow, Artifacts = new[] { new SurfaceManifestArtifact { Kind = "entry-trace", Uri = "cas://surface-cache/manifest/entry-trace", Digest = "sha256:abc123", MediaType = "application/json", Format = "ndsjon" } } }; var published = await manifestWriter.PublishAsync(document, default); var fetched = await client.TryGetManifestAsync(published.ManifestDigest, default); Assert.NotNull(fetched); Assert.Equal(document.Tenant, fetched!.Tenant); Assert.Equal(document.ImageDigest, fetched.ImageDigest); } }