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