using ZB.MOM.WW.ScadaBridge.Security.Auth; using Xunit; namespace ZB.MOM.WW.ScadaBridge.Security.Tests; public class DisableLoginGuardTests { /// Verifies that disabling login outside development without an acknowledgement throws. /// The hosting environment name. [Theory] [InlineData("Production")] [InlineData("Staging")] [InlineData("")] public void Validate_DisableLoginOutsideDevelopment_WithoutAck_Throws(string env) { var ex = Assert.Throws( () => DisableLoginGuard.Validate(disableLogin: true, environmentName: env, allowOutsideDevelopment: false)); Assert.Contains("DisableLogin", ex.Message); Assert.Contains("Development", ex.Message); } /// Verifies that allowed combinations of environment and acknowledgement do not throw. /// The hosting environment name. /// Whether the explicit acknowledgement is given. [Theory] [InlineData("Development", false)] // dev env: allowed without ack [InlineData("development", false)] // case-insensitive env name [InlineData("Production", true)] // explicit second ack key public void Validate_Allowed_DoesNotThrow(string env, bool ack) => DisableLoginGuard.Validate(true, env, ack); /// Verifies that validation never throws when the disable-login flag is off. [Fact] public void Validate_FlagOff_NeverThrows() => DisableLoginGuard.Validate(false, "Production", false); }