public void Should_Return_NotFound_When_Authenticate_With_Incorrect_Email() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var fakeUserRepository = fakes.FakeUserRepository().Object; var hashService = new HashService(); var tokenService = new TokenService(fakeConfig); var authService = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var request = fakes.Get <LoginUserRequest>().First(); request.Email = "*****@*****.**"; // Act var controller = new AuthController(fakes.Mapper, authService); var actual = controller.Authenticate(request); // Assert Assert.NotNull(actual); Assert.IsType <ObjectResult>(actual.Result); var result = actual.Result as ObjectResult; Assert.NotNull(result.Value); Assert.Equal(404, result.StatusCode); // Not Found Assert.IsType <Response>(result.Value); }
public void Should_Return_User_And_Token_When_Authenticate_With_Correct_Credentials() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var fakeUserRepository = fakes.FakeUserRepository().Object; var tokenService = new TokenService(fakeConfig); var hashService = new HashService(); var request = fakes.Get <LoginUserRequest>().First(); var user = fakes.Get <User>().First(); var response = new LoginUserResponse(); response.User = fakes.Mapper.Map <UserResponse>(user); response.ExpiresIn = tokenService.GetExpirationInSeconds(); // Act var service = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var actual = service.Authenticate(request).Result; var data = actual.Data as LoginUserResponse; response.Token = data.Token; // Should use the generated token for comparison var expected = Responses.OkResponse(null, response); // Assert Assert.IsType <Response>(actual); Assert.NotNull(actual); Assert.Equal(expected, actual, new LoginUserResponseComparer()); Assert.True(tokenService.IsValid(data.Token)); }
public void Should_Return_User_When_Register_With_Valid_Credentials() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var tokenService = new TokenService(fakeConfig); var hashService = new HashService(); var mockUserRepository = fakes.FakeUserRepository(); // Returns null when GetByEmail is called, so the service doesn't return Conflict. mockUserRepository.Setup(x => x.GetByEmail(It.IsAny <string>())) .Returns(Task.FromResult <User>(null)); var fakeUserRepository = mockUserRepository.Object; var request = fakes.Get <RegisterUserRequest>().First(); var user = fakes.Get <User>().First(); var response = fakes.Mapper.Map <UserResponse>(user); response.Id = 999; // Expected user id response.Role = EUserRole.DEVELOPER; // By default, user is created as DEVELOPER // Act var service = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var actual = service.Register(request).Result; response.CreatedAt = (actual.Data as UserResponse).CreatedAt; var expected = Responses.OkResponse(null, response); // Assert Assert.IsType <Response>(actual); Assert.NotNull(actual); Assert.Equal(expected, actual, new UserResponseComparer()); }
public void Should_Return_BadRequest_When_Register_And_An_Error_Happens() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var fakeUserRepository = fakes.FakeUserRepositoryException().Object; var hashService = new HashService(); var tokenService = new TokenService(fakeConfig); var authService = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var request = fakes.Get <RegisterUserRequest>().First(); // Act var controller = new AuthController(fakes.Mapper, authService); var actual = controller.Register(request); // Assert Assert.NotNull(actual); Assert.IsType <ObjectResult>(actual.Result); var result = actual.Result as ObjectResult; Assert.NotNull(result.Value); Assert.Equal(400, result.StatusCode); // Bad Request Assert.IsType <Response>(result.Value); }
public void Should_Return_Ok_When_Register_With_Valid_Credentials() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var fakeUserRepository = fakes.FakeUserRepository().Object; var hashService = new HashService(); var tokenService = new TokenService(fakeConfig); var authService = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var request = fakes.Get <RegisterUserRequest>().First(); request.Email = "*****@*****.**"; // Email that doesn't exist // Act var controller = new AuthController(fakes.Mapper, authService); var actual = controller.Register(request); // Assert Assert.NotNull(actual); Assert.IsType <ObjectResult>(actual.Result); var result = actual.Result as ObjectResult; Assert.NotNull(result.Value); Assert.Equal(200, result.StatusCode); // Ok Assert.IsType <Response>(result.Value); }
public void Should_Return_True_When_IsValid_With_Valid_Token() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var user = fakes.Get <User>().First(); // Act var service = new TokenService(fakeConfig); var token = service.GenerateToken(user); var valid = service.IsValid(token); // Assert Assert.True(valid); }
public void Should_Return_Valid_Token_When_GenerateToken() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var user = fakes.Get <User>().First(); // Act var service = new TokenService(fakeConfig); var token = service.GenerateToken(user); // Assert Assert.NotNull(token); Assert.IsType <string>(token); Assert.True(service.IsValid(token)); }
public void Should_Return_False_When_IsValid_With_Invalid_Token() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; // Token with invalid signing key, without id and role claims var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIx" + "MjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iO" + "nRydWUsImp0aSI6ImVhNzYwZjNhLTNmYTUtNDZlMy1hNWQ2LWJ" + "iOGNkOGYyMzU4YiIsImlhdCI6MTU5NTM4NjE2MywiZXhwIjoxNT" + "k1Mzg5NzYzfQ.6D4sYkKj_e7y2VVR3uvyFiRVr6Qd8Io42ApXR5jZiuY"; // Act var service = new TokenService(fakeConfig); var valid = service.IsValid(token); // Assert Assert.False(valid); }
public void Should_Return_Conflict_When_Register_With_Email_Already_In_Use() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var fakeUserRepository = fakes.FakeUserRepository().Object; var tokenService = new TokenService(fakeConfig); var hashService = new HashService(); var request = fakes.Get <RegisterUserRequest>().First(); var expected = Responses.ConflictResponse("Esse email já está sendo utilizado"); // Act var service = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var actual = service.Register(request).Result; // Assert Assert.IsType <Response>(actual); Assert.NotNull(actual); Assert.Equal(expected, actual, new ResponseComparer()); }
public void Should_Return_BadRequest_When_Register_And_Exception_Is_Thrown() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var fakeUserRepository = fakes.FakeUserRepositoryException().Object; var tokenService = new TokenService(fakeConfig); var hashService = new HashService(); var request = fakes.Get <RegisterUserRequest>().First(); var expected = Responses.BadRequestResponse("Test Exception"); // Act var service = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var actual = service.Register(request).Result; // Assert Assert.ThrowsAnyAsync <Exception>(() => service.Register(request)); Assert.IsType <Response>(actual); Assert.NotNull(actual); Assert.Equal(expected, actual, new ResponseComparer()); }
public void Should_Return_NotFound_When_Authenticate_With_Incorrect_Email() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var fakeUserRepository = fakes.FakeUserRepository().Object; var tokenService = new TokenService(fakeConfig); var hashService = new HashService(); var request = fakes.Get <LoginUserRequest>().First(); request.Email = "*****@*****.**"; // Email that doesn't exists in test data var expected = Responses.NotFoundResponse("Usuário não encontrado"); // Act var service = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var actual = service.Authenticate(request).Result; // Assert Assert.IsType <Response>(actual); Assert.NotNull(actual); Assert.Equal(expected, actual, new ResponseComparer()); }
public void Should_Return_Forbidden_When_Authenticate_With_Incorrect_Password() { // Arrange var fakes = new Fakes(); var fakeConfig = fakes.FakeConfiguration().Object; var fakeUserRepository = fakes.FakeUserRepository().Object; var tokenService = new TokenService(fakeConfig); var hashService = new HashService(); var request = fakes.Get <LoginUserRequest>().First(); request.Password = "******"; // Incorrect password var expected = Responses.ForbiddenResponse("Email ou senha incorretos"); // Act var service = new AuthService(fakes.Mapper, fakeUserRepository, tokenService, hashService); var actual = service.Authenticate(request).Result; // Assert Assert.IsType <Response>(actual); Assert.NotNull(actual); Assert.Equal(expected, actual, new ResponseComparer()); }