From a6fdb3242e3f1de387c6f000ca50682c4eeee51b Mon Sep 17 00:00:00 2001 From: Leni BEAULATON Date: Thu, 20 Mar 2025 14:49:48 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'WF=5FEF=5FApi/?= =?UTF-8?q?XUnitTest/UnitTest1.cs'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WF_EF_Api/XUnitTest/UnitTest1.cs | 292 +++++++++++++++++++++++++++++-- 1 file changed, 282 insertions(+), 10 deletions(-) diff --git a/WF_EF_Api/XUnitTest/UnitTest1.cs b/WF_EF_Api/XUnitTest/UnitTest1.cs index f8a0369..6ab3df3 100644 --- a/WF_EF_Api/XUnitTest/UnitTest1.cs +++ b/WF_EF_Api/XUnitTest/UnitTest1.cs @@ -1,11 +1,283 @@ -namespace XUnitTest -{ - public class UnitTest1 - { - [Fact] - public void Test1() - { - - } - } +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Moq; + + +using WfApi.Controllers; +using Shared; +using DTO; + +namespace XUnitTest +{ + public class UnitTest1 + { + private readonly Mock> _mockUserService; + private readonly Mock> _mockLogger; + private readonly UsersController _userController; + + public UnitTest1() + { + // Initialisation des mocks + _mockUserService = new Mock>(); + _mockLogger = new Mock>(); + _userController = new UsersController(_mockUserService.Object, _mockLogger.Object); + } + + + + [Fact] + public async Task Get_ReturnsOk_WhenUserExists() + { + // Arrange + var userId = 1; + var userDTO = new UserDTO + { + Id = userId, + Pseudo = "test", + Email = "test@unitaire.fr", + ImageProfil = "http://test", + Password = "1234" + }; + + _mockUserService.Setup(service => service.GetUserById(userId)).ReturnsAsync(userDTO); + + // Act + var result = await _userController.Get(userId); + + // Assert + Assert.IsType(result); + } + + + + + [Fact] + public async Task GetAllUsers_ReturnsOk() + { + // Arrange + var userDTO = new UserDTO + { + Id = 1, + Pseudo = "test", + Email = "test@unitaire.fr", + ImageProfil = "http://test", + Password = "1234" + }; + var userDTO2 = new UserDTO + { + Id = 2, + Pseudo = "test", + Email = "test@unitaire.fr", + ImageProfil = "http://test", + Password = "1234" + }; + + _mockUserService.Setup(service => service.GetUserById(1)).ReturnsAsync(userDTO); + _mockUserService.Setup(service => service.GetUserById(2)).ReturnsAsync(userDTO); + + // Act + var result = await _userController.GetAllUsers(); + + // Assert + Assert.IsType(result); + } + + + + [Fact] + public async Task GetHashPassword_ReturnsOk_WhenPasswordHashIsFound() + { + // Arrange + var username = "testUser"; + var expectedHash = "hashedPassword"; + + var taskResult = Task.FromResult(expectedHash); + _mockUserService.Setup(service => service.GetHashPassword(username)).Returns(taskResult); + + // Act + var result = await _userController.GetHashPassword(username); + + // Assert + Assert.IsType(result); + } + + [Fact] + public async Task GetUserByUsername_ReturnsOk_WhenPasswordHashIsFound() + { + // Arrange + var username = "testUser"; + var userDTO = new UserDTO + { + Id = 1, + Pseudo = "testUser", + Email = "test@unitaire.fr", + ImageProfil = "http://test", + Password = "1234" + }; + + var taskResult = Task.FromResult(userDTO); + _mockUserService.Setup(service => service.GetUserByUsername(username)).Returns(taskResult); + + // Act + var result = await _userController.GetUserByUsername(username); + + // Assert + Assert.IsType(result); + } + + [Fact] + public async Task GetUserByEmail_ReturnsOk_WhenUserExists() + { + // Arrange + var email = "test@unitaire.fr"; + var userDTO = new UserDTO + { + Id = 1, + Pseudo = "testUser", + Email = email, + ImageProfil = "http://test", + Password = "1234" + }; + + + var taskResult = Task.FromResult(userDTO); + _mockUserService.Setup(service => service.GetUserByEmail(email)).Returns(taskResult); + + // Act + var result = await _userController.GetUserByEmail(email); + + // Assert + Assert.IsType(result); + } + + [Fact] + public async Task GetCountUser_ReturnsOk_WhenCountIsSuccessful() + { + // Arrange + var expectedCount = 5; + var taskResult = Task.FromResult(expectedCount); + + _mockUserService.Setup(service => service.CountUser()).Returns(taskResult); + + // Act + var result = await _userController.GetCountUser(); + + // Assert + Assert.IsType(result); + } + + [Fact] + public async Task GetExistUsername_ReturnsOk_WhenUserExists() + { + // Arrange + var username = "testUser"; + var taskResult = Task.FromResult(true); + + + _mockUserService.Setup(service => service.ExistUsername(username)).Returns(taskResult); + + // Act + var result = await _userController.GetExistUsername(username); + + // Assert + Assert.IsType(result); + + } + + [Fact] + public async Task GetExistEmail_ReturnsOk_WhenEmailExists() + { + // Arrange + var email = "test@unitaire.fr"; + var taskResult = Task.FromResult(true); + + _mockUserService.Setup(service => service.ExistEmail(email)).Returns(taskResult); + + // Act + var result = await _userController.GetExistEmail(email); + + // Assert + Assert.IsType(result); + + } + [Fact] + public async Task UpdateUser_ReturnsOk_WhenUserDataIsValid() + { + // Arrange + var id = 1; + var updatedUser = new UserDTO + { + Id = id, + Pseudo = "UpdatedUser", + Email = "updated@unitaire.fr", + ImageProfil = "http://updatedImage.com", + Password = "newPassword123" + }; + + var taskResult = Task.FromResult(updatedUser); + + _mockUserService.Setup(service => service.UpdateUser(id, updatedUser)).Returns(taskResult); + + // Act + var result = await _userController.UpdateUser(id, updatedUser); + + // Assert + var okResult = Assert.IsType(result); + + Assert.IsType(result); + } + [Fact] + public async Task CreateUser_ReturnsCreatedAtAction_WhenUserIsValid() + { + // Arrange + var newUser = new UserDTO + { + Id = 2, + Pseudo = "NewUser", + Email = "newuser@unitaire.fr", + ImageProfil = "http://newuserimage.com", + Password = "newPassword123" + }; + + _mockUserService.Setup(service => service.GetUserById(newUser.Id)).ReturnsAsync((UserDTO)null); + + _mockUserService.Setup(service => service.AddUser(newUser)).Verifiable(); + + // Act + var result = await _userController.CreateUser(newUser); + + // Assert + var createdResult = Assert.IsType(result); + Assert.Equal(newUser.Id, createdResult.RouteValues["id"]); + } + + + [Fact] + public async Task DeletePlayer_ReturnsOk_WhenPlayerExists() + { + // Arrange + var id = 1; + var existingPlayer = new UserDTO + { + Id = id, + Pseudo = "ExistingUser", + Email = "existing@unitaire.fr", + ImageProfil = "http://existingimage.com", + Password = "existingPassword123" + }; + + _mockUserService.Setup(service => service.GetUserById(id)).ReturnsAsync(existingPlayer); + + _mockUserService.Setup(service => service.RemoveUser(existingPlayer)).Verifiable(); + + // Act + var result = await _userController.DeletePlayer(id); + + // Assert + Assert.IsType(result); + + } + + + } } \ No newline at end of file From dc010f74ccc0d2c9e2430f847668b8459e50f5af Mon Sep 17 00:00:00 2001 From: Leni BEAULATON Date: Thu, 20 Mar 2025 14:53:42 +0100 Subject: [PATCH 2/3] Correction fichier de test --- WF_EF_Api/StubApi/QuoteService.cs | 5 +++++ WF_EF_Api/XUnitTest/{UnitTest1.cs => ApiUnitTest.cs} | 0 WF_EF_Api/XUnitTest/XUnitTest.csproj | 7 +++++++ 3 files changed, 12 insertions(+) rename WF_EF_Api/XUnitTest/{UnitTest1.cs => ApiUnitTest.cs} (100%) diff --git a/WF_EF_Api/StubApi/QuoteService.cs b/WF_EF_Api/StubApi/QuoteService.cs index e05f3ae..50e6284 100644 --- a/WF_EF_Api/StubApi/QuoteService.cs +++ b/WF_EF_Api/StubApi/QuoteService.cs @@ -63,6 +63,11 @@ namespace StubApi } + public Task> GetAllQuoteLang(int index, int pageSize, int lang) + { + throw new NotImplementedException(); + } + public async Task GetDayliQuote(int lang) { throw new NotImplementedException(); diff --git a/WF_EF_Api/XUnitTest/UnitTest1.cs b/WF_EF_Api/XUnitTest/ApiUnitTest.cs similarity index 100% rename from WF_EF_Api/XUnitTest/UnitTest1.cs rename to WF_EF_Api/XUnitTest/ApiUnitTest.cs diff --git a/WF_EF_Api/XUnitTest/XUnitTest.csproj b/WF_EF_Api/XUnitTest/XUnitTest.csproj index 3aa9860..d4e6dcc 100644 --- a/WF_EF_Api/XUnitTest/XUnitTest.csproj +++ b/WF_EF_Api/XUnitTest/XUnitTest.csproj @@ -12,10 +12,17 @@ + + + + + + + From 9ff0dc316c488aeb290dd0773a159317623549e7 Mon Sep 17 00:00:00 2001 From: Leni BEAULATON Date: Thu, 20 Mar 2025 14:54:39 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 81ae64e..2e0f5ac 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # WF-PmAPI ### Paquets -NSwag.AspNetCore +NSwag.AspNetCore
+Moq