From b544d5cccd76735e034c8055918a50927b437474 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期二, 10 十一月 2026 08:29:04 +0800
Subject: [PATCH] fix: 维护模式重复进入失败与按钮灰死 + Broker 并发验证用例

---
 tests/Aging.MvpTests/ContractSerializeTests.cs |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/tests/Aging.MvpTests/ContractSerializeTests.cs b/tests/Aging.MvpTests/ContractSerializeTests.cs
new file mode 100644
index 0000000..c5faff0
--- /dev/null
+++ b/tests/Aging.MvpTests/ContractSerializeTests.cs
@@ -0,0 +1,39 @@
+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<LeaseGrant>(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<IpcEnvelope>(json)!;
+            Assert.Equal("SubmitTask", back.MessageType);
+            Assert.Equal("sha256:x", back.ConfigHash);
+        }
+    }
+}

--
Gitblit v1.9.1