using System; using StellaOps.Concelier.Connector.StellaOpsMirror.Internal; using StellaOps.Concelier.Models; using Xunit; namespace StellaOps.Concelier.Connector.StellaOpsMirror.Tests; public sealed class MirrorAdvisoryMapperTests { [Fact] public void Map_ProducesCanonicalAdvisoryWithMirrorProvenance() { var bundle = SampleData.CreateBundle(); var bundleJson = CanonicalJsonSerializer.SerializeIndented(bundle); Assert.Equal( FixtureLoader.Read(SampleData.BundleFixture).TrimEnd(), FixtureLoader.Normalize(bundleJson).TrimEnd()); var advisories = MirrorAdvisoryMapper.Map(bundle); Assert.Single(advisories); var advisory = advisories[0]; var expectedAdvisory = SampleData.CreateExpectedMappedAdvisory(); var expectedJson = CanonicalJsonSerializer.SerializeIndented(expectedAdvisory); Assert.Equal( FixtureLoader.Read(SampleData.AdvisoryFixture).TrimEnd(), FixtureLoader.Normalize(expectedJson).TrimEnd()); var actualJson = CanonicalJsonSerializer.SerializeIndented(advisory); Assert.Equal( FixtureLoader.Normalize(expectedJson).TrimEnd(), FixtureLoader.Normalize(actualJson).TrimEnd()); Assert.Contains(advisory.Aliases, alias => string.Equals(alias, advisory.AdvisoryKey, StringComparison.OrdinalIgnoreCase)); Assert.Contains( advisory.Provenance, provenance => string.Equals(provenance.Source, StellaOpsMirrorConnector.Source, StringComparison.Ordinal) && string.Equals(provenance.Kind, "map", StringComparison.Ordinal)); var package = Assert.Single(advisory.AffectedPackages); Assert.Contains( package.Provenance, provenance => string.Equals(provenance.Source, StellaOpsMirrorConnector.Source, StringComparison.Ordinal) && string.Equals(provenance.Kind, "map", StringComparison.Ordinal)); } }