Files
lmxopcua/tests/Client/ZB.MOM.WW.OtOpcUa.Client.Shared.Tests/Adapters/DefaultApplicationConfigurationFactoryTests.cs
T

40 lines
1.6 KiB
C#

using Opc.Ua;
using Shouldly;
using Xunit;
using ZB.MOM.WW.OtOpcUa.Client.Shared.Adapters;
using ZB.MOM.WW.OtOpcUa.Client.Shared.Models;
namespace ZB.MOM.WW.OtOpcUa.Client.Shared.Tests.Adapters;
/// <summary>Uses the real configuration factory so fake sessions cannot conceal SDK initialization failures.</summary>
public sealed class DefaultApplicationConfigurationFactoryTests
{
[Theory]
[InlineData(SecurityMode.None)]
[InlineData(SecurityMode.SignAndEncrypt)]
public async Task Real_configuration_initializes_its_certificate_manager(SecurityMode mode)
{
var root = Path.Combine(Path.GetTempPath(), $"otopcua-real-config-{Guid.NewGuid():N}");
ApplicationConfiguration? config = null;
try
{
config = await new DefaultApplicationConfigurationFactory().CreateAsync(new ConnectionSettings
{
EndpointUrl = "opc.tcp://localhost:4840",
CertificateStorePath = root,
SecurityMode = mode,
AutoAcceptCertificates = false,
}, TestContext.Current.CancellationToken);
config.CertificateManager.ShouldNotBeNull();
config.SecurityConfiguration.AutoAcceptUntrustedCertificates.ShouldBeFalse();
if (mode != SecurityMode.None)
Directory.EnumerateFiles(Path.Combine(root, "own"), "*", SearchOption.AllDirectories).ShouldNotBeEmpty();
}
finally
{
(config?.CertificateManager as IDisposable)?.Dispose();
if (Directory.Exists(root)) Directory.Delete(root, recursive: true);
}
}
}