62 lines
2.7 KiB
C#
62 lines
2.7 KiB
C#
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Microsoft.Extensions.Logging.Abstractions;
|
|
using Microsoft.Extensions.Options;
|
|
using ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Adapters;
|
|
|
|
namespace ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Tests;
|
|
|
|
public class GlobalOptionsValidationTests
|
|
{
|
|
/// <summary>Verifies that startup rejects blank identity.</summary>
|
|
/// <param name="key">Test case input.</param>
|
|
[Theory]
|
|
[InlineData("ScadaBridge:OpcUa:ApplicationName")]
|
|
[InlineData("ScadaBridge:MxGateway:ClientNamePrefix")]
|
|
public void StartupRejectsBlankIdentity(string key)
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddSingleton<IConfiguration>(new ConfigurationBuilder().AddInMemoryCollection(
|
|
new Dictionary<string, string?> { [key] = " " }).Build());
|
|
services.AddDataConnectionLayer();
|
|
using var provider = services.BuildServiceProvider();
|
|
var exception = Assert.Throws<OptionsValidationException>(() => provider.GetRequiredService<IStartupValidator>().Validate());
|
|
Assert.Contains(key, exception.Message);
|
|
}
|
|
|
|
/// <summary>Verifies that defaults validate at startup.</summary>
|
|
[Fact]
|
|
public void DefaultsValidateAtStartup()
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddSingleton<IConfiguration>(new ConfigurationBuilder().Build());
|
|
services.AddDataConnectionLayer();
|
|
using var provider = services.BuildServiceProvider();
|
|
provider.GetRequiredService<IStartupValidator>().Validate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Review 2026-10-21 02/U1: the bound <c>ScadaBridge:MxGateway:ClientNamePrefix</c> actually
|
|
/// reaches the MxGateway adapters the DI-built factory creates.
|
|
/// </summary>
|
|
[Fact]
|
|
public void ClientNamePrefix_FlowsIntoTheMxGatewayAdapter()
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddSingleton<IConfiguration>(new ConfigurationBuilder().AddInMemoryCollection(
|
|
new Dictionary<string, string?> { ["ScadaBridge:MxGateway:ClientNamePrefix"] = "plant7" }).Build());
|
|
services.AddSingleton<ILoggerFactory>(NullLoggerFactory.Instance);
|
|
services.AddDataConnectionLayer();
|
|
using var provider = services.BuildServiceProvider();
|
|
|
|
var adapter = provider.GetRequiredService<IDataConnectionFactory>()
|
|
.Create("MxGateway", new Dictionary<string, string>());
|
|
|
|
var prefix = typeof(MxGatewayDataConnection)
|
|
.GetField("_clientNamePrefix", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)!
|
|
.GetValue(adapter);
|
|
Assert.Equal("plant7", prefix);
|
|
}
|
|
}
|