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 diff --git a/WF_EF_Api/XUnitTest/ApiUnitTest.cs b/WF_EF_Api/XUnitTest/ApiUnitTest.cs new file mode 100644 index 0000000..6ab3df3 --- /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 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 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..d4e6dcc 100644 --- a/WF_EF_Api/XUnitTest/XUnitTest.csproj +++ b/WF_EF_Api/XUnitTest/XUnitTest.csproj @@ -12,10 +12,17 @@ + + + + + + +