Exemplo n.º 1
0
        public async Task <IActionResult> SendChangePasswordEmail(SendChangePasswordEmailRequest request)
        {
            var response = await mediator.Send(request);

            Log.Information($"User #{HttpContext.GetCurrentUserId()} sent change password link to their email address");

            return(this.CreateResponse(response));
        }
Exemplo n.º 2
0
        public async Task Then_If_There_Is_An_Error_A_Bad_Request_Is_Returned(
            Guid id,
            SendChangePasswordEmailRequest request,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] UsersController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.IsAny <SendEmailToChangePasswordCommand>(),
                       It.IsAny <CancellationToken>()))
            .ThrowsAsync(new Exception());

            var controllerResult = await controller.SendChangePasswordEmail(id, request) as StatusCodeResult;

            controllerResult !.StatusCode.Should().Be((int)HttpStatusCode.InternalServerError);
        }
        public void SetUp()
        {
            var generateChangePasswordTokenResult = new GenerateChangePasswordTokenResult
            {
                Email    = Test,
                Token    = Test,
                Username = Test
            };

            var emailTemplate = new EmailTemplate
            {
                TemplateName      = Test,
                Subject           = Test,
                Content           = Test,
                AllowedParameters = new[] { "{{username}}", "{{callbackUrl}}" }
            };

            request = new SendChangePasswordEmailRequest
            {
                OldPassword = Test,
                NewPassword = Test
            };

            userTokenGenerator     = new Mock <IUserTokenGenerator>();
            cryptoService          = new Mock <ICryptoService>();
            emailSender            = new Mock <IEmailSender>();
            emailTemplateGenerator = new Mock <IEmailTemplateGenerator>();
            var configuration = new Mock <IConfiguration>();

            userTokenGenerator.Setup(c => c.GenerateChangePasswordToken(It.IsAny <string>()))
            .ReturnsAsync(generateChangePasswordTokenResult);
            cryptoService.Setup(c => c.Encrypt(It.IsAny <string>()))
            .Returns(Test);
            configuration.Setup(c => c.GetSection(It.IsAny <string>()))
            .Returns(new Mock <IConfigurationSection>().Object);
            emailTemplateGenerator.Setup(etg => etg.FindEmailTemplate(It.IsAny <string>()))
            .ReturnsAsync(emailTemplate);
            emailSender.Setup(es => es.Send(It.IsAny <EmailMessage>()))
            .ReturnsAsync(true);

            sendChangePasswordEmailCommand = new SendChangePasswordEmailCommand(userTokenGenerator.Object,
                                                                                cryptoService.Object, emailSender.Object, emailTemplateGenerator.Object, configuration.Object);
        }
Exemplo n.º 4
0
        public async Task Then_The_Command_Is_Processed_By_Mediator_And_Id_Returned(
            Guid id,
            SendChangePasswordEmailRequest request,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] UsersController controller)
        {
            //Act
            var controllerResult = await controller.SendChangePasswordEmail(id, request) as CreatedResult;

            //Assert
            controllerResult !.StatusCode.Should().Be((int)HttpStatusCode.Created);
            controllerResult.Value.Should().BeEquivalentTo(new { id });
            mockMediator
            .Verify(mediator => mediator.Send(
                        It.Is <SendEmailToChangePasswordCommand>(command =>
                                                                 command.FirstName == request.FirstName &&
                                                                 command.LastName == request.LastName &&
                                                                 command.Email == request.Email &&
                                                                 command.ChangePasswordUrl == request.ChangePasswordUrl
                                                                 ),
                        It.IsAny <CancellationToken>()));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> SendChangePasswordEmail([FromRoute] Guid id, [FromBody] SendChangePasswordEmailRequest request)
        {
            try
            {
                await _mediator.Send(new SendEmailToChangePasswordCommand
                {
                    FirstName         = request.FirstName,
                    LastName          = request.LastName,
                    Email             = request.Email,
                    ChangePasswordUrl = request.ChangePasswordUrl
                });

                return(Created("", new { id }));
            }
            catch (Exception e)
            {
                _logger.LogError(e, $"Unable to send change password email for userid: [{id}]");
                return(new StatusCodeResult((int)HttpStatusCode.InternalServerError));
            }
        }