示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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));
        }