using SIGCM2.Infrastructure.Security; namespace SIGCM2.Application.Tests.Infrastructure; public class RefreshTokenGeneratorTests { private readonly RefreshTokenGenerator _generator = new(); [Fact] public void Generate_ProducesBase64UrlString() { var token = _generator.Generate(); Assert.False(string.IsNullOrWhiteSpace(token)); // Must be base64url: no +, /, or = Assert.DoesNotContain('+', token); Assert.DoesNotContain('/', token); Assert.DoesNotContain('=', token); } [Fact] public void Generate_IsUnique() { var tokens = Enumerable.Range(0, 50).Select(_ => _generator.Generate()).ToList(); var distinct = tokens.Distinct().ToList(); Assert.Equal(tokens.Count, distinct.Count); } [Fact] public void Generate_ProducesExpectedLength() { // 32 bytes base64url without padding = 43 chars var token = _generator.Generate(); Assert.Equal(43, token.Length); } }