Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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))
Ejemplo n.º 4
0
 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))
Ejemplo n.º 5
0
 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)
     )
Ejemplo n.º 6
0
    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() == {}
Ejemplo n.º 7
0
 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)
     )
Ejemplo n.º 8
0
    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() == {}