27 lines
1.4 KiB
C#
27 lines
1.4 KiB
C#
using Opc.Ua;
|
|
using ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Adapters;
|
|
namespace ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Tests.Adapters;
|
|
public class OpcUaSecurityDowngradeTests
|
|
{
|
|
/// <summary>Verifies that DC4: requested protection never falls back to none.</summary>
|
|
/// <param name="discoveryFails">The discovery fails.</param>
|
|
[Theory]
|
|
[InlineData(false)]
|
|
[InlineData(true)]
|
|
public async Task DC4_RequestedProtectionNeverFallsBackToNone(bool discoveryFails)
|
|
{
|
|
await Assert.ThrowsAsync<InvalidOperationException>(() => RealOpcUaClient.DiscoverEndpointAsync("opc.tcp://test:4840",
|
|
MessageSecurityMode.SignAndEncrypt, _ => discoveryFails
|
|
? throw new Exception("discovery unavailable")
|
|
: Task.FromResult(new EndpointDescriptionCollection { new("opc.tcp://test:4840") { SecurityMode = MessageSecurityMode.None } })));
|
|
}
|
|
/// <summary>Verifies that DC4: exact requested mode is selected.</summary>
|
|
[Fact]
|
|
public async Task DC4_ExactRequestedModeIsSelected()
|
|
{
|
|
var encrypted = new EndpointDescription("opc.tcp://test:4840") { SecurityMode = MessageSecurityMode.SignAndEncrypt };
|
|
Assert.Same(encrypted, await RealOpcUaClient.DiscoverEndpointAsync("opc.tcp://test:4840", MessageSecurityMode.SignAndEncrypt,
|
|
_ => Task.FromResult(new EndpointDescriptionCollection { new("opc.tcp://test:4840"), encrypted })));
|
|
}
|
|
}
|