namespace ZB.MOM.WW.ScadaBridge.NotificationService.Tests;
///
/// Tests for parsing the configured SMTP TLS mode into the three-state enum.
///
public class SmtpTlsModeParserTests
{
/// Verifies that a known mode string parses to the expected TLS mode.
/// The configured mode string.
/// The expected parsed TLS mode.
[Theory]
[InlineData("none", SmtpTlsMode.None)]
[InlineData("None", SmtpTlsMode.None)]
[InlineData("NONE", SmtpTlsMode.None)]
[InlineData("starttls", SmtpTlsMode.StartTls)]
[InlineData("StartTLS", SmtpTlsMode.StartTls)]
[InlineData("ssl", SmtpTlsMode.Ssl)]
[InlineData("SSL", SmtpTlsMode.Ssl)]
[InlineData(" starttls ", SmtpTlsMode.StartTls)]
public void Parse_KnownModes_ReturnsExpected(string input, SmtpTlsMode expected)
{
Assert.Equal(expected, SmtpTlsModeParser.Parse(input));
}
/// Verifies that a null or empty mode defaults to StartTLS.
/// The null or empty mode string.
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
public void Parse_NullOrEmpty_DefaultsToStartTls(string? input)
{
Assert.Equal(SmtpTlsMode.StartTls, SmtpTlsModeParser.Parse(input));
}
/// Verifies that an unknown mode string throws.
/// The unrecognized mode string.
[Theory]
[InlineData("auto")]
[InlineData("tls")]
[InlineData("implicit")]
public void Parse_UnknownMode_Throws(string input)
{
// An unknown mode must be rejected, not silently treated as Auto.
Assert.Throws(() => SmtpTlsModeParser.Parse(input));
}
}