using System; using System.IO; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; using StellaOps.Scanner.WebService.Contracts; namespace StellaOps.Scanner.WebService.Tests; public sealed class ReportSamplesTests { private static readonly JsonSerializerOptions SerializerOptions = new(JsonSerializerDefaults.Web) { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, Converters = { new JsonStringEnumConverter() } }; [Fact] public async Task ReportSampleEnvelope_RemainsCanonical() { var baseDirectory = AppContext.BaseDirectory; var repoRoot = Path.GetFullPath(Path.Combine(baseDirectory, "..", "..", "..", "..", "..")); var path = Path.Combine(repoRoot, "samples", "api", "reports", "report-sample.dsse.json"); Assert.True(File.Exists(path), $"Sample file not found at {path}."); await using var stream = File.OpenRead(path); var response = await JsonSerializer.DeserializeAsync(stream, SerializerOptions); Assert.NotNull(response); Assert.NotNull(response!.Report); Assert.NotNull(response.Dsse); var reportBytes = JsonSerializer.SerializeToUtf8Bytes(response.Report, SerializerOptions); var expectedPayload = Convert.ToBase64String(reportBytes); Assert.Equal(expectedPayload, response.Dsse!.Payload); } }