def test_send_email(self): """ Tests send_email send_email returns True when it successfully sends an email to a default address and errors out when unsuccessful. """ # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'last_name': '', 'token': conf.TOKEN, 'redirect': 'http://www.example.com'}) env = builder.get_environ() req = Request(env) # Construct message for assertion msg = handler.create_msg(req) msg_send = MIMEText(str(msg)) msg_subj = handler.set_mail_subject(msg) msg_send['Subject'] = msg_subj msg_send['To'] = conf.EMAIL['default'] # Mock sendmail function so it doesn't send an actual email smtplib.SMTP.sendmail = Mock('smtplib.SMTP.sendmail') # Call send_email and assert sendmail was called correctly handler.create_app() handler.send_email(msg, msg_subj) smtplib.SMTP.sendmail.assert_called_with(conf.FROM, conf.EMAIL['default'], msg_send.as_string())
def test_send_email_default(self, mock_validate_email): """ Tests that the form is sent to the correct default address when the 'send_to' field is set to an empty string. Returns true if the form has been sent to [email protected] Errors out if unsuccessful """ builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'send_to': '', 'last_name': '', 'token': conf.TOKEN, 'redirect': 'http://www.example.com'}) env = builder.get_environ() req = Request(env) # Construct message for assertion msg = handler.create_msg(req) msg_send = MIMEText(str(msg)) msg_subj = handler.set_mail_subject(msg) msg_send['Subject'] = msg_subj msg_send['To'] = conf.EMAIL['default'] # Mock sendmail function smtplib.SMTP.sendmail = Mock('smtplib.SMTP.sendmail') # Call send_email and assert sendmail was correctly called handler.send_email(msg, msg_subj, send_to_email='default') smtplib.SMTP.sendmail.assert_called_with(conf.FROM, conf.EMAIL['default'], msg_send.as_string())
def test_format_message(self): # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'some_field': ("This is multi line and " "should not be on the " "same line as the title"), 'redirect': 'http://www.example.com', 'last_name': '', 'token': conf.TOKEN}) env = builder.get_environ() req = Request(env) target_message = ("Contact:\n" "--------\n" "NAME: Valid Guy\n" "EMAIL: [email protected]\n\n" "Information:\n" "------------\n" "Some Field:\n\n" "This is multi line and should not be on the same " "line as the title\n\n") message = handler.create_msg(req) formatted_message = handler.format_message(message) self.assertEqual(formatted_message, target_message)
def test_create_msg_with_content(self): """ Tests create_msg with content in the POST request Checks that each element in the request is returned create_msg """ builder = EnvironBuilder(method='POST', data={'foo': 'this is some text', 'file': 'my file contents', 'test': 'test.txt', 'redirect': 'http://www.example.com'}) env = builder.get_environ() req = Request(env) self.assertEqual(handler.create_msg(req)['foo'], builder.form['foo']) self.assertEqual(handler.create_msg(req)['file'], builder.form['file']) self.assertEqual(handler.create_msg(req)['test'], builder.form['test'])
def test_create_msg_no_content(self): """ Tests create_msg with no content in the POST request Checks that create_msg returns None """ builder = EnvironBuilder(method='POST', data={}) env = builder.get_environ() req = Request(env) self.assertEquals(handler.create_msg(req), None)
def test_strip_incoming_redirect_no_query(self): # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'redirect': 'www.example.com', 'last_name': '', 'token': conf.TOKEN}) env = builder.get_environ() req = Request(env) message = handler.create_msg(req) self.assertEqual(message['redirect'], builder.form['redirect'])
def test_create_msg_with_content_get_method(self): """ Tests create_msg with content in a GET request Checks that create_msg returns None """ builder = EnvironBuilder(method='GET', data={'foo': 'this is some text', 'file': 'my file contents', 'test': 'test.txt'}) env = builder.get_environ() req = Request(env) self.assertEquals(handler.create_msg(req), None)
def test_mail_from_empty_email_empty(self): """ set_mail_from(message) returns the string in message['email_from'] when it is present, otherwise it returns 'default' """ # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'redirect': 'http://www.example.com', 'last_name': '', 'token': conf.TOKEN}) env = builder.get_environ() req = Request(env) # Create message from request and call set_mail_subject() message = handler.create_msg(req) mail_from = handler.set_mail_from(message) self.assertEqual(mail_from, 'from_default')
def test_set_mail_subject_with_nothing(self): """ set_mail_subject(message) returns the string in message['mail_subject'] when it is present, otherwise it returns 'Form Submission' """ # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'redirect': 'http://www.example.com', 'last_name': '', 'token': conf.TOKEN}) env = builder.get_environ() req = Request(env) # Create message from request and call set_mail_subject() message = handler.create_msg(req) subject = handler.set_mail_subject(message) self.assertEqual(subject, 'Form Submission')
def test_set_mail_subject_with_subj_key_missing(self): """ set_mail_subject(message) returns the default string 'Form Submission' when no configuration fields are available """ # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'redirect': 'http://www.example.com', 'last_name': '', 'mail_subject_key': 'project', 'token': conf.TOKEN}) env = builder.get_environ() req = Request(env) # Create message from request and call set_mail_subject() message = handler.create_msg(req) self.assertEqual(handler.set_mail_subject(message), 'Form Submission')
def test_set_mail_subject_with_subj_prefix(self): """ set_mail_subject(message) returns the string "message['mail_subject_prefix']" when it is the only field available """ # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'redirect': 'http://www.example.com', 'last_name': '', 'mail_subject_prefix': 'Hosting', 'token': conf.TOKEN}) env = builder.get_environ() req = Request(env) # Create message from request and call set_mail_subject() message = handler.create_msg(req) self.assertEqual(handler.set_mail_subject(message), 'Hosting')
def test_send_to_address_with_key_only(self): """ send_to_adress(message) returns the string in message['send_to'] when it is present, otherwise it returns 'default' """ # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'redirect': 'http://www.example.com', 'last_name': '', 'send_to': '', 'token': conf.TOKEN}) env = builder.get_environ() req = Request(env) # Create message from request and call set_mail_subject() message = handler.create_msg(req) address = handler.send_to_address(message) self.assertEqual(address, 'default')
def test_set_mail_from(self): """ set_mail_from(message) returns the string in message['email_from'] when it is present, otherwise it returns 'default' """ # Build test environment builder = EnvironBuilder(method='POST', data={'name': 'Valid Guy', 'email': '*****@*****.**', 'redirect': 'http://www.example.com', 'last_name': '', 'mail_from': '*****@*****.**', 'token': conf.TOKEN}) env = builder.get_environ() req = Request(env) # Create message from request and call set_mail_subject() message = handler.create_msg(req) mail_from = handler.set_mail_from(message) # May want to change this email to be something else later on self.assertEqual(mail_from, '*****@*****.**')