From 7b869e5834dfd35e762616f3097d208b6b9609a3 Mon Sep 17 00:00:00 2001 From: Leni BEAULATON Date: Thu, 20 Mar 2025 14:41:00 +0100 Subject: [PATCH] Test Get_OK --- WF_EF_Api/StubApi/QuoteService.cs | 5 + WF_EF_Api/XUnitTest/APIUnitTest.cs | 283 +++++++++++++++++++++++++++ WF_EF_Api/XUnitTest/UnitTest1.cs | 11 -- WF_EF_Api/XUnitTest/XUnitTest.csproj | 8 + 4 files changed, 296 insertions(+), 11 deletions(-) create mode 100644 WF_EF_Api/XUnitTest/APIUnitTest.cs delete mode 100644 WF_EF_Api/XUnitTest/UnitTest1.cs 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/APIUnitTest.cs b/WF_EF_Api/XUnitTest/APIUnitTest.cs new file mode 100644 index 0000000..951fafc --- /dev/null +++ b/WF_EF_Api/XUnitTest/APIUnitTest.cs @@ -0,0 +1,283 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Moq; + + +using WfApi.Controllers; +using Shared; +using DTO; + +namespace XUnitTest +{ + public class APIUnitTest + { + private readonly Mock> _mockUserService; + private readonly Mock> _mockLogger; + private readonly UsersController _userController; + + public APIUnitTest() + { + // 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 diff --git a/WF_EF_Api/XUnitTest/UnitTest1.cs b/WF_EF_Api/XUnitTest/UnitTest1.cs deleted file mode 100644 index f8a0369..0000000 --- a/WF_EF_Api/XUnitTest/UnitTest1.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace XUnitTest -{ - public class UnitTest1 - { - [Fact] - public void Test1() - { - - } - } -} \ No newline at end of file diff --git a/WF_EF_Api/XUnitTest/XUnitTest.csproj b/WF_EF_Api/XUnitTest/XUnitTest.csproj index 3aa9860..27bd785 100644 --- a/WF_EF_Api/XUnitTest/XUnitTest.csproj +++ b/WF_EF_Api/XUnitTest/XUnitTest.csproj @@ -11,11 +11,19 @@ + + + + + + + + -- 2.36.3