Esempio n. 1
0
 def test_subscription_throws_404(self):
     """
     Test that a subscription request sent to bouncy throws a 404 if not
     permitted
     """
     original_setting = getattr(settings, 'BOUNCY_AUTO_SUBSCRIBE', True)
     settings.BOUNCY_AUTO_SUBSCRIBE = False
     with self.assertRaises(Http404):
         notification = loader('subscriptionconfirmation')
         self.request._body = json.dumps(notification)
         views.endpoint(self.request)
     settings.BOUNCY_AUTO_SUBSCRIBE = original_setting
Esempio n. 2
0
 def test_subscription_throws_404(self):
     """
     Test that a subscription request sent to bouncy throws a 404 if not
     permitted
     """
     original_setting = getattr(settings, 'BOUNCY_AUTO_SUBSCRIBE', True)
     settings.BOUNCY_AUTO_SUBSCRIBE = False
     with self.assertRaises(Http404):
         notification = loader('subscriptionconfirmation')
         self.request._body = json.dumps(notification)
         views.endpoint(self.request)
     settings.BOUNCY_AUTO_SUBSCRIBE = original_setting
Esempio n. 3
0
 def test_missing_necessary_key(self):
     """Test if the notification is missing vital keys"""
     self.request._body = json.dumps({})
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'),
                      'Request Missing Necessary Keys')
Esempio n. 4
0
 def test_no_header(self):
     """Test the results if the request does not have a topic header"""
     request = self.factory.post('/')
     request._body = json.dumps(self.notification)
     result = views.endpoint(request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'), 'No TopicArn Header')
Esempio n. 5
0
 def test_no_header(self):
     """Test the results if the request does not have a topic header"""
     request = self.factory.post('/')
     request._body = json.dumps(self.notification)
     result = views.endpoint(request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'), 'No TopicArn Header')
Esempio n. 6
0
 def test_missing_necessary_key(self):
     """Test if the notification is missing vital keys"""
     self.request._body = json.dumps({})
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(
         result.content.decode('ascii'), 'Request Missing Necessary Keys')
Esempio n. 7
0
 def test_approve_subscription_called(self, mock):
     """Test that a approve_subscription is called"""
     mock.return_value = 'Test Return Value'
     notification = loader('subscriptionconfirmation')
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertTrue(mock.called)
     self.assertEqual(result, 'Test Return Value')
Esempio n. 8
0
 def test_approve_subscription_called(self, mock):
     """Test that a approve_subscription is called"""
     mock.return_value = 'Test Return Value'
     notification = loader('subscriptionconfirmation')
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertTrue(mock.called)
     self.assertEqual(result, 'Test Return Value')
Esempio n. 9
0
 def test_non_json_message_not_allowed(self):
     """Test that a non-JSON message is properly ignored"""
     notification = loader('bounce_notification')
     notification['Message'] = 'Non JSON Message'
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 200)
     self.assertEqual(result.content.decode('ascii'),
                      'Message is not valid JSON')
Esempio n. 10
0
 def test_unsubscribe_confirmation_not_handled(self):
     """Test that an unsubscribe notification is properly ignored"""
     notification = loader('bounce_notification')
     notification['Type'] = 'UnsubscribeConfirmation'
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 200)
     self.assertEqual(result.content.decode('ascii'),
                      'UnsubscribeConfirmation Not Handled')
Esempio n. 11
0
 def test_unknown_notification_type(self):
     """Test an unknown notification type"""
     notification = loader('bounce_notification')
     notification['Type'] = 'NotAKnownType'
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(
         result.content.decode('ascii'), 'Unknown Notification Type')
Esempio n. 12
0
 def test_non_json_message_not_allowed(self):
     """Test that a non-JSON message is properly ignored"""
     notification = loader('bounce_notification')
     notification['Message'] = 'Non JSON Message'
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 200)
     self.assertEqual(
         result.content.decode('ascii'), 'Message is not valid JSON')
Esempio n. 13
0
 def test_unknown_notification_type(self):
     """Test an unknown notification type"""
     notification = loader('bounce_notification')
     notification['Type'] = 'NotAKnownType'
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'),
                      'Unknown Notification Type')
Esempio n. 14
0
 def test_bad_certificate_url(self):
     """Test an unknown certificate hostname"""
     notification = loader('bounce_notification')
     notification['SigningCertURL'] = 'https://baddomain.com/cert.pem'
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(
         result.content.decode('ascii'), 'Improper Certificate Location')
Esempio n. 15
0
 def test_bad_certificate_url(self):
     """Test an unknown certificate hostname"""
     notification = loader('bounce_notification')
     notification['SigningCertURL'] = 'https://baddomain.com/cert.pem'
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'),
                      'Improper Certificate Location')
Esempio n. 16
0
 def test_unsubscribe_confirmation_not_handled(self):
     """Test that an unsubscribe notification is properly ignored"""
     notification = loader('bounce_notification')
     notification['Type'] = 'UnsubscribeConfirmation'
     self.request._body = json.dumps(notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 200)
     self.assertEqual(
         result.content.decode('ascii'),
         'UnsubscribeConfirmation Not Handled'
     )
Esempio n. 17
0
    def test_signals_sent(self):
        """
        Test that a notification feedback signal was sent

        Based on http://stackoverflow.com/questions/3817213/
        """
        # pylint: disable=attribute-defined-outside-init, unused-variable
        self.request._body = json.dumps(self.notification)
        self.signal_count = 0

        @receiver(signals.notification)
        def _signal_receiver(sender, **kwargs):
            """Signal test receiver"""
            # pylint: disable=unused-argument
            self.signal_count += 1
            self.signal_notification = kwargs['notification']
            self.signal_request = kwargs['request']

        result = views.endpoint(self.request)

        self.assertEqual(result.status_code, 200)
        self.assertEqual(self.signal_count, 1)
        self.assertEqual(self.signal_request, self.request)
        self.assertEqual(self.signal_notification, self.notification)
Esempio n. 18
0
    def test_signals_sent(self):
        """
        Test that a notification feedback signal was sent

        Based on http://stackoverflow.com/questions/3817213/
        """
        # pylint: disable=attribute-defined-outside-init, unused-variable
        self.request._body = json.dumps(self.notification)
        self.signal_count = 0

        @receiver(signals.notification)
        def _signal_receiver(sender, **kwargs):
            """Signal test receiver"""
            # pylint: disable=unused-argument
            self.signal_count += 1
            self.signal_notification = kwargs['notification']
            self.signal_request = kwargs['request']

        result = views.endpoint(self.request)

        self.assertEqual(result.status_code, 200)
        self.assertEqual(self.signal_count, 1)
        self.assertEqual(self.signal_request, self.request)
        self.assertEqual(self.signal_notification, self.notification)
Esempio n. 19
0
 def test_invalid_json(self):
     """Test if the notification does not have a JSON body"""
     self.request._body = "This Is Not JSON"
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'), 'Not Valid JSON')
Esempio n. 20
0
 def test_non_post_http404(self):
     """Test that GET requests to the endpoint throw a 404"""
     request = self.factory.get('/')
     with self.assertRaises(Http404):
         views.endpoint(request)
Esempio n. 21
0
 def test_bad_topic(self):
     """Test the response if the topic does not match the settings"""
     self.request._body = json.dumps(self.notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'), 'Bad Topic')
Esempio n. 22
0
 def test_success(self):
     """Test a successful request"""
     self.request._body = json.dumps(self.notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 200)
     self.assertEqual(result.content.decode('ascii'), 'Bounce Processed')
Esempio n. 23
0
 def test_non_post_http404(self):
     """Test that GET requests to the endpoint throw a 404"""
     request = self.factory.get('/')
     with self.assertRaises(Http404):
         views.endpoint(request)
Esempio n. 24
0
 def test_success(self):
     """Test a successful request"""
     self.request._body = json.dumps(self.notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 200)
     self.assertEqual(result.content.decode('ascii'), 'Bounce Processed')
Esempio n. 25
0
 def test_bad_topic(self):
     """Test the response if the topic does not match the settings"""
     self.request._body = json.dumps(self.notification)
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'), 'Bad Topic')
Esempio n. 26
0
 def test_invalid_json(self):
     """Test if the notification does not have a JSON body"""
     self.request._body = "This Is Not JSON"
     result = views.endpoint(self.request)
     self.assertEqual(result.status_code, 400)
     self.assertEqual(result.content.decode('ascii'), 'Not Valid JSON')