using ZB.MOM.WW.ScadaBridge.Commons.Types.Deployment; namespace ZB.MOM.WW.ScadaBridge.Commons.Tests; public class DeploymentFetchTokenTests { [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); } [Fact] public void Generate_TwoCallsReturnDifferentValues() { var a = DeploymentFetchToken.Generate(); var b = DeploymentFetchToken.Generate(); Assert.NotEqual(a, b); } [Fact] public void ConstantTimeEquals_SameToken_ReturnsTrue() { var token = DeploymentFetchToken.Generate(); Assert.True(DeploymentFetchToken.ConstantTimeEquals(token, token)); } [Fact] public void ConstantTimeEquals_TokenWithSuffix_ReturnsFalse() { var token = DeploymentFetchToken.Generate(); Assert.False(DeploymentFetchToken.ConstantTimeEquals(token, token + "x")); } [Fact] public void ConstantTimeEquals_BothEmpty_ReturnsTrue() { Assert.True(DeploymentFetchToken.ConstantTimeEquals("", "")); } }