public void Handle(ChangeUserEmailCommand command) { User user = repo.GetById <User>(command.Id); user.ChangeEmail(command.Email); repo.Save(user, Guid.NewGuid()); }
public void ChangeUserEmailCommandHandler_Fails_For_Existing_New_Email() { var handler = new ChangeUserEmailCommandHandler(_repository, _mailClient, new ConfirmEmailMailTemplate(_appSettings)); var command = new ChangeUserEmailCommand("*****@*****.**", "test", "*****@*****.**"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Password.Returns(new Password("test")); user.Status.Returns(UserStatus.Active); _context.Users.Add(user); var user2 = Substitute.For <User>(); user2.Email.Returns("*****@*****.**"); _context.Users.Add(user2); var result = handler.Execute(command); result.Errors.Should().HaveCount(1); result.Errors[0].Expression.ToString().Should().Be("c => c.NewEmail"); result.Errors[0].Message.Should().Be("Email address already exists"); user.DidNotReceive().RequestEmailChange(Arg.Any <string>()); user.Received().RequestEmailChangeFailed(); _mailClient.SentMessages.Should().BeEmpty(); }
public async Task Handle(DomainEventNotification <UserEmailChangedEvent> notification, CancellationToken cancellationToken) { var changeUserEmailCommand = new ChangeUserEmailCommand() { ApplicationUserEmail = notification.DomainEvent.ApplicationUserEmail, ApplicationUserNewEmail = notification.DomainEvent.ApplicationUserNewEmail, }; await _mediator.Send(changeUserEmailCommand, cancellationToken); }
public void ChangeUserEmailCommandHandler_Sends_Email() { var handler = new ChangeUserEmailCommandHandler(_repository, _mailClient, new ConfirmEmailMailTemplate(_appSettings)); var command = new ChangeUserEmailCommand("*****@*****.**", "test", "*****@*****.**"); var user = new User("*****@*****.**", "test"); user.Activate(); _context.Users.Add(user); handler.Execute(command); _mailClient.SentMessages.Should().HaveCount(1); _mailClient.SentMessages[0].Subject.Should().Be("Please confirm your email address"); _mailClient.SentMessages[0].To.Should().Be("*****@*****.**"); }
public void ChangeUserEmailCommandHandler_Succeeds() { var handler = new ChangeUserEmailCommandHandler(_repository, _mailClient, new ConfirmEmailMailTemplate(_appSettings)); var command = new ChangeUserEmailCommand("*****@*****.**", "test", "*****@*****.**"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.NewEmailConfirmationCode.Returns(999999); user.Password.Returns(new Password("test")); user.Status.Returns(UserStatus.Active); _context.Users.Add(user); handler.Execute(command); user.Received().RequestEmailChange("*****@*****.**"); user.DidNotReceive().RequestEmailChangeFailed(); }
public async Task change_email_returns_unathorized_if_password_does_not_match(string password) { //Given HttpClient client = await CreateAuthorizedClient(); var changeEmailCommand = new ChangeUserEmailCommand() { Password = password, NewEmail = "*****@*****.**" }; var payload = GetPayload(changeEmailCommand); //When var response = await client.PutAsync(Url("email"), payload); //Then response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Unauthorized); }
public void ChangeUserEmailCommandHandler_Throws_Exception_For_Invalid_User() { var handler = new ChangeUserEmailCommandHandler(_repository, _mailClient, new ConfirmEmailMailTemplate(_appSettings)); var command = new ChangeUserEmailCommand("*****@*****.**", "test", "*****@*****.**"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Password.Returns(new Password("test")); user.Status.Returns(UserStatus.Inactive); _context.Users.Add(user); Action commandAction = () => { var result = handler.Execute(command); }; commandAction.Should().Throw <InvalidOperationException>(); _mailClient.SentMessages.Should().BeEmpty(); }
public async Task change_email_unathorized_request_sends_unathorized_code() { //Given var client = Factory.CreateClient(); var user = await AddUserWithoutInvestorToRepoAndGetAsync(); var changeEmailCommand = new ChangeUserEmailCommand() { Password = user.Password, NewEmail = "*****@*****.**" }; var payload = GetPayload(changeEmailCommand); //When var response = await client.PutAsync(Url("email"), payload); //Then response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Unauthorized); }
public async Task Handle(ChangeUserEmailCommand command) { try { var user = await Repository.GetByKeyAsync<Domain.Models.User>(command.UserId); user.ChangeEmail(command.Email); await Repository.SaveChangesAsync(); var @event = new UserEmailChangedEvent(command.UserId, command.Email); EventBus.RaiseEvent(@event); } catch (Exception ex) { var @event = new UserEmailNotChangedEvent(command.UserId, command.Email, ex.Message); EventBus.RaiseEvent(@event); throw; } }
public async Task change_email_on_success_returns_no_content() { //Given var user = await AddUserWithoutInvestorToRepoAndGetAsync(); HttpClient client = await CreateAuthorizedClient(user); var changeEmailCommand = new ChangeUserEmailCommand() { Password = user.Password, NewEmail = "*****@*****.**" }; var payload = GetPayload(changeEmailCommand); //When var response = await client.PutAsync(Url("email"), payload); //Then response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.NoContent); }
public async Task change_email_returns_bad_request_if_new_email_is_not_valid(string email) { //Given var user = await AddUserWithoutInvestorToRepoAndGetAsync(); HttpClient client = await CreateAuthorizedClient(user); var changeEmailCommand = new ChangeUserEmailCommand() { Password = user.Password, NewEmail = email }; var payload = GetPayload(changeEmailCommand); //When var response = await client.PutAsync(Url("email"), payload); //Then response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.BadRequest); }