using System;
using System.IdentityModel.Tokens.Jwt;
using System.Text;
using Microsoft.IdentityModel.Tokens;
namespace SchotzIadKmTracker.Tests.Auth;
///
/// Utilitaires de validation de jetons JWT pour les tests, alignés sur les
/// paramètres de validation de Program.cs (issuer / audience / clé de
/// signature / durée de vie).
///
internal static class JwtTestUtils
{
///
/// Valide un jeton HS256 avec la clé fournie. Retourne true si le jeton
/// est signé par cette clé, non expiré et porte l'issuer/audience attendus.
///
public static bool EstValide(
string token,
string secretKey,
string issuer = "SchotzIadKmTracker",
string audience = "SchotzIadKmTracker")
{
var handler = new JwtSecurityTokenHandler();
var parameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = issuer,
ValidAudience = audience,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)),
ClockSkew = TimeSpan.FromSeconds(30),
};
try
{
handler.ValidateToken(token, parameters, out _);
return true;
}
catch
{
return false;
}
}
}