ajout d'un route GetByEmail pour dans UserController #45

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

@ -62,6 +62,22 @@ namespace API.Controllers
return NotFound();
}
}
[HttpGet("user/email/{email}")]
[ProducesResponseType(typeof(UserDto), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetByEmail(string email)
{
try
{
logger.LogInformation("[INFORMATION] Utilisateur avec l'username {email} a été trouvé.", email);
return Ok(userService.GetUserByEmail(email));
}
catch (ArgumentException)
{
logger.LogError("[ERREUR] Aucun utilisateur trouvé avec l'username {email}.", email);
return NotFound();
}
}
[HttpDelete("user/{id:int}")]
[ProducesResponseType(typeof(UserDto), 200)]

@ -17,6 +17,7 @@ public class UserDataServiceApi(IUserService<UserEntity> userService) : IUserSer
public UserDto GetUserById(int id) => userService.GetUserById(id).FromEntityToDto();
public UserDto GetUserByUsername(string username) => userService.GetUserByUsername(username).FromEntityToDto();
public UserDto GetUserByEmail(string email) => userService.GetUserByEmail(email).FromEntityToDto();
public bool DeleteUser(int id) => userService.DeleteUser(id);

@ -37,6 +37,17 @@ public class UserDataService : IUserService<UserEntity>
return userEntity;
}
public UserEntity GetUserByEmail(string email)
{
var userEntity = DbContext.Users.FirstOrDefault(u => u.Email == email);
if (userEntity == null)
{
throw new ArgumentException("Impossible de trouver l'utilisateur", nameof(email));
}
return userEntity;
}
public IEnumerable<UserEntity> GetUsers(int page, int number, UserOrderCriteria orderCriteria)
{
if (page <= 0)

@ -7,6 +7,7 @@ namespace Shared
public IEnumerable<TUser> GetUsers(int page, int number, UserOrderCriteria orderCriteria);
public TUser GetUserById(int id);
public TUser GetUserByUsername(string username);
public TUser GetUserByEmail(string email);
public bool DeleteUser(int id);
public TUser UpdateUser(int id, TUser user);
public TUser CreateUser(string username, string password, string email, bool isAdmin);

@ -117,6 +117,28 @@ public class UserUnitTest
Assert.True(valeur.IsAdmin);
}
}
[Fact]
public void GetUserEmailSuccess()
{
var userList = GetUsersData();
_userService.Setup(x => x.GetUserByEmail("adressemail@gmail.com"))
.Returns(userList[0]);
var usersController = new UsersController(new NullLogger<UsersController>(), _userService.Object);
var userResult = usersController.GetByEmail("adressemail@gmail.com");
if (userResult is OkObjectResult okObjectResult)
{
UserDto valeur = okObjectResult.Value as UserDto;
Assert.NotNull(valeur);
Assert.IsType<UserDto>(valeur);
Assert.Contains(valeur, userList);
Assert.Equal("adressemail@gmail.com", valeur.Email);
Assert.Equal("Useruser", valeur.Username);
Assert.Equal("motdepasse", valeur.Password);
Assert.True(valeur.IsAdmin);
}
}
[Fact]
public void GetUserUsernameFail()
@ -138,6 +160,26 @@ public class UserUnitTest
Assert.False(userList == valeur);
}
}
[Fact]
public void GetUserEmailFail()
{
var userList = GetUsersData();
_userService.Setup(x => x.GetUserByEmail("adressemail@gmail.com"))
.Returns(userList[0]);
var usersController = new UsersController(new NullLogger<UsersController>(), _userService.Object);
var userResult = usersController.GetByEmail("GYIIieihhh");
if (userResult is NotFoundObjectResult nfObjectResult)
{
var valeur = nfObjectResult.Value;
Assert.NotNull(valeur);
Assert.IsNotType<UserDto>(valeur);
Assert.DoesNotContain(valeur, userList);
Assert.False(userList == valeur);
}
}
[Fact]
public void DeleteUserSuccess()

@ -54,6 +54,15 @@ public class TestUserDataService
var result = _userDataService.GetUserByUsername("Test1");
Assert.Equal(1, result.Id);
}
[Fact]
public void GetUserByEmail_ReturnsCorrectUser()
{
_dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true });
_dbContext.Users.Add(new UserEntity() { Id = 2, Username = "Test2", Email = "example@email.com", Password = "password", IsAdmin = false });
_dbContext.SaveChanges();
var result = _userDataService.GetUserByEmail("example@email.com");
Assert.Equal(1, result.Id);
}
[Fact]
public void CreateUser_AddsNewUser()
@ -128,6 +137,15 @@ public class TestUserDataService
Assert.Throws<ArgumentException>(() => _userDataService.GetUserByUsername("Test2"));
}
[Fact]
public void GetUserByEmail_WithoutUsername_ThrowsException()
{
_dbContext.Users.Add(new UserEntity() { Id = 1, Username = "Test1", Email = "example@email.com", Password = "password", IsAdmin = true });
_dbContext.SaveChanges();
Assert.Throws<ArgumentException>(() => _userDataService.GetUserByEmail("test@test"));
}
[Fact]
public void DeleteUser_WithoutId_ReturnsFalse()
{

Loading…
Cancel
Save