Esempio n. 1
0
        public async Task HandleAsync_Should_Throw_ValidationException_When_Account_Is_Not_Confirmed()
        {
            var requestPasswordResetTokenCommand = new RequestPasswordResetTokenCommand("*****@*****.**");
            var account = Account.Builder()
                          .SetId(Guid.NewGuid())
                          .SetEmail(requestPasswordResetTokenCommand.Email)
                          .SetConfirmed(false)
                          .SetPasswordHash("PasswordHash")
                          .SetSecurityStamp(Guid.NewGuid())
                          .SetCreated(DateTimeOffset.UtcNow)
                          .SetRoles(new List <Guid> {
                Guid.NewGuid()
            })
                          .Build();
            var getAccountResult = GetResult <Account> .Ok(account);

            var errors = new Collection <IError>
            {
                new Error(AccountErrorCodeEnumeration.NotConfirmed, AccountErrorMessage.NotConfirmed)
            };
            var emailIsConfirmedVerificationResult = VerificationResult.Fail(errors);

            _accountGetterServiceMock.Setup(x => x.GetByEmailAsync(It.IsAny <string>()))
            .ReturnsAsync(getAccountResult);
            _accountVerificationServiceMock.Setup(x => x.VerifyAccountIsConfirmed(It.IsAny <bool>()))
            .Returns(emailIsConfirmedVerificationResult);

            Func <Task> result = async() => await _commandHandler.HandleAsync(requestPasswordResetTokenCommand);

            var exceptionResult = await result.Should().ThrowExactlyAsync <ValidationException>();

            exceptionResult.And.Errors.Should().BeEquivalentTo(errors);
        }
Esempio n. 2
0
        public async Task HandleAsync_Should_Throw_ValidationException_When_Account_Is_Not_Found()
        {
            var requestPasswordResetTokenCommand = new RequestPasswordResetTokenCommand("*****@*****.**");
            var errors = new Collection <IError>
            {
                new Error(AccountErrorCodeEnumeration.NotFound, AccountErrorMessage.NotFound)
            };
            var getAccountResult = GetResult <Account> .Fail(errors);

            _accountGetterServiceMock.Setup(x => x.GetByEmailAsync(It.IsAny <string>()))
            .ReturnsAsync(getAccountResult);

            Func <Task> result = async() => await _commandHandler.HandleAsync(requestPasswordResetTokenCommand);

            var exceptionResult = await result.Should().ThrowExactlyAsync <ValidationException>();

            exceptionResult.And.Errors.Should().BeEquivalentTo(errors);
        }
Esempio n. 3
0
        public async Task RequestPasswordResetTokenAsync_Should_Return_NoContentResult()
        {
            var requestPasswordResetTokenRequest = new RequestPasswordResetTokenRequest
            {
                Email = "*****@*****.**"
            };
            var requestPasswordResetTokenCommand = new RequestPasswordResetTokenCommand(requestPasswordResetTokenRequest.Email);

            _mapperMock.Setup(x => x.Map <RequestPasswordResetTokenRequest, RequestPasswordResetTokenCommand>(It.IsAny <RequestPasswordResetTokenRequest>()))
            .Returns(requestPasswordResetTokenCommand);
            _communicationBusMock.Setup(x => x.SendCommandAsync(It.IsAny <RequestPasswordResetTokenCommand>(), It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask);

            var result = await _controller.RequestPasswordResetTokenAsync(requestPasswordResetTokenRequest);

            var noContentResult = result.As <NoContentResult>();

            noContentResult.Should().NotBeNull();
        }
Esempio n. 4
0
        public async Task HandleAsync_Should_Request_Password_Reset_Token()
        {
            var requestPasswordResetTokenCommand = new RequestPasswordResetTokenCommand("*****@*****.**");
            var account = Account.Builder()
                          .SetId(Guid.NewGuid())
                          .SetEmail(requestPasswordResetTokenCommand.Email)
                          .SetConfirmed(false)
                          .SetPasswordHash("PasswordHash")
                          .SetSecurityStamp(Guid.NewGuid())
                          .SetCreated(DateTimeOffset.UtcNow)
                          .SetRoles(new List <Guid> {
                Guid.NewGuid()
            })
                          .Build();
            var getAccountResult = GetResult <Account> .Ok(account);

            var emailIsConfirmedVerificationResult = VerificationResult.Ok();
            var passwordIsSetVerificationResult    = VerificationResult.Ok();
            var cancellationToken = new CancellationToken();

            _accountGetterServiceMock.Setup(x => x.GetByEmailAsync(It.IsAny <string>()))
            .ReturnsAsync(getAccountResult);
            _accountVerificationServiceMock.Setup(x => x.VerifyAccountIsConfirmed(It.IsAny <bool>()))
            .Returns(emailIsConfirmedVerificationResult);
            _accountVerificationServiceMock.Setup(x => x.VerifyPasswordIsSet(It.IsAny <string>()))
            .Returns(passwordIsSetVerificationResult);
            _communicationBusMock.Setup(x => x.DispatchDomainEventsAsync(It.IsAny <Account>(), It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask);
            _accountRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <Account>())).Returns(Task.CompletedTask);
            _passwordResetTokenRequestServiceMock
            .Setup(x => x.PublishPasswordResetRequestedIntegrationEventAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>()))
            .Returns(Task.CompletedTask)
            .Verifiable();

            Func <Task> result = async() => await _commandHandler.HandleAsync(requestPasswordResetTokenCommand, cancellationToken);

            await result.Should().NotThrowAsync <Exception>();

            _communicationBusMock.Verify(
                x => x.DispatchDomainEventsAsync(It.Is <Account>(a => a == account),
                                                 It.Is <CancellationToken>(ct => ct == cancellationToken)), Times.Once);
        }