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("", "")); } }