feat: add audited one-shot prepare gate

This commit is contained in:
2026-07-18 12:29:09 +09:00
parent 1302b1b92f
commit 5379511b8a
25 changed files with 6188 additions and 41 deletions

View File

@@ -8,6 +8,47 @@ namespace MBN_STOCK_WEBVIEW.LegacyBridge.Tests;
public sealed class LegacyPlayoutBridgeTests
{
private const string GateACapability =
"0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF";
[Fact]
public void GateAPrepare_ParsesOnlyExactUppercaseCapabilityShape()
{
Assert.True(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"gate-a-prepare\",\"payload\":{\"capability\":\"" +
GateACapability + "\"}}",
out var intent,
out var error), error);
Assert.Equal(
GateACapability,
Assert.IsType<LegacyGateAPrepareIntent>(intent).Capability);
}
[Theory]
[InlineData("")]
[InlineData("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")]
[InlineData("0123456789ABCDEF")]
[InlineData("G123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF")]
public void GateAPrepare_RejectsInvalidCapabilities(string capability)
{
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"gate-a-prepare\",\"payload\":{\"capability\":\"" +
capability + "\"}}",
out _,
out _));
}
[Fact]
public void GateAPrepare_RejectsExtraProperties()
{
Assert.False(LegacyBridgeProtocol.TryParseIntent(
"{\"type\":\"gate-a-prepare\",\"payload\":{\"capability\":\"" +
GateACapability + "\",\"retry\":false}}",
out _,
out _));
}
[Theory]
[InlineData("prepare-playout", LegacyOperatorPlayoutCommand.Prepare)]
[InlineData("take-in", LegacyOperatorPlayoutCommand.TakeIn)]