public void Should_send_forgotten_password_email_when_email_address_exists() { MailMessage forgottenPasswordEmail = new MailMessage(); MockRepository mocks = new MockRepository(); ISystemUser user = mocks.CreateMock <ISystemUser>(); IForgottenPasswordMailFactory mailFactory = mocks.CreateMock <IForgottenPasswordMailFactory>(); ISystemUserRepository repository = mocks.CreateMock <ISystemUserRepository>(); IEncryptionEngine encryptionEngine = mocks.CreateMock <IEncryptionEngine>(); IMailSender sender = mocks.CreateMock <IMailSender>(); using (mocks.Record()) { Expect.Call(repository.GetByEmailAddress("*****@*****.**")).Return(user); Expect.Call(user.Password).Return("encryptedPassword"); Expect.Call(encryptionEngine.Decrypt("encryptedPassword")).Return("clearTextPassword"); Expect.Call(mailFactory.CreateEmail("*****@*****.**", "clearTextPassword")).Return(forgottenPasswordEmail); sender.SendMail(forgottenPasswordEmail); } using (mocks.Playback()) { IForgottenPasswordMailer mailer = new ForgottenPasswordMailer(encryptionEngine, mailFactory, sender); bool emailWasSent = mailer.SendForgottenPasswordEmail("*****@*****.**", repository); Assert.That(emailWasSent); } mocks.VerifyAll(); }
public ForgottenPasswordMailer(IEncryptionEngine encryptionEngine, IForgottenPasswordMailFactory mailFactory, IMailSender mailSender) { _encryptionEngine = encryptionEngine; _mailFactory = mailFactory; _mailSender = mailSender; }