feat(management): actor dispatch for BrowseNode/SearchAddressSpace/VerifyEndpoint — CLI parity (arch-review C4)

Made CommunicationService.BrowseNodeAsync/SearchAddressSpaceAsync/VerifyEndpointAsync virtual to support the test seam (mirrors existing virtual WriteTagAsync).

Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
Joseph Doherty
2026-07-10 05:27:48 -04:00
parent 51cff07753
commit 722063638b
4 changed files with 188 additions and 6 deletions
@@ -363,7 +363,7 @@ public class CommunicationService
/// <param name="command">The OPC UA browse command.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>The browse result (children + truncation flag + structured failure).</returns>
public Task<BrowseNodeResult> BrowseNodeAsync(
public virtual Task<BrowseNodeResult> BrowseNodeAsync(
string siteId,
BrowseNodeCommand command,
CancellationToken cancellationToken = default)
@@ -385,7 +385,7 @@ public class CommunicationService
/// <param name="command">The verify-endpoint command (connection name + protocol + serialized config).</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>The verification result (success or classified failure, with a captured certificate when the failure is an untrusted certificate).</returns>
public Task<VerifyEndpointResult> VerifyEndpointAsync(
public virtual Task<VerifyEndpointResult> VerifyEndpointAsync(
string siteId,
VerifyEndpointCommand command,
CancellationToken cancellationToken = default)
@@ -407,7 +407,7 @@ public class CommunicationService
/// <param name="command">The address-space search command (connection name + query + depth/result caps).</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>The search result (matches + cap-reached flag + structured failure).</returns>
public Task<SearchAddressSpaceResult> SearchAddressSpaceAsync(
public virtual Task<SearchAddressSpaceResult> SearchAddressSpaceAsync(
string siteId,
SearchAddressSpaceCommand command,
CancellationToken cancellationToken = default)