using System.Text.Json; using Aging.ResourceContracts; using Xunit; namespace Aging.MvpTests { public class ContractSerializeTests { [Fact] public void LeaseGrant_RoundTrips_Json() { var g = new LeaseGrant("broker-b01", "can/can02", "lease_abc", "W01.RunA", OwnerTypeV3.Maintenance, epoch: 7, generation: 42, expiresUtcMs: 1793673600000); var json = JsonSerializer.Serialize(g); var back = JsonSerializer.Deserialize(json)!; Assert.Equal(g.Generation, back.Generation); Assert.Equal(g.Epoch, back.Epoch); Assert.Equal(g.LeaseId, back.LeaseId); Assert.Equal(g.OwnerType, back.OwnerType); } [Fact] public void IpcEnvelope_Carries_BodyAndIdentity() { var e = new IpcEnvelope { ProtocolVersion = 1, MessageType = "SubmitTask", RequestId = "req-1", ClientInstanceId = "hmi/bootA/123", AuthorityId = "broker-b01", ConfigHash = "sha256:x", BodyJson = "{\"operationCode\":\"SEND\"}" }; var json = JsonSerializer.Serialize(e); var back = JsonSerializer.Deserialize(json)!; Assert.Equal("SubmitTask", back.MessageType); Assert.Equal("sha256:x", back.ConfigHash); } } }