diff --git a/VeraxShield/TestVeraxShield/DonneurEtatTests.cs b/VeraxShield/TestVeraxShield/DonneurEtatTests.cs new file mode 100644 index 0000000..914c763 --- /dev/null +++ b/VeraxShield/TestVeraxShield/DonneurEtatTests.cs @@ -0,0 +1,85 @@ +using Moq; +using System.Collections.Generic; +using System.Security.Claims; +using System.Threading.Tasks; +using VeraxShield.composants.formulaires.modeles; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; +using Xunit; + +namespace VeraxShield.UnitTests +{ + public class DonneurEtatTests + { + private readonly DonneurEtat _donneurEtat; + private readonly Mock _mockAuthService; + private readonly Mock _mockUserDataService; + + public DonneurEtatTests() + { + _mockAuthService = new Mock(); + _mockUserDataService = new Mock(); + _donneurEtat = new DonneurEtat(_mockAuthService.Object, _mockUserDataService.Object); + } + + [Fact] + public async Task Connexion_ValidCredentials_SetsCurrentUser() + { + // Arrange + var requeteConnexion = new RequeteConnexion { Pseudo = "testUser", MotDePasse = "testPass" }; + var utilisateurCourant = new UtilisateurCourant + { + Pseudo = "testUser", + EstAuthentifie = true, + Claims = new Dictionary { { ClaimTypes.Role, "User" } } + }; + + _mockAuthService.Setup(x => x.GetUtilisateur(requeteConnexion.Pseudo)).ReturnsAsync(utilisateurCourant); + _mockAuthService.Setup(x => x.Connexion(requeteConnexion)).Returns(Task.CompletedTask); + + // Act + await _donneurEtat.Connexion(requeteConnexion); + + // Assert + Assert.NotNull(_donneurEtat._utilisateurCourant); + Assert.True(_donneurEtat._utilisateurCourant.EstAuthentifie); + _mockAuthService.Verify(x => x.Connexion(requeteConnexion), Times.Once); + _mockAuthService.Verify(x => x.GetUtilisateur(requeteConnexion.Pseudo), Times.Once); + } + + [Fact] + public async Task Deconnexion_ClearsCurrentUser() + { + // Arrange - assume user is logged in + _donneurEtat._utilisateurCourant = new UtilisateurCourant { EstAuthentifie = true }; + + // Act + await _donneurEtat.Deconnexion(); + + // Assert + Assert.Null(_donneurEtat._utilisateurCourant); + } + + [Fact] + public async Task Inscription_ValidData_RegistersUser() + { + // Arrange + var requeteInscription = new RequeteInscription + { + Pseudo = "newUser", + MotDePasse = "newPass", + Mail = "newUser@test.com", + Nom = "New", + Prenom = "User" + }; + + _mockAuthService.Setup(x => x.Inscription(requeteInscription)).Returns(Task.CompletedTask); + + // Act + await _donneurEtat.Inscription(requeteInscription); + + // Assert - Since Inscription does not automatically log in the user, we check if the method was called. + _mockAuthService.Verify(x => x.Inscription(requeteInscription), Times.Once); + } + } +} diff --git a/VeraxShield/TestVeraxShield/TestVeraxShield.csproj b/VeraxShield/TestVeraxShield/TestVeraxShield.csproj index 14bbc31..6972f53 100644 --- a/VeraxShield/TestVeraxShield/TestVeraxShield.csproj +++ b/VeraxShield/TestVeraxShield/TestVeraxShield.csproj @@ -12,6 +12,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive