Let's not forget the test project, of course.
Some checks are pending
CI/CD / build-and-test (push) Waiting to run

This commit is contained in:
Felipe Cotti 2024-11-18 01:05:52 -03:00
parent 93be26fac8
commit 11812df93b

View file

@ -1,4 +1,5 @@
using Guestbooky.API.Controllers; using Guestbooky.API.Configurations;
using Guestbooky.API.Controllers;
using Guestbooky.API.DTOs.Auth; using Guestbooky.API.DTOs.Auth;
using Guestbooky.Application.UseCases.AuthenticateUser; using Guestbooky.Application.UseCases.AuthenticateUser;
using Guestbooky.Application.UseCases.RefreshToken; using Guestbooky.Application.UseCases.RefreshToken;
@ -15,18 +16,39 @@ public class AuthControllerTests
{ {
private readonly Mock<IMediator> _mediatorMock; private readonly Mock<IMediator> _mediatorMock;
private readonly Mock<ILogger<AuthController>> _loggerMock; private readonly Mock<ILogger<AuthController>> _loggerMock;
private readonly APISettings _settings;
public AuthControllerTests() public AuthControllerTests()
{ {
_mediatorMock = new Mock<IMediator>(); _mediatorMock = new Mock<IMediator>();
_loggerMock = new Mock<ILogger<AuthController>>(); _loggerMock = new Mock<ILogger<AuthController>>();
_settings = new APISettings() { RunningEnvironment = Guestbooky.API.Enums.RunningEnvironment.Development };
} }
[Fact] [Fact]
public async Task Login_ReturnsOk_WhenAuthenticated() public async Task Login_ReturnsOk_WhenAuthenticated()
{ {
// Arrange // Arrange
var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object); var httpContextMock = new Mock<HttpContext>();
var httpResponseMock = new Mock<HttpResponse>();
var headers = new HeaderDictionary();
var cookies = new Mock<IResponseCookies>();
httpResponseMock.SetupProperty(r => r.StatusCode);
httpResponseMock.SetupGet(r => r.Headers).Returns(headers);
httpResponseMock.SetupGet(r => r.Cookies).Returns(cookies.Object);
httpContextMock.SetupGet(h => h.Response).Returns(httpResponseMock.Object);
var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object, _settings)
{
ControllerContext = new ControllerContext()
{
HttpContext = httpContextMock.Object
}
};
var requestDto = new LoginRequestDto("testuser", "password"); var requestDto = new LoginRequestDto("testuser", "password");
@ -38,7 +60,9 @@ public class AuthControllerTests
// Assert // Assert
var okResult = Assert.IsType<OkObjectResult>(result); var okResult = Assert.IsType<OkObjectResult>(result);
var responseDto = Assert.IsType<LoginResponseDto>(okResult.Value); var responseDto = Assert.IsType<LoginResponseDto>(okResult.Value);
cookies.Verify(c => c.Append("token", It.IsAny<string>(), It.IsAny<CookieOptions>()), Times.Once);
Assert.Equal("testToken", responseDto.Token); Assert.Equal("testToken", responseDto.Token);
Assert.Equal("testRefreshToken", responseDto.RefreshToken); Assert.Equal("testRefreshToken", responseDto.RefreshToken);
} }
@ -47,7 +71,7 @@ public class AuthControllerTests
public async Task Login_ReturnsUnauthorized_WhenNotAuthenticated() public async Task Login_ReturnsUnauthorized_WhenNotAuthenticated()
{ {
// Arrange // Arrange
var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object); var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object, _settings);
var requestDto = new LoginRequestDto("testuser", "wrongpassword"); var requestDto = new LoginRequestDto("testuser", "wrongpassword");
@ -66,7 +90,7 @@ public class AuthControllerTests
public async Task Login_ReturnsProblemDetails_WhenExceptionIsThrown() public async Task Login_ReturnsProblemDetails_WhenExceptionIsThrown()
{ {
// Arrange // Arrange
var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object); var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object, _settings);
var requestDto = new LoginRequestDto("testuser", "password"); var requestDto = new LoginRequestDto("testuser", "password");
@ -89,7 +113,7 @@ public class AuthControllerTests
public async Task RefreshToken_ReturnsOk_WhenTokenMatches() public async Task RefreshToken_ReturnsOk_WhenTokenMatches()
{ {
// Arrange // Arrange
var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object); var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object, _settings);
var requestDto = new RefreshTokenRequestDto("refresh"); var requestDto = new RefreshTokenRequestDto("refresh");
@ -111,7 +135,7 @@ public class AuthControllerTests
public async Task RefreshToken_ReturnsUnauthorized_WhenTokenNotMatched() public async Task RefreshToken_ReturnsUnauthorized_WhenTokenNotMatched()
{ {
// Arrange // Arrange
var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object); var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object, _settings);
var requestDto = new RefreshTokenRequestDto("refresh"); var requestDto = new RefreshTokenRequestDto("refresh");
@ -133,7 +157,7 @@ public class AuthControllerTests
public async Task RefreshToken_ReturnsProblemDetails_WhenExceptionIsThrown() public async Task RefreshToken_ReturnsProblemDetails_WhenExceptionIsThrown()
{ {
// Arrange // Arrange
var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object); var controller = new AuthController(_mediatorMock.Object, _loggerMock.Object, _settings);
var requestDto = new RefreshTokenRequestDto("refresh"); var requestDto = new RefreshTokenRequestDto("refresh");