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)); } }