refactor(runtime): case-insensitive ClusterId/NodeId match + suppress short-circuit + edge tests (review)

This commit is contained in:
Joseph Doherty
2026-06-07 03:12:09 -04:00
parent 05471dc36c
commit 7b2f64fdb8
2 changed files with 39 additions and 8 deletions
@@ -295,4 +295,38 @@ public sealed class DeploymentArtifactTests
specs.Single().DriverInstanceId.ShouldBe("DI-ok");
}
/// <summary>Verifies that a malformed blob resolves to None rather than throwing.</summary>
[Fact]
public void ResolveClusterScope_malformed_blob_returns_None()
{
var scope = DeploymentArtifact.ResolveClusterScope("not json"u8.ToArray(), "central-1:4053");
scope.Mode.ShouldBe(ClusterFilterMode.None);
}
/// <summary>Verifies that a blank ClusterId in the node row resolves to Suppress.</summary>
[Fact]
public void ResolveClusterScope_blank_cluster_id_suppresses()
{
var blob = BlobOf(new
{
Clusters = new[] { new { ClusterId = "MAIN" }, new { ClusterId = "SITE-A" } },
Nodes = new[] { new { NodeId = "central-1:4053", ClusterId = "" } },
});
DeploymentArtifact.ResolveClusterScope(blob, "central-1:4053").Mode.ShouldBe(ClusterFilterMode.Suppress);
}
/// <summary>Verifies that NodeId matching in ResolveClusterScope is case-insensitive.</summary>
[Fact]
public void ResolveClusterScope_node_id_match_is_case_insensitive()
{
var blob = BlobOf(new
{
Clusters = new[] { new { ClusterId = "MAIN" }, new { ClusterId = "SITE-A" } },
Nodes = new[] { new { NodeId = "Central-1:4053", ClusterId = "MAIN" } },
});
var scope = DeploymentArtifact.ResolveClusterScope(blob, "central-1:4053");
scope.Mode.ShouldBe(ClusterFilterMode.ScopeTo);
scope.ClusterId.ShouldBe("MAIN");
}
}