using Opc.Ua;
using ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Adapters;
namespace ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Tests.Adapters;
public class OpcUaSecurityDowngradeTests
{
/// Verifies that DC4: requested protection never falls back to none.
/// The discovery fails.
[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 } }));
}
/// Verifies that DC4: exact requested mode is selected.
[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 }));
}
}