- Tests créés : 21 ✅
- Tests réussis : 21/21 ✅
- Temps d'exécution : ~71ms
- Framework : xUnit + Moq + FluentAssertions
cd /home/maxence/Dev/TableMaster/TableMasterApi
dotnet testbash run-tests.sh- Ouvrir la palette :
Ctrl+Shift+P - Taper :
Test: Run All Tests
✅ TableMasterApi.Tests.Services.JwtServiceTests (14 tests)
├─ ExtractTokenFromAuthorization_WithValidBearerToken_ShouldReturnToken
├─ GenerateAccessToken_WithValidUserId_ShouldCreateValidJwt
├─ GenerateAccessToken_ShouldIncludeUserIdInClaims
├─ GenerateAccessToken_ShouldHaveExpirationInFuture
├─ ExtractUserIdFromToken_WithValidToken_ShouldReturnCorrectUserId
├─ ExtractUserIdFromToken_WithInvalidToken_ShouldThrowException
├─ ExtractUserIdFromToken_WithMultipleUsers_ShouldExtractCorrectId
├─ GenerateRefreshToken_ShouldReturnValidBase64String
├─ GenerateRefreshToken_ShouldGenerateDifferentTokensEachTime
├─ GenerateRefreshToken_ShouldHaveSufficientLength
└─ ... et 4 autres
✅ TableMasterApi.Tests.Controllers.AuthenticationIntegrationTests (7 tests)
├─ AuthenticationFlow_GenerateTokenAndExtractUserId_ShouldMaintainIntegrity
├─ AuthenticationFlow_MultipleRequests_EachTokenIsUnique
├─ TokenRefresh_GeneratedTokensAreUniqueAndSecure
├─ JwtCompliance_TokenContainsRequiredClaims
├─ JwtCompliance_TokenHasCorrectSignatureAlgorithm
├─ TokenSecurity_ExpiredTokenShouldBeIgnored
└─ LifecycleDemonstration_UserLoginToTokenValidation_CompleteFlow
Réussi! - Total : 21 tests, Durée : 71 ms
TableMasterApi.Tests/
├── Fixtures/
│ └── JwtConfigFixture.cs ← Configuration et données de test
├── Services/
│ └── JwtServiceTests.cs ← Tests JWT (14 tests)
├── Controllers/
│ └── AuthenticationIntegrationTests.cs ← Tests intégration (7 tests)
├── GlobalUsings.cs ← Imports globaux
├── xunit.runner.json ← Config xUnit
├── TableMasterApi.Tests.csproj ← Fichier projet
├── README.md ← Documentation détaillée
├── SUMMARY.md ← Résumé complet
└── run-tests.sh ← Script de lancement
[Fact]
public void GenerateAccessToken_WithValidUserId_ShouldCreateValidJwt()
{
// Crée un token valide avec :
// ✓ Signature HMAC SHA256
// ✓ Claims utilisateur
// ✓ Expiration en 5 minutes
// ✓ Issuer/Audience configurés
}[Fact]
public void AuthenticationFlow_GenerateTokenAndExtractUserId_ShouldMaintainIntegrity()
{
// Simule :
// 1. Génération du token
// 2. Envoi dans Authorization header
// 3. Extraction et validation du token
// 4. Vérification que l'UserId est correct
}# 1. Créer le fichier test
# Services/MyServiceTests.cs
# 2. Écrire le test
[Fact]
public void MyTest()
{
// Arrange
// Act
// Assert
}
# 3. Exécuter
dotnet test# Lancer avec verbosité maximale
dotnet test --logger "console;verbosity=detailed"
# Lancer un test spécifique
dotnet test --filter "MyTest"| Pattern | Exemple |
|---|---|
| Fixtures | IClassFixture<JwtConfigFixture> |
| Theory | [Theory] [InlineData(...)] |
| AAA | Arrange → Act → Assert |
| Mocking | new Mock<Interface>() |
| Assertions Fluides | .Should().Be(expected) |
Solution : Vérifier que le fichier .csproj contient la bonne référence au projet principal
<ProjectReference Include="..\TableMasterApi\TableMasterApi.csproj" />Solution : Créer une interface et utiliser l'injection de dépendance
// Au lieu de Mock<UserDAL>
Mock<IUserDAL>Solution : Utiliser des fixtures pour partager l'état entre tests
public class MyTests : IClassFixture<MyFixture>✅ Pas de dépendance DB — Utilise des mocks
✅ Tests indépendants — Chacun peut s'exécuter seul
✅ Noms explicites — Structure claire du test
✅ Réutilisable — Fixtures pour partager la config
✅ Rapide — 21 tests en 71ms
Prêt à écrire plus de tests ? Bonne chance ! 🚀