ModifUpdateUser #49

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

@ -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,9 +181,10 @@ namespace API.Controllers
[ProducesResponseType(typeof(UserDto), 200)]
[ProducesResponseType(typeof(string), 400)]
[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);
return BadRequest();
@ -194,15 +197,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é");
}
}
}

@ -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<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()
{

Loading…
Cancel
Save