public async void User_Register_Succeeds_When_User_Does_Not_Already_Exists() { _userRepository.Setup(u => u.GetUserByEmail(It.IsAny <string>())) .Returns(Task.FromResult <AppUser>(null)); _hashGenerator.Setup(h => h.ComputeHash(It.IsAny <string>())) .Returns("password-hash"); _jwtTokenGenerator.Setup(t => t.GenerateToken( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>())).Returns("jwt-token"); var command = new UserRegisterCommand { Email = "*****@*****.**", FirstName = "fname", LastName = "lname", Password = "******", }; var commandHandler = new UserRegisterCommandHandler( _userRepository.Object , _hashGenerator.Object , _jwtTokenGenerator.Object , _placeHolderImageProvider.Object , _unitOfWork.Object); var result = await commandHandler.Handle(command, CancellationToken.None); Assert.True(result.Success); Assert.NotNull(result.AccessToken); Assert.NotNull(result.User); }
public async void Register_User_Fails_When_User_Already_Exists() { _userRepository.Setup(u => u.UserExists("*****@*****.**")) .Returns(Task.FromResult(true)); var command = new UserRegisterCommand { Email = "*****@*****.**", FirstName = "fname", LastName = "lname", Password = "******", }; var commandHandler = new UserRegisterCommandHandler( _userRepository.Object , _hashGenerator.Object , _jwtTokenGenerator.Object , _placeHolderImageProvider.Object , _unitOfWork.Object); var result = await commandHandler.Handle(command, CancellationToken.None); Assert.False(result.Success); Assert.Equal("User already exists.", result.Message); }
public async Task RegisterUser_AddNewUser_CreateCustomer_ShouldFail(AutoMoqDataValidFixtures fixtures, IdentityUser identityUser) { //Arrange var expectedResult = new ValidationResult(); expectedResult.Errors.Add(CreateValidationFailure("0", "Error to create a new customer, same identity Number defined")); identityUser.Id = Guid.NewGuid().ToString(); var responseMessage = new ResponseMessage(expectedResult); _messageBusMock.Setup(s => s.RequestAsync <UserSaveIntegrationEvent, ResponseMessage>(It.IsAny <UserSaveIntegrationEvent>())).ReturnsAsync(responseMessage); _userRegisterProviderMock.Setup(s => s.CreateUserAsync(It.IsAny <IdentityUser>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success).Verifiable(); _userRegisterProviderMock.Setup(s => s.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(identityUser); _mediatorHandlerMock.Setup(s => s.PublishEvent(It.IsAny <UserCanceledEvent>())) .Verifiable("Notification was not sent"); var command = new CreateNewUserCommand("123", "Alexandre", "*****@*****.**", "*****@*****.**", "A3£fksk@sf324"); _sut = new UserRegisterCommandHandler(_userRegisterProviderMock.Object, _mediatorHandlerMock.Object, _messageBusMock.Object); //Act var response = await _sut.Handle(command, CancellationToken.None); //Assert _mediatorHandlerMock.Verify(m => m.PublishEvent(It.IsAny <UserCanceledEvent>()), Times.Once()); response.ValidationResult.Errors.Should().HaveCount(1); response.ValidationResult.Errors.Select(s => s.ErrorMessage).Should().Contain(expectedResult.Errors.FirstOrDefault().ErrorMessage); }
public async Task RegisterUser_AddNewUser_CreateCustomer_ShouldCreateCustomer(AutoMoqDataValidFixtures fixtures, IdentityUser identityUser) { //Arrange identityUser.Id = Guid.NewGuid().ToString(); var expectedResult = new ValidationResult(); var responseMessage = new ResponseMessage(expectedResult); _messageBusMock.Setup(s => s.RequestAsync <UserSaveIntegrationEvent, ResponseMessage>(It.IsAny <UserSaveIntegrationEvent>())).ReturnsAsync(responseMessage); _userRegisterProviderMock.Setup(s => s.CreateUserAsync(It.IsAny <IdentityUser>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success).Verifiable(); _userRegisterProviderMock.Setup(s => s.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(identityUser); var command = new CreateNewUserCommand("123", "Alexandre", "*****@*****.**", "*****@*****.**", "A3£fksk@sf324"); _sut = new UserRegisterCommandHandler(_userRegisterProviderMock.Object, _mediatorHandlerMock.Object, _messageBusMock.Object); //Act var response = await _sut.Handle(command, CancellationToken.None); //Assert response.ValidationResult.IsValid.Should().Be(true); }
public async Task RegisterUser_AddNewUser_UserAlreadyExists(AutoMoqDataValidFixtures fixtures) { //Arrange var identityError = new IdentityError { Code = "1", Description = "Username already exists" }; _userRegisterProviderMock.Setup(s => s.CreateUserAsync(It.IsAny <IdentityUser>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Failed(identityError)).Verifiable(); var command = new CreateNewUserCommand("123", "Alexandre", "*****@*****.**", "*****@*****.**", "A3£fksk@sf324"); _sut = new UserRegisterCommandHandler(_userRegisterProviderMock.Object, _mediatorHandlerMock.Object, _messageBusMock.Object); //Act var response = await _sut.Handle(command, CancellationToken.None); //Assert response.ValidationResult.Errors.Should().HaveCount(1); response.ValidationResult.Errors.Select(s => s.ErrorMessage).Should().Contain(identityError.Description); }
public async Task RegisterUser_AddNewUser_InvalidCommand(AutoMoqDataValidFixtures fixtures) { //Arrange var expectedResult = new ValidationResult(); expectedResult.Errors.Add(CreateValidationFailure("-1000", "Identity Number is required")); expectedResult.Errors.Add(CreateValidationFailure("-1001", "Name is required")); expectedResult.Errors.Add(CreateValidationFailure("-1002", "Username is required")); expectedResult.Errors.Add(CreateValidationFailure("-1005", "Invalid format of the email")); expectedResult.Errors.Add(CreateValidationFailure("-1003", "Email is required")); expectedResult.Errors.Add(CreateValidationFailure("-1004", "Password is required")); var command = new CreateNewUserCommand(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty); _sut = new UserRegisterCommandHandler(_userRegisterProviderMock.Object, _mediatorHandlerMock.Object, _messageBusMock.Object); //Act var response = await _sut.Handle(command, CancellationToken.None); //Assert response.ValidationResult.Errors.Should().HaveCount(7); response.ValidationResult.Errors.Select(s => s.ErrorCode).Should().Contain(expectedResult.Errors.Select(s => s.ErrorCode)); response.ValidationResult.Errors.Select(s => s.ErrorMessage).Should().Contain(expectedResult.Errors.Select(s => s.ErrorMessage)); }