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 void Should_not_send_forgotten_password_email_when_email_address_does_not_exist()
		{
			MockRepository mocks = new MockRepository();
			ISystemUserRepository repository = mocks.CreateMock<ISystemUserRepository>();

			using (mocks.Record())
			{
				Expect.Call(repository.GetByEmailAddress("*****@*****.**")).Return(null);
			}

			using (mocks.Playback())
			{
				IForgottenPasswordMailer mailer = new ForgottenPasswordMailer(null, null, null);
				bool emailWasSent = mailer.SendForgottenPasswordEmail("*****@*****.**", repository);
				Assert.That(emailWasSent, Is.False);
			}

			mocks.VerifyAll();
		}