ModifUpdateUser #49

Merged
victor.gaborit merged 2 commits from ModifUpdateUser into master 1 year ago

@ -150,6 +150,8 @@ namespace API.Controllers
[HttpPost] [HttpPost]
[ProducesResponseType(typeof(UserDto), 201)] [ProducesResponseType(typeof(UserDto), 201)]
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 409)]
[ProducesResponseType(typeof(string), 410)]
public IActionResult CreateUser([FromBody] UserDto dto) public IActionResult CreateUser([FromBody] UserDto dto)
{ {
if (dto.Username == null || dto.Password == null || dto.Email == null) if (dto.Username == null || dto.Password == null || dto.Email == null)
@ -179,9 +181,10 @@ namespace API.Controllers
[ProducesResponseType(typeof(UserDto), 200)] [ProducesResponseType(typeof(UserDto), 200)]
[ProducesResponseType(typeof(string), 400)] [ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)] [ProducesResponseType(typeof(string), 404)]
public IActionResult UpdateUser(int id, [FromBody] UserDto UserDto) [ProducesResponseType(typeof(string), 409)]
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); logger.LogError("[ERREUR] Problème ID - La mise à jour de l'utilisateur avec l'id {id} a échouée.", id);
return BadRequest(); return BadRequest();
@ -194,15 +197,17 @@ namespace API.Controllers
return BadRequest(); 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", logger.LogInformation("[INFORMATION] La mise à jour de l'utilisateur avec l'id {id} a été effectuée",
id); id);
return Ok(userService.UpdateUser(id, UserDto)); return Ok(userService.UpdateUser(id, userDto));
} }
logger.LogError("[ERREUR] Email ou nom d'utilisateur déjà utilisé");
logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'id {id}.", id); return StatusCode(409,"Email ou nom d'utilisateur déjà utilisé");
return NotFound();
} }
} }
} }

@ -350,6 +350,106 @@ public class UserUnitTest
Assert.Equal(400, bdObjectResult.StatusCode); 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<UsersController>(), _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<UsersController>(), _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<UsersController>(), _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<UsersController>(), _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<UsersController>(), _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<UserDto> GetUsersData() private List<UserDto> GetUsersData()
{ {

Loading…
Cancel
Save