def test_sending_email(self): # Emails are not sent if the CAN_SEND_EMAILS setting is not turned on. email_exception = self.assertRaisesRegexp( Exception, 'This app cannot send emails.') messages = self.mail_stub.get_sent_messages( to=feconf.ADMIN_EMAIL_ADDRESS) self.assertEqual(0, len(messages)) with self.swap(feconf, 'CAN_SEND_EMAILS', False), email_exception: gae_email_services.send_mail(self.SENDER_EMAIL, feconf.ADMIN_EMAIL_ADDRESS, 'subject', 'body', 'html', bcc_admin=False) messages = self.mail_stub.get_sent_messages( to=feconf.ADMIN_EMAIL_ADDRESS) self.assertEqual(0, len(messages)) messages = self.mail_stub.get_sent_messages( to=feconf.ADMIN_EMAIL_ADDRESS) self.assertEqual(0, len(messages)) with self.swap(feconf, 'CAN_SEND_EMAILS', True): gae_email_services.send_mail(self.SENDER_EMAIL, feconf.ADMIN_EMAIL_ADDRESS, 'subject', 'body', 'html', bcc_admin=False) messages = self.mail_stub.get_sent_messages( to=feconf.ADMIN_EMAIL_ADDRESS) self.assertEqual(1, len(messages))
def test_sending_email_without_reply_to_id_not_add_reply_to_email(self): """Tests that email does not have reply_to_address if reply_to_id is not passed. """ messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) with self.swap(feconf, 'CAN_SEND_EMAILS', True): gae_email_services.send_mail(self.SENDER_EMAIL, self.RECIPIENT_EMAIL, 'subject', 'body', 'html') messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertFalse(hasattr(messages[0], 'reply_to'))
def test_email_bcc_not_sent_if_bcc_admin_is_false(self): # Tests that email has no bcc attribute if bcc_admin is False. messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) with self.swap(feconf, 'CAN_SEND_EMAILS', True): gae_email_services.send_mail(self.SENDER_EMAIL, self.RECIPIENT_EMAIL, 'subject', 'body', 'html', bcc_admin=False) messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(1, len(messages)) self.assertFalse(hasattr(messages[0], 'bcc'))
def test_email_bcc_is_sent_if_bcc_admin_is_true(self): # Tests that email has ADMIN_EMAIL_ADDRESS as bcc if bcc_admin is True. messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) with self.swap(feconf, 'CAN_SEND_EMAILS', True): gae_email_services.send_mail(self.SENDER_EMAIL, self.RECIPIENT_EMAIL, 'subject', 'body', 'html', bcc_admin=True) messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(1, len(messages)) self.assertEqual(messages[0].bcc, feconf.ADMIN_EMAIL_ADDRESS)
def test_sending_email_with_reply_to_id_adds_reply_to_email(self): # Tests that email has reply_to_address if reply_to_id is passed. messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) reply_to_id = 'reply_to_id' with self.swap(feconf, 'CAN_SEND_EMAILS', True): gae_email_services.send_mail(self.SENDER_EMAIL, self.RECIPIENT_EMAIL, 'subject', 'body', 'html', reply_to_id=reply_to_id) messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) expected_reply_to_address = '*****@*****.**' self.assertEqual(messages[0].reply_to, expected_reply_to_address)
def test_sending_email(self): # Emails are not sent if the CAN_SEND_EMAILS setting is not turned on. email_exception = ( self.assertRaisesRegexp(Exception, 'This app cannot send emails.')) with self.swap(feconf, 'CAN_SEND_EMAILS', False), email_exception: gae_email_services.send_mail( feconf.SYSTEM_EMAIL_ADDRESS, feconf.ADMIN_EMAIL_ADDRESS, 'subject', 'body', 'html', bcc_admin=False) messages = self.mail_stub.get_sent_messages( to=feconf.ADMIN_EMAIL_ADDRESS) self.assertEqual(0, len(messages)) with self.swap(feconf, 'CAN_SEND_EMAILS', True): gae_email_services.send_mail( feconf.SYSTEM_EMAIL_ADDRESS, feconf.ADMIN_EMAIL_ADDRESS, 'subject', 'body', 'html', bcc_admin=False) messages = self.mail_stub.get_sent_messages( to=feconf.ADMIN_EMAIL_ADDRESS) self.assertEqual(1, len(messages))
def test_email_not_sent_if_recipient_address_is_malformed(self): # Tests that email is not sent if recipient email address is malformed. # Case when malformed_recipient_email is None. malformed_recipient_email = None email_exception = self.assertRaisesRegexp( ValueError, 'Malformed recipient email address: %s' % malformed_recipient_email) with self.swap(feconf, 'CAN_SEND_EMAILS', True), email_exception: gae_email_services.send_mail(self.SENDER_EMAIL, malformed_recipient_email, 'subject', 'body', 'html') # Case when malformed_recipient_email is an empty string. malformed_recipient_email = '' email_exception = self.assertRaisesRegexp( ValueError, 'Malformed recipient email address: %s' % malformed_recipient_email) with self.swap(feconf, 'CAN_SEND_EMAILS', True), email_exception: gae_email_services.send_mail(self.SENDER_EMAIL, malformed_recipient_email, 'subject', 'body', 'html')
def test_email_not_sent_if_sender_address_is_malformed(self): # Tests that email is not send if sender email address is malformed. # Case when malformed_sender_email is None. messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) malformed_sender_email = None email_exception = self.assertRaisesRegexp( ValueError, 'Malformed sender email address: %s' % malformed_sender_email) with self.swap(feconf, 'CAN_SEND_EMAILS', True), email_exception: gae_email_services.send_mail(malformed_sender_email, self.RECIPIENT_EMAIL, 'subject', 'body', 'html') messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) # Case when malformed_sender_email is an empty string. messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) malformed_sender_email = '' email_exception = self.assertRaisesRegexp( ValueError, 'Malformed sender email address: %s' % malformed_sender_email) with self.swap(feconf, 'CAN_SEND_EMAILS', True), email_exception: gae_email_services.send_mail(malformed_sender_email, self.RECIPIENT_EMAIL, 'subject', 'body', 'html') messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) # Case when malformed_sender_email does not have name of the sender, # only the email address. messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) malformed_sender_email = '<*****@*****.**>' email_exception = self.assertRaisesRegexp( ValueError, 'Malformed sender email address: %s' % malformed_sender_email) with self.swap(feconf, 'CAN_SEND_EMAILS', True), email_exception: gae_email_services.send_mail(malformed_sender_email, self.RECIPIENT_EMAIL, 'subject', 'body', 'html') messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) # Case when malformed_sender_email does not have email address of the # sender and only the name. messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) malformed_sender_email = 'MalfomedSender' email_exception = self.assertRaisesRegexp( ValueError, 'Malformed sender email address: %s' % malformed_sender_email) with self.swap(feconf, 'CAN_SEND_EMAILS', True), email_exception: gae_email_services.send_mail(malformed_sender_email, self.RECIPIENT_EMAIL, 'subject', 'body', 'html') messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) # Case when malformed_sender_email does not have email address of the # form '<sender_email_address>'. messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages)) malformed_sender_email = 'MalformedSender [email protected]' email_exception = self.assertRaisesRegexp( ValueError, 'Malformed sender email address: %s' % malformed_sender_email) with self.swap(feconf, 'CAN_SEND_EMAILS', True), email_exception: gae_email_services.send_mail(malformed_sender_email, self.RECIPIENT_EMAIL, 'subject', 'body', 'html') messages = self.mail_stub.get_sent_messages(to=self.RECIPIENT_EMAIL) self.assertEqual(0, len(messages))