From fd42cbf10410184f17afafd9c59f805747a48548 Mon Sep 17 00:00:00 2001 From: Victor GABORIT Date: Sat, 30 Mar 2024 07:29:49 +0100 Subject: [PATCH 1/2] =?UTF-8?q?=20modification=20pour=20le=20verbe=20PUT?= =?UTF-8?q?=20du=20UserController=20afin=20qu'il=20retour=20une=20erreur?= =?UTF-8?q?=20409=20conflit=20si=20le=20username=20ou=20l'email=20est=20d?= =?UTF-8?q?=C3=A9j=C3=A0=20utilis=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/API/Controllers/UserController.cs | 16 +-- API_SQLuedo/TestAPI/UserUnitTest.cs | 100 ++++++++++++++++++ 2 files changed, 109 insertions(+), 7 deletions(-) diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index 1c1a6d4..5096353 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -179,9 +179,9 @@ namespace API.Controllers [ProducesResponseType(typeof(UserDto), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] - public IActionResult UpdateUser(int id, [FromBody] UserDto UserDto) + public IActionResult UpdateUser(int id, [FromBody] UserDto userDto) { - if (id != UserDto.Id) + if (id != userDto.Id) { logger.LogError("[ERREUR] Problème ID - La mise à jour de l'utilisateur avec l'id {id} a échouée.", id); return BadRequest(); @@ -194,15 +194,17 @@ namespace API.Controllers return BadRequest(); } - if (UserDto != null) + if (userDto.Username == userService.GetUserById(id).Username && !userService.IsEmailTaken(userDto.Email) + || (userDto.Email == userService.GetUserById(id).Email && + !userService.IsUsernameTaken(userDto.Username)) + || (!userService.IsEmailTaken(userDto.Email) && !userService.IsUsernameTaken(userDto.Username))) { logger.LogInformation("[INFORMATION] La mise à jour de l'utilisateur avec l'id {id} a été effectuée", id); - return Ok(userService.UpdateUser(id, UserDto)); + return Ok(userService.UpdateUser(id, userDto)); } - - logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id {id}.", id); - return NotFound(); + logger.LogError("[ERREUR] Email ou nom d'utilisateur déjà utilisé"); + return StatusCode(409,"Email ou nom d'utilisateur déjà utilisé"); } } } \ No newline at end of file diff --git a/API_SQLuedo/TestAPI/UserUnitTest.cs b/API_SQLuedo/TestAPI/UserUnitTest.cs index abdfbfb..599b33f 100644 --- a/API_SQLuedo/TestAPI/UserUnitTest.cs +++ b/API_SQLuedo/TestAPI/UserUnitTest.cs @@ -350,6 +350,106 @@ public class UserUnitTest Assert.Equal(400, bdObjectResult.StatusCode); } } + [Fact] + public void UpdateUserFailWithExistingUsername() + { + _userService.Setup(x => x.IsUsernameTaken("Useruser")).Returns(true); + _userService.Setup(x => x.IsEmailTaken("heudfk@hdye.com")).Returns(false); + _userService.Setup(x => x.GetUserById(1)).Returns(new UserDto(1, "Leuser", "motdepasse", "deuxadresse@gmail.com", true)); + _userService.Setup(x => x.UpdateUser(1, new UserDto(1, "Useruser", "Passssss", "heudfk@hdye.com", true))) + .Returns(new UserDto("Useruser", "Passssss", "heudfk@hdye.com", true)); + + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.UpdateUser(1, new UserDto(1,"Useruser", "Passssss", "heudfk@hdye.com", true)); + + if (userResult is StatusCodeResult statusCodeResult) + { + Assert.Equal(409, statusCodeResult.StatusCode); + } + } + [Fact] + public void UpdateUserFailWithExistingEmail() + { + _userService.Setup(x => x.IsUsernameTaken("Test1234")).Returns(false); + _userService.Setup(x => x.IsEmailTaken("adressemail@gmail.com")).Returns(true); + _userService.Setup(x => x.GetUserById(1)).Returns(new UserDto(1, "Leuser", "motdepasse", "deuxadresse@gmail.com", true)); + _userService.Setup(x => x.UpdateUser(1, new UserDto(1, "Test1234", "Passssss", "adressemail@gmail.com", true))) + .Returns(new UserDto("Test1234", "Passssss", "adressemail@gmail.com", true)); + + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.UpdateUser(1, new UserDto(1,"Test1234", "Passssss", "adressemail@gmail.com", true)); + + if (userResult is StatusCodeResult statusCodeResult) + { + Assert.Equal(409, statusCodeResult.StatusCode); + } + } + [Fact] + public void UpdateUserFailWithExistingEmailAndExistingUsername() + { + _userService.Setup(x => x.IsUsernameTaken("Useruser")).Returns(true); + _userService.Setup(x => x.IsEmailTaken("adressemail@gmail.com")).Returns(true); + _userService.Setup(x => x.GetUserById(1)).Returns(new UserDto(1, "Leuser", "motdepasse", "deuxadresse@gmail.com", true)); + _userService.Setup(x => x.UpdateUser(1, new UserDto(1, "Useruser", "Passssss", "adressemail@gmail.com", true))) + .Returns(new UserDto("Useruser", "Passssss", "adressemail@gmail.com", true)); + + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.UpdateUser(1, new UserDto(1,"Useruser", "Passssss", "adressemail@gmail.com", true)); + + if (userResult is StatusCodeResult statusCodeResult) + { + Assert.Equal(409, statusCodeResult.StatusCode); + } + } + [Fact] + public void UpdateUserSucessWithSameEmail() + { + _userService.Setup(x => x.IsUsernameTaken("Test1234")).Returns(false); + _userService.Setup(x => x.IsEmailTaken("deuxadresse@gmail.com")).Returns(true); + _userService.Setup(x => x.GetUserById(1)).Returns(new UserDto(1, "Leuser", "motdepasse", "deuxadresse@gmail.com", true)); + _userService.Setup(x => x.UpdateUser(1, new UserDto(1, "Test1234", "Passssss", "deuxadresse@gmail.com", true))) + .Returns(new UserDto("Test1234", "Passssss", "deuxadresse@gmail.com", true)); + + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.UpdateUser(1, new UserDto(1,"Test1234", "Passssss", "deuxadresse@gmail.com", true)); + if (userResult is OkObjectResult okObjectResult) + { + UserDto valeur = okObjectResult.Value as UserDto; + + Assert.NotNull(valeur); + Assert.Equal("Test1234", valeur.Username); + Assert.Equal("Passssss", valeur.Password); + Assert.Equal("deuxadresse@gmail.com", valeur.Email); + Assert.True(valeur.IsAdmin); + } + } + [Fact] + public void UpdateUserSucessWithSameUsername() + { + _userService.Setup(x => x.IsUsernameTaken("Leuser")).Returns(true); + _userService.Setup(x => x.IsEmailTaken("heudfk@hdye.com")).Returns(false); + _userService.Setup(x => x.GetUserById(1)).Returns(new UserDto(1, "Leuser", "motdepasse", "deuxadresse@gmail.com", true)); + _userService.Setup(x => x.UpdateUser(1, new UserDto(1, "Test1234", "Passssss", "heudfk@hdye.com", true))) + .Returns(new UserDto("Leuser", "Passssss", "heudfk@hdye.com", true)); + + var usersController = new UsersController(new NullLogger(), _userService.Object); + + var userResult = usersController.UpdateUser(1, new UserDto(1,"Leuser", "Passssss", "heudfk@hdye.com", true)); + if (userResult is OkObjectResult okObjectResult) + { + UserDto valeur = okObjectResult.Value as UserDto; + + Assert.NotNull(valeur); + Assert.Equal("Leuser", valeur.Username); + Assert.Equal("Passssss", valeur.Password); + Assert.Equal("heudfk@hdye.com", valeur.Email); + Assert.True(valeur.IsAdmin); + } + } private List GetUsersData() { -- 2.36.3 From d112da2e9be099090456be3c2634c1cd4168e8e5 Mon Sep 17 00:00:00 2001 From: Victor GABORIT Date: Sat, 30 Mar 2024 08:31:03 +0100 Subject: [PATCH 2/2] =?UTF-8?q?=20oublie=20:=20ajout=20des=20annotations?= =?UTF-8?q?=20sur=20les=20verbes=20POST=20et=20PUT=20du=20UserController?= =?UTF-8?q?=20pour=20indiquer=20quel=20code=20de=20retour=20puevent=20?= =?UTF-8?q?=C3=AAtre=20renvoy=C3=A9s=20par=20les=20methodes=20concern?= =?UTF-8?q?=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API_SQLuedo/API/Controllers/UserController.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/API_SQLuedo/API/Controllers/UserController.cs b/API_SQLuedo/API/Controllers/UserController.cs index 5096353..6c07a54 100644 --- a/API_SQLuedo/API/Controllers/UserController.cs +++ b/API_SQLuedo/API/Controllers/UserController.cs @@ -150,6 +150,8 @@ namespace API.Controllers [HttpPost] [ProducesResponseType(typeof(UserDto), 201)] [ProducesResponseType(typeof(string), 400)] + [ProducesResponseType(typeof(string), 409)] + [ProducesResponseType(typeof(string), 410)] public IActionResult CreateUser([FromBody] UserDto dto) { if (dto.Username == null || dto.Password == null || dto.Email == null) @@ -179,6 +181,7 @@ namespace API.Controllers [ProducesResponseType(typeof(UserDto), 200)] [ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 404)] + [ProducesResponseType(typeof(string), 409)] public IActionResult UpdateUser(int id, [FromBody] UserDto userDto) { if (id != userDto.Id) -- 2.36.3