diff --git a/VeraxShield/TestVeraxShield/AuthentificationServiceTests.cs b/VeraxShield/TestVeraxShield/AuthentificationServiceTests.cs index 609cab8..e9efbf5 100644 --- a/VeraxShield/TestVeraxShield/AuthentificationServiceTests.cs +++ b/VeraxShield/TestVeraxShield/AuthentificationServiceTests.cs @@ -1,3 +1,4 @@ +using System.Security.Claims; using Moq; using VeraxShield.composants.formulaires.modeles; using VeraxShield.modele.utilisateurs; @@ -76,7 +77,29 @@ public class AuthentificationServiceTests // Act await _authService.Inscription(requete); - // Assert is handled by the Callback in the Setup + } + [Fact] + public async Task GetUtilisateur_ReturnsCorrectUser_WithClaims() + { + // Arrange + var expectedPseudo = "testUser"; + var expectedRole = "User"; + var testUser = new Utilisateur("testUser", "Test", "User", "test@user.com", BCrypt.Net.BCrypt.HashPassword("password"), "User", false); + var mockDataService = new Mock(); + mockDataService.Setup(s => s.getAllUtilisateurs()) + .ReturnsAsync(new List { testUser }); + + var authService = new AuthentificationService(mockDataService.Object); + + // Act + var utilisateurCourant = await authService.GetUtilisateur(expectedPseudo); + utilisateurCourant.Claims.Add(ClaimTypes.Email, "test@user.com"); + + // Assert + Assert.NotNull(utilisateurCourant); + Assert.True(utilisateurCourant.EstAuthentifie); + Assert.Equal(expectedPseudo, utilisateurCourant.Pseudo); + } } \ No newline at end of file diff --git a/VeraxShield/TestVeraxShield/IAuthentificationServiceTests.cs b/VeraxShield/TestVeraxShield/IAuthentificationServiceTests.cs new file mode 100644 index 0000000..83d9a63 --- /dev/null +++ b/VeraxShield/TestVeraxShield/IAuthentificationServiceTests.cs @@ -0,0 +1,45 @@ +using Moq; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; + +namespace TestVeraxShield; + +public class IAuthentificationServiceTests +{ + private readonly Mock _mockDataService; + private readonly AuthentificationService _authService; + + public IAuthentificationServiceTests() + { + _mockDataService = new Mock(); + _authService = new AuthentificationService(_mockDataService.Object); + } + + [Fact] + public async Task GetUtilisateur_ValidUser_ReturnsUser() + { + // Arrange + var expectedUser = new UtilisateurCourant { Pseudo = "user1", EstAuthentifie = true }; + _mockDataService.Setup(x => x.getAllUtilisateurs()).ReturnsAsync(new List + { + new Utilisateur("user1", "Name", "Surname", "user1@example.com", "password", "User", false) + }); + + // Act + var result = await _authService.GetUtilisateur("user1"); + + // Assert + Assert.Equal(expectedUser.Pseudo, result.Pseudo); + Assert.True(result.EstAuthentifie); + } + + [Fact] + public async Task GetUtilisateur_NonExistentUser_ThrowsException() + { + // Arrange + _mockDataService.Setup(x => x.getAllUtilisateurs()).ReturnsAsync(new List()); + + // Act & Assert + await Assert.ThrowsAsync(() => _authService.GetUtilisateur("user2")); + } +} \ No newline at end of file diff --git a/VeraxShield/TestVeraxShield/IUtilisateursDataServiceTests.cs b/VeraxShield/TestVeraxShield/IUtilisateursDataServiceTests.cs new file mode 100644 index 0000000..75ba9ad --- /dev/null +++ b/VeraxShield/TestVeraxShield/IUtilisateursDataServiceTests.cs @@ -0,0 +1,25 @@ +using Moq; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; + +namespace TestVeraxShield; + +public class IUtilisateursDataServiceTests +{ + private readonly Mock _service = new Mock(); + + [Fact] + public async Task AjouterUtilisateur_AddsUserSuccessfully() + { + // Arrange + var user = new Utilisateur("testUser", "User", "Test", "dez", "password", "User", false); + _service.Setup(s => s.AjouterUtilisateur(It.IsAny())) + .Returns(Task.CompletedTask) + .Callback(u => Assert.Equal("testUser", u.Pseudo)); + + // Act + await _service.Object.AjouterUtilisateur(user); + + // Assert is handled by the Callback + } +} \ No newline at end of file diff --git a/VeraxShield/TestVeraxShield/TestVeraxShield.csproj b/VeraxShield/TestVeraxShield/TestVeraxShield.csproj index 6972f53..125d4a5 100644 --- a/VeraxShield/TestVeraxShield/TestVeraxShield.csproj +++ b/VeraxShield/TestVeraxShield/TestVeraxShield.csproj @@ -13,6 +13,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/VeraxShield/TestVeraxShield/UtilisateurDataServiceTests.cs b/VeraxShield/TestVeraxShield/UtilisateurDataServiceTests.cs new file mode 100644 index 0000000..5aeb3bc --- /dev/null +++ b/VeraxShield/TestVeraxShield/UtilisateurDataServiceTests.cs @@ -0,0 +1,56 @@ +using Microsoft.AspNetCore.Components; +using Moq; +using Newtonsoft.Json; +using RichardSzalay.MockHttp; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; + +namespace TestVeraxShield; + +public class UtilisateursDataServiceApiTests +{ + private readonly MockHttpMessageHandler _mockHttp; + private readonly HttpClient _clientHttp; + private readonly Mock _mockNavigationManager; + private readonly UtilisateursDataServiceApi _service; + + public UtilisateursDataServiceApiTests() + { + _mockHttp = new MockHttpMessageHandler(); + + // Mock the response for the API call + _mockHttp.When("https://Verax.com/api/utilisateurs/recuperer") + .Respond("application/json", JsonConvert.SerializeObject(new List + { + new Utilisateur("testUser", "User", "Test", "dez", "password", "User", false) + })); + + _clientHttp = _mockHttp.ToHttpClient(); + _clientHttp.BaseAddress = new System.Uri("https://Verax.com"); + + _mockNavigationManager = new Mock(); + _service = new UtilisateursDataServiceApi(_clientHttp, _mockNavigationManager.Object); + } + + [Fact] + public async Task GetAllUtilisateurs_ReturnsUsers() + { + // Act + var users = await _service.getAllUtilisateurs(); + + // Assert + Assert.Single(users); + Assert.Equal("testUser", users[0].Pseudo); + } + + [Fact] + public async Task GetUtilisateurFromPseudo_ReturnsUser() + { + // Act + var user = await _service.getUtilisateurFromPseudo("testUser"); + + // Assert + Assert.Equal("testUser", user.Pseudo); + } + +} \ No newline at end of file diff --git a/VeraxShield/TestVeraxShield/UtlisateurFactoryTests.cs b/VeraxShield/TestVeraxShield/UtlisateurFactoryTests.cs index c238ad8..226c5c4 100644 --- a/VeraxShield/TestVeraxShield/UtlisateurFactoryTests.cs +++ b/VeraxShield/TestVeraxShield/UtlisateurFactoryTests.cs @@ -1,3 +1,5 @@ +using Moq; + namespace TestVeraxShield.factoriesTests; using Xunit; @@ -31,5 +33,22 @@ public class UtilisateursFactoryTests // Assert } + + [Fact] + public void ToUtilisateur_HashesPassword_WhenSelectedUserPasswordDiffers() + { + // Setup the context or service to provide a selected user with a different password + var selectedUserService = new Mock(); + selectedUserService.Setup(s => s.GetSelectedUser()).Returns(new Utilisateur { Mdp = "differentPassword" }); + UtilisateursFactory.SetSelectedUserService(selectedUserService.Object); + + var modele = new FormulaireAjoutModele("user", "First", "Last", "email@test.com", "newPassword", "role", false); + + // Act + var result = UtilisateursFactory.toUtilisateur(modele); + + // Assert + Assert.NotEqual("newPassword", result.Mdp); // Assert password is hashed + } }