fix(opcuaserver-tests): fix cert-store gap + SDK read-throws drift (4F → 4/4) #447

Merged
dohertj2 merged 1 commits from fix/opcuaserver-integration-cert-store into master 2026-07-15 03:34:37 -04:00
Owner

Integration-sweep follow-up #5. (1) Client SecurityConfiguration lacked the trusted-issuer/peer/rejected StorePaths ValidateAsync requires → new TestClientSecurity helper roots Directory stores at a throwaway PKI dir. (2) That unmasked the 1.5.378 node-cache read path throwing ServiceResultException(BadNodeIdUnknown) for a removed node instead of returning a bad DataValue → subscription-survival assertions now use Should.ThrowAsync. Suite 4F → 4/4 green.

Integration-sweep follow-up #5. (1) Client SecurityConfiguration lacked the trusted-issuer/peer/rejected StorePaths ValidateAsync requires → new TestClientSecurity helper roots Directory stores at a throwaway PKI dir. (2) That unmasked the 1.5.378 node-cache read path throwing ServiceResultException(BadNodeIdUnknown) for a removed node instead of returning a bad DataValue → subscription-survival assertions now use Should.ThrowAsync. Suite 4F → 4/4 green.
dohertj2 added 1 commit 2026-07-15 03:34:26 -04:00
fix(opcuaserver-tests): supply client cert-store paths + adapt to SDK read-throws
v2-ci / build (pull_request) Successful in 7m23s
v2-ci / unit-tests (pull_request) Failing after 15m33s
de9d9697fd
OpcUaServer.IntegrationTests was 4F. Two distinct, previously-masked issues:

1. Cert-store gap: the in-test client SecurityConfiguration used a bare
   new SecurityConfiguration()/CertificateIdentifier(), so ValidateAsync threw
   'TrustedIssuerCertificates StorePath must be specified' before any connect.
   Added TestClientSecurity helper building Directory own/issuer/trusted/rejected
   stores under a throwaway temp PKI dir (mirrors DefaultApplicationConfigurationFactory);
   wired into DualEndpointTests + SubscriptionSurvivalTests.

2. Fixing #1 unmasked an SDK-version drift: the 1.5.378 node-cache read path
   throws ServiceResultException(BadNodeIdUnknown) for a removed node instead of
   returning a bad DataValue. The two subscription-survival assertions now expect
   the throw via Should.ThrowAsync. Behavior under test (removed node -> unknown)
   is unchanged; only the delivery mechanism differs.

Suite 4F -> 4/4 green. Integration-sweep follow-up #5.
dohertj2 merged commit 271562e00e into master 2026-07-15 03:34:37 -04:00
Sign in to join this conversation.