44import hashlib
55import hmac
66from django .core .exceptions import ImproperlyConfigured
7- from django .core .urlresolvers import reverse
87from django .test import override_settings
98from django .utils .timezone import utc
109from mock import ANY
@@ -42,35 +41,34 @@ def querydict_to_postdict(qd):
4241
4342class MailgunWebhookSettingsTestCase (WebhookTestCase ):
4443 def test_requires_api_key (self ):
45- webhook = reverse ('mailgun_tracking_webhook' )
4644 with self .assertRaises (ImproperlyConfigured ):
47- self .client .post (webhook , data = mailgun_sign ({'event' : 'delivered' }))
45+ self .client .post ('/anymail/mailgun/tracking/' ,
46+ data = mailgun_sign ({'event' : 'delivered' }))
4847
4948
5049@override_settings (ANYMAIL_MAILGUN_API_KEY = TEST_API_KEY )
5150class MailgunWebhookSecurityTestCase (WebhookTestCase , WebhookBasicAuthTestsMixin ):
5251 should_warn_if_no_auth = False # because we check webhook signature
5352
5453 def call_webhook (self ):
55- webhook = reverse ( 'mailgun_tracking_webhook' )
56- return self . client . post ( webhook , data = mailgun_sign ({'event' : 'delivered' }))
54+ return self . client . post ( '/anymail/mailgun/tracking/' ,
55+ data = mailgun_sign ({'event' : 'delivered' }))
5756
5857 # Additional tests are in WebhookBasicAuthTestsMixin
5958
6059 def test_verifies_correct_signature (self ):
61- webhook = reverse ( 'mailgun_tracking_webhook' )
62- response = self . client . post ( webhook , data = mailgun_sign ({'event' : 'delivered' }))
60+ response = self . client . post ( '/anymail/mailgun/tracking/' ,
61+ data = mailgun_sign ({'event' : 'delivered' }))
6362 self .assertEqual (response .status_code , 200 )
6463
6564 def test_verifies_missing_signature (self ):
66- webhook = reverse ( 'mailgun_tracking_webhook' )
67- response = self . client . post ( webhook , data = {'event' : 'delivered' })
65+ response = self . client . post ( '/anymail/mailgun/tracking/' ,
66+ data = {'event' : 'delivered' })
6867 self .assertEqual (response .status_code , 400 )
6968
7069 def test_verifies_bad_signature (self ):
71- webhook = reverse ('mailgun_tracking_webhook' )
7270 data = mailgun_sign ({'event' : 'delivered' }, api_key = "wrong API key" )
73- response = self .client .post (webhook , data = data )
71+ response = self .client .post ('/anymail/mailgun/tracking/' , data = data )
7472 self .assertEqual (response .status_code , 400 )
7573
7674
@@ -99,8 +97,7 @@ def test_delivered_event(self):
999710098 'event' : 'delivered' ,
10199 })
102- webhook = reverse ('mailgun_tracking_webhook' )
103- response = self .client .post (webhook , data = raw_event )
100+ response = self .client .post ('/anymail/mailgun/tracking/' , data = raw_event )
104101 self .assertEqual (response .status_code , 200 )
105102 kwargs = self .assert_handler_called_once_with (self .tracking_handler , sender = MailgunTrackingWebhookView ,
106103 event = ANY , esp_name = 'Mailgun' )
@@ -137,8 +134,7 @@ def test_dropped_bounce(self):
137134 'X-Mailgun-Sid' : 'WyI3Y2VjMyIsICJib3VuY2VAZXhhbXBsZS5jb20iLCAiZjFjNzgyIl0=' ,
138135 'token' : 'a3fe1fa1640349ac552b84ddde373014b4c41645830c8dd3fc' ,
139136 })
140- webhook = reverse ('mailgun_tracking_webhook' )
141- response = self .client .post (webhook , data = raw_event )
137+ response = self .client .post ('/anymail/mailgun/tracking/' , data = raw_event )
142138 self .assertEqual (response .status_code , 200 )
143139 kwargs = self .assert_handler_called_once_with (self .tracking_handler , sender = MailgunTrackingWebhookView ,
144140 event = ANY , esp_name = 'Mailgun' )
@@ -162,8 +158,7 @@ def test_dropped_spam(self):
162158163159 # (omitting some fields that aren't relevant to the test)
164160 })
165- webhook = reverse ('mailgun_tracking_webhook' )
166- response = self .client .post (webhook , data = raw_event )
161+ response = self .client .post ('/anymail/mailgun/tracking/' , data = raw_event )
167162 self .assertEqual (response .status_code , 200 )
168163 kwargs = self .assert_handler_called_once_with (self .tracking_handler , sender = MailgunTrackingWebhookView ,
169164 event = ANY , esp_name = 'Mailgun' )
@@ -181,8 +176,7 @@ def test_dropped_timed_out(self):
181176182177 # (omitting some fields that aren't relevant to the test)
183178 })
184- webhook = reverse ('mailgun_tracking_webhook' )
185- response = self .client .post (webhook , data = raw_event )
179+ response = self .client .post ('/anymail/mailgun/tracking/' , data = raw_event )
186180 self .assertEqual (response .status_code , 200 )
187181 kwargs = self .assert_handler_called_once_with (self .tracking_handler , sender = MailgunTrackingWebhookView ,
188182 event = ANY , esp_name = 'Mailgun' )
@@ -201,8 +195,7 @@ def test_invalid_mailbox(self):
201195202196 # (omitting some fields that aren't relevant to the test)
203197 })
204- webhook = reverse ('mailgun_tracking_webhook' )
205- response = self .client .post (webhook , data = raw_event )
198+ response = self .client .post ('/anymail/mailgun/tracking/' , data = raw_event )
206199 self .assertEqual (response .status_code , 200 )
207200 kwargs = self .assert_handler_called_once_with (self .tracking_handler , sender = MailgunTrackingWebhookView ,
208201 event = ANY , esp_name = 'Mailgun' )
@@ -221,7 +214,7 @@ def test_metadata(self):
221214 'custom1' : 'value' ,
222215 'custom2' : '{"key":"value"}' , # you can store JSON, but you'll need to unpack it yourself
223216 })
224- self .client .post (reverse ( 'mailgun_tracking_webhook' ) , data = raw_event )
217+ self .client .post ('/anymail/mailgun/tracking/' , data = raw_event )
225218 kwargs = self .assert_handler_called_once_with (self .tracking_handler )
226219 event = kwargs ['event' ]
227220 self .assertEqual (event .metadata , {"custom1" : "value1" , "custom2" : '{"key":"value"}' })
@@ -232,7 +225,7 @@ def test_tags(self):
232225 'tag' : ['tag1' , 'tag2' ], # Django TestClient encodes list as multiple field values
233226 'event' : 'opened' ,
234227 })
235- self .client .post (reverse ( 'mailgun_tracking_webhook' ) , data = raw_event )
228+ self .client .post ('/anymail/mailgun/tracking/' , data = raw_event )
236229 kwargs = self .assert_handler_called_once_with (self .tracking_handler )
237230 event = kwargs ['event' ]
238231 self .assertEqual (event .tags , ["tag1" , "tag2" ])
@@ -243,8 +236,7 @@ def test_x_tags(self):
243236 'X-Mailgun-Tag' : ['tag1' , 'tag2' ],
244237 'event' : 'delivered' ,
245238 })
246- self .client .post (reverse ('mailgun_tracking_webhook' ), data = raw_event )
247- kwargs = self .assert_handler_called_once_with (self .tracking_handler )
239+ self .client .post ('/anymail/mailgun/tracking/' , data = raw_event )
248240 kwargs = self .assert_handler_called_once_with (self .tracking_handler )
249241 event = kwargs ['event' ]
250242 self .assertEqual (event .tags , ["tag1" , "tag2" ])
0 commit comments