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)); }
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); }
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>())); }
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)); } }