Files
git.stella-ops.org/tests/reachability/StellaOps.Replay.Core.Tests/ReplayMongoModelsTests.cs
StellaOps Bot 1c782897f7
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
up
2025-11-26 07:47:08 +02:00

58 lines
1.8 KiB
C#

using FluentAssertions;
using MongoDB.Bson.Serialization;
using StellaOps.Replay.Core;
using Xunit;
namespace StellaOps.Replay.Core.Tests;
public sealed class ReplayMongoModelsTests
{
[Fact]
public void ReplayRunRecord_SerializesWithExpectedFields()
{
var record = new ReplayRunRecord
{
Id = "scan-1",
ManifestHash = "sha256:abc",
Status = "verified",
Outputs = new ReplayRunOutputs { Sbom = "sha256:sbom", Findings = "sha256:findings", Vex = "sha256:vex" },
Signatures = new() { new ReplaySignatureRecord { Profile = "FIPS", Verified = true } }
};
var bson = record.ToBsonDocument();
bson.Should().ContainKey("_id");
bson["manifestHash"].AsString.Should().Be("sha256:abc");
bson["status"].AsString.Should().Be("verified");
bson["outputs"].AsBsonDocument["sbom"].AsString.Should().Be("sha256:sbom");
bson["signatures"].AsBsonArray.Should().HaveCount(1);
}
[Fact]
public void ReplayBundleRecord_UsesIdAsDigest()
{
var record = new ReplayBundleRecord { Id = "abc", Type = "input", Size = 10, Location = "cas://replay/ab/abc.tar.zst" };
var bson = record.ToBsonDocument();
bson["_id"].AsString.Should().Be("abc");
bson["type"].AsString.Should().Be("input");
}
[Fact]
public void ReplaySubjectRecord_StoresLayers()
{
var record = new ReplaySubjectRecord
{
OciDigest = "sha256:img",
Layers = new()
{
new ReplayLayerRecord { LayerDigest = "l1", MerkleRoot = "m1", LeafCount = 2 },
new ReplayLayerRecord { LayerDigest = "l2", MerkleRoot = "m2", LeafCount = 3 }
}
};
var doc = record.ToBsonDocument();
doc["layers"].AsBsonArray.Should().HaveCount(2);
}
}