namespace ZB.MOM.WW.ScadaBridge.NotificationService.Tests;
///
/// Tests for parsing the configured email transport discriminator into the two-state enum.
///
public class EmailTransportParserTests
{
/// Verifies that parsing a known transport name returns the expected transport.
/// The input text to parse.
/// The expected parsed transport.
[Theory]
[InlineData("Smtp", EmailTransport.Smtp)]
[InlineData("smtp", EmailTransport.Smtp)]
[InlineData("SMTP", EmailTransport.Smtp)]
[InlineData("Ews", EmailTransport.Ews)]
[InlineData("ews", EmailTransport.Ews)]
[InlineData("EWS", EmailTransport.Ews)]
[InlineData(" ews ", EmailTransport.Ews)]
public void Parse_KnownTransports_ReturnsExpected(string input, EmailTransport expected)
{
Assert.Equal(expected, EmailTransportParser.Parse(input));
}
/// Verifies that parsing a null or empty value defaults to SMTP.
/// The input text to parse.
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
public void Parse_NullOrEmpty_DefaultsToSmtp(string? input)
{
// Every pre-EWS SmtpConfiguration row stores no transport; those rows are SMTP rows.
Assert.Equal(EmailTransport.Smtp, EmailTransportParser.Parse(input));
}
/// Verifies that parsing an unknown transport name throws.
/// The input text to parse.
[Theory]
[InlineData("Graph")]
[InlineData("smtps")]
public void Parse_UnknownTransport_Throws(string input)
{
// An unknown transport must be rejected, not silently treated as SMTP.
var ex = Assert.Throws(() => EmailTransportParser.Parse(input));
Assert.Contains(input, ex.Message);
}
}