def test_send_to_course_team_without_email(self, mock_post): """ Tests that an attempt to send an email to a course with no contact email will fail """ course_no_email = CourseFactory.create(title='course no email', contact_email=None) with self.assertRaises(ImproperlyConfigured) as ex: MailgunClient.send_course_team_email(self.user, course_no_email, 'email subject', 'email body') assert ex.exception.args[0].startswith( 'Course team contact email attempted') assert not mock_post.called
def test_send_to_course_team_without_email(self, mock_post): """ Tests that an attempt to send an email to a course with no contact email will fail """ course_no_email = CourseFactory.create(title='course no email', contact_email=None) with self.assertRaises(ImproperlyConfigured) as ex: MailgunClient.send_course_team_email( self.user, course_no_email, 'email subject', 'email body' ) assert ex.exception.args[0].startswith('Course team contact email attempted') assert not mock_post.called
def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ user = request.user course = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mailgun_response = MailgunClient.send_course_team_email( user=user, course=course, subject=serializer.data['email_subject'], body=serializer.data['email_body']) return Response(status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response))
def test_send_course_team_email(self, mock_post): """ Tests that a course team contact email is sent correctly """ course_with_email = CourseFactory.create( title='course with email', contact_email='*****@*****.**') response = MailgunClient.send_course_team_email( self.user, course_with_email, 'email subject', 'email body') assert response.status_code == HTTP_200_OK assert mock_post.called _, called_kwargs = mock_post.call_args assert called_kwargs['data']['text'] == 'email body' assert called_kwargs['data']['subject'] == 'email subject' assert called_kwargs['data']['to'] == [course_with_email.contact_email] self.assertEqual( called_kwargs['data']['from'], '{} <{}>'.format(self.user_profile.display_name, self.user.email))
def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ user = request.user course = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mailgun_response = MailgunClient.send_course_team_email( user=user, course=course, subject=serializer.data['email_subject'], body=serializer.data['email_body'] ) return Response( status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response) )
def test_send_to_course_team_error(self, raise_for_status, mock_post): """ Test that send_course_team_email handles errors correctly """ mock_post.return_value = Mock( spec=Response, status_code=HTTP_400_BAD_REQUEST, json=mocked_json(), ) course_with_email = CourseFactory.create(title='course with email', contact_email='*****@*****.**') response = MailgunClient.send_course_team_email( self.user, course_with_email, 'email subject', 'email body', raise_for_status=raise_for_status, ) assert response.raise_for_status.called is raise_for_status assert response.status_code == HTTP_400_BAD_REQUEST assert response.json() == {}
def test_send_course_team_email(self, mock_post): """ Tests that a course team contact email is sent correctly """ course_with_email = CourseFactory.create(title='course with email', contact_email='*****@*****.**') response = MailgunClient.send_course_team_email( self.user, course_with_email, 'email subject', 'email body' ) assert response.status_code == HTTP_200_OK assert mock_post.called _, called_kwargs = mock_post.call_args assert called_kwargs['data']['text'] == 'email body' assert called_kwargs['data']['subject'] == 'email subject' assert called_kwargs['data']['to'] == [course_with_email.contact_email] self.assertEqual( called_kwargs['data']['from'], '{} <{}>'.format(self.user_profile.display_name, self.user.email) )
def test_send_to_course_team_error(self, raise_for_status, mock_post): """ Test that send_course_team_email handles errors correctly """ mock_post.return_value = Mock( spec=Response, status_code=HTTP_400_BAD_REQUEST, json=mocked_json(), ) course_with_email = CourseFactory.create( title='course with email', contact_email='*****@*****.**') response = MailgunClient.send_course_team_email( self.user, course_with_email, 'email subject', 'email body', raise_for_status=raise_for_status, ) assert response.raise_for_status.called is raise_for_status assert response.status_code == HTTP_400_BAD_REQUEST assert response.json() == {}