using Opc.Ua; using ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Adapters; namespace ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Tests.Adapters; public class OpcUaSecurityDowngradeTests { [Theory] [InlineData(false)] [InlineData(true)] public void DC4_RequestedProtectionNeverFallsBackToNone(bool discoveryFails) { Assert.Throws(() => RealOpcUaClient.DiscoverEndpoint("opc.tcp://test:4840", MessageSecurityMode.SignAndEncrypt, () => discoveryFails ? throw new Exception("discovery unavailable") : new EndpointDescriptionCollection { new("opc.tcp://test:4840") { SecurityMode = MessageSecurityMode.None } })); } [Fact] public void DC4_ExactRequestedModeIsSelected() { var encrypted = new EndpointDescription("opc.tcp://test:4840") { SecurityMode = MessageSecurityMode.SignAndEncrypt }; Assert.Same(encrypted, RealOpcUaClient.DiscoverEndpoint("opc.tcp://test:4840", MessageSecurityMode.SignAndEncrypt, () => new EndpointDescriptionCollection { new("opc.tcp://test:4840"), encrypted })); } }