Files
ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.Commons.Tests/Validators/MxGatewayEndpointConfigValidatorTests.cs
T
2026-05-29 07:46:28 -04:00

78 lines
2.3 KiB
C#

using ZB.MOM.WW.ScadaBridge.Commons.Types.DataConnections;
using ZB.MOM.WW.ScadaBridge.Commons.Types.Flattening;
using ZB.MOM.WW.ScadaBridge.Commons.Validators;
namespace ZB.MOM.WW.ScadaBridge.Commons.Tests.Validators;
public class MxGatewayEndpointConfigValidatorTests
{
private static MxGatewayEndpointConfig Valid() => new()
{
Endpoint = "http://gw:5000",
ApiKey = "key",
};
[Fact]
public void Validate_ValidConfig_IsValid()
{
var result = MxGatewayEndpointConfigValidator.Validate(Valid());
Assert.True(result.IsValid);
Assert.Empty(result.Errors);
}
[Fact]
public void Validate_MissingEndpoint_Fails()
{
var c = Valid();
c.Endpoint = "";
var r = MxGatewayEndpointConfigValidator.Validate(c);
Assert.False(r.IsValid);
Assert.Contains(r.Errors, e =>
e.EntityName == "Endpoint"
&& e.Category == ValidationCategory.ConnectionConfig
&& e.Message.Contains("required", StringComparison.OrdinalIgnoreCase));
}
[Theory]
[InlineData("opc.tcp://x:4840")]
[InlineData("ftp://x")]
[InlineData("not a url")]
public void Validate_BadEndpointScheme_Fails(string url)
{
var c = Valid();
c.Endpoint = url;
var r = MxGatewayEndpointConfigValidator.Validate(c);
Assert.False(r.IsValid);
Assert.Contains(r.Errors, e => e.EntityName == "Endpoint");
}
[Fact]
public void Validate_MissingApiKey_Fails()
{
var c = Valid();
c.ApiKey = "";
var r = MxGatewayEndpointConfigValidator.Validate(c);
Assert.False(r.IsValid);
Assert.Contains(r.Errors, e => e.EntityName == "ApiKey");
}
[Fact]
public void Validate_NonPositiveReadTimeout_Fails()
{
var c = Valid();
c.ReadTimeoutMs = 0;
var r = MxGatewayEndpointConfigValidator.Validate(c);
Assert.False(r.IsValid);
Assert.Contains(r.Errors, e => e.EntityName == "ReadTimeoutMs");
}
[Fact]
public void Validate_PrefixedFieldNames_AppearInErrors()
{
var c = Valid();
c.Endpoint = "";
var r = MxGatewayEndpointConfigValidator.Validate(c, "Primary.");
Assert.Contains(r.Errors, e => e.EntityName == "Primary.Endpoint");
}
}