using ZB.MOM.WW.ScadaBridge.Commons.Types.Deployment;
namespace ZB.MOM.WW.ScadaBridge.Commons.Tests;
public class DeploymentFetchTokenTests
{
/// Verifies that generate, returns url safe token of adequate length.
[Fact]
public void Generate_ReturnsUrlSafeTokenOfAdequateLength()
{
var token = DeploymentFetchToken.Generate();
Assert.True(token.Length >= 32, $"Expected length >= 32 but got {token.Length}");
Assert.DoesNotContain('+', token);
Assert.DoesNotContain('/', token);
}
/// Verifies that generate, two calls return different values.
[Fact]
public void Generate_TwoCallsReturnDifferentValues()
{
var a = DeploymentFetchToken.Generate();
var b = DeploymentFetchToken.Generate();
Assert.NotEqual(a, b);
}
/// Verifies that constant time equals, same token, returns true.
[Fact]
public void ConstantTimeEquals_SameToken_ReturnsTrue()
{
var token = DeploymentFetchToken.Generate();
Assert.True(DeploymentFetchToken.ConstantTimeEquals(token, token));
}
/// Verifies that constant time equals, token with suffix, returns false.
[Fact]
public void ConstantTimeEquals_TokenWithSuffix_ReturnsFalse()
{
var token = DeploymentFetchToken.Generate();
Assert.False(DeploymentFetchToken.ConstantTimeEquals(token, token + "x"));
}
/// Verifies that constant time equals, both empty, returns true.
[Fact]
public void ConstantTimeEquals_BothEmpty_ReturnsTrue()
{
Assert.True(DeploymentFetchToken.ConstantTimeEquals("", ""));
}
}