using StellaOps.AirGap.Importer.Validation; namespace StellaOps.AirGap.Importer.Tests; public class TufMetadataValidatorTests { [Fact] public void RejectsInvalidJson() { var validator = new TufMetadataValidator(); var result = validator.Validate("{}", "{}", "{}"); Assert.False(result.IsValid); } [Fact] public void AcceptsConsistentSnapshotHash() { var validator = new TufMetadataValidator(); var root = "{\"version\":1,\"expiresUtc\":\"2030-01-01T00:00:00Z\"}"; var snapshot = "{\"version\":1,\"expiresUtc\":\"2030-01-01T00:00:00Z\",\"meta\":{\"snapshot\":{\"hashes\":{\"sha256\":\"abc\"}}}}"; var timestamp = "{\"version\":1,\"expiresUtc\":\"2030-01-01T00:00:00Z\",\"snapshot\":{\"meta\":{\"hashes\":{\"sha256\":\"abc\"}}}}"; var result = validator.Validate(root, snapshot, timestamp); Assert.True(result.IsValid); Assert.Equal("tuf-metadata-valid", result.Reason); } [Fact] public void DetectsHashMismatch() { var validator = new TufMetadataValidator(); var root = "{\"version\":1,\"expiresUtc\":\"2030-01-01T00:00:00Z\"}"; var snapshot = "{\"version\":1,\"expiresUtc\":\"2030-01-01T00:00:00Z\",\"meta\":{\"snapshot\":{\"hashes\":{\"sha256\":\"abc\"}}}}"; var timestamp = "{\"version\":1,\"expiresUtc\":\"2030-01-01T00:00:00Z\",\"snapshot\":{\"meta\":{\"hashes\":{\"sha256\":\"def\"}}}}"; var result = validator.Validate(root, snapshot, timestamp); Assert.False(result.IsValid); Assert.Equal("tuf-snapshot-hash-mismatch", result.Reason); } }