public async Task Should_UseSendEmailService_ToSend_AccountConfimationEmail() { var options = SqliteInMemory.CreateOptions <ApplicationDbContext>(); using (var context = new ApplicationDbContext(options)) { // Arrange context.Database.EnsureCreated(); var accountToCreate = new RegisterDto { FirstName = "Test", LastName = "User", Email = "*****@*****.**", Password = "******" }; var confirmationEmail = "Test Confirmation Email"; var userId = "0001"; var emailConfirmationCode = "1234"; var user = _fixture.UserMock; user.Setup(m => m.Id).Returns(userId); user.Setup(m => m.Email).Returns(accountToCreate.Email); var store = new Mock <IUserStore <ApplicationUser> >(); var userManagerMock = new Mock <UserManager <ApplicationUser> >(store.Object, null, null, null, null, null, null, null, null); userManagerMock.Setup(m => m.CreateAsync(user.Object, "Password123!")).Returns(Task.FromResult(IdentityResult.Success)); userManagerMock.Setup(m => m.GenerateEmailConfirmationTokenAsync(user.Object)) .Returns(Task.FromResult(emailConfirmationCode)); var errorFactoryMock = _fixture.ErrorFactoryMock; var mapperMock = _fixture.MapperMock; mapperMock.Setup(m => m.Map <RegisterDto, ApplicationUser>(accountToCreate)).Returns(user.Object); var sendEmailServiceMock = new Mock <ISendEmailService>(); sendEmailServiceMock.Setup(m => m.SendAsync(accountToCreate.Email, "Confirm your account", confirmationEmail, accountToCreate.FirstName)); sendEmailServiceMock.Setup(m => m.Status).Returns(new StatusGenericHandler()); var confirmationEmailServiceMock = _fixture.ConfirmationEmailServiceMock; confirmationEmailServiceMock.Setup(m => m.ConfirmationEmail(accountToCreate.FirstName, userId, emailConfirmationCode)).Returns(confirmationEmail); var sut = new RegisterAccountService(userManagerMock.Object, context, errorFactoryMock.Object, mapperMock.Object, sendEmailServiceMock.Object, confirmationEmailServiceMock.Object); // Act await sut.RegisterAccount(accountToCreate); //Assert sendEmailServiceMock.Verify(m => m.SendAsync(accountToCreate.Email, "Confirm your account", confirmationEmail, accountToCreate.FirstName), Times.Once); } }
public async Task Should_HaveErrors_When_PasswordNotProvided() { var options = SqliteInMemory.CreateOptions <ApplicationDbContext>(); using (var context = new ApplicationDbContext(options)) { // Arrange context.Database.EnsureCreated(); var accountToCreate = new RegisterDto { FirstName = "Test", LastName = "User", Email = "*****@*****.**", Password = "******" }; var user = _fixture.UserMock; var store = new Mock <IUserStore <ApplicationUser> >(); var userManagerMock = new Mock <UserManager <ApplicationUser> >(store.Object, null, null, null, null, null, null, null, null); userManagerMock.Setup(m => m.CreateAsync(user.Object, null)).Returns(Task.FromResult(IdentityResult.Success)); var errorFactoryMock = _fixture.ErrorFactoryMock; var mapperMock = _fixture.MapperMock; mapperMock.Setup(m => m.Map <RegisterDto, ApplicationUser>(accountToCreate)).Returns(user.Object); var sendEmailServiceMock = new Mock <ISendEmailService>(); var confirmationEmailServiceMock = _fixture.ConfirmationEmailServiceMock; var sut = new RegisterAccountService(userManagerMock.Object, context, errorFactoryMock.Object, mapperMock.Object, sendEmailServiceMock.Object, confirmationEmailServiceMock.Object); // Act await sut.RegisterAccount(accountToCreate); //Assert sut.Status.HasErrors.ShouldBeTrue(); } }
public AccountCommandHandler(ILockService lockService, RegisterAccountService registerAccountService) { _lockService = lockService; _registerAccountService = registerAccountService; }