@@ -224,3 +224,32 @@ def test_bounced_greylist_event(self):
224
224
self .assertEqual (event .message_id , "12345678901234567" )
225
225
self .
assertEqual (
event .
recipient ,
"[email protected] " )
226
226
self .assertEqual (event .reject_reason , "other" )
227
+
228
+ def test_non_grouped_event (self ):
229
+ # If you don't enable "group events" on a webhook, Mailjet sends a single bare event
230
+ # (not a list of one event, despite what the docs say).
231
+ raw_event = {
232
+ "event" : "sent" ,
233
+ "time" : 1498093527 ,
234
+ "MessageID" : 12345678901234567 ,
235
+
236
+ "mj_campaign_id" : 1234567890 ,
237
+ "mj_contact_id" : 9876543210 ,
238
+ "customcampaign" : "" ,
239
+ "mj_message_id" : "12345678901234567" ,
240
+ "smtp_reply" : "sent (250 2.0.0 OK 1498093527 a67bc12345def.22 - gsmtp)" ,
241
+ "Payload" : "" ,
242
+ }
243
+ response = self .client .post ('/anymail/mailjet/tracking/' ,
244
+ content_type = 'application/json' , data = json .dumps (raw_event ))
245
+ self .assertEqual (response .status_code , 200 )
246
+ kwargs = self .assert_handler_called_once_with (self .tracking_handler , sender = MailjetTrackingWebhookView ,
247
+ event = ANY , esp_name = 'Mailjet' )
248
+ event = kwargs ['event' ]
249
+ self .assertIsInstance (event , AnymailTrackingEvent )
250
+ self .assertEqual (event .event_type , "delivered" )
251
+ self .assertEqual (event .timestamp , datetime (2017 , 6 , 22 , 1 , 5 , 27 , tzinfo = utc ))
252
+ self .assertEqual (event .esp_event , raw_event )
253
+ self .assertEqual (event .mta_response , "sent (250 2.0.0 OK 1498093527 a67bc12345def.22 - gsmtp)" )
254
+ self .assertEqual (event .message_id , "12345678901234567" ) # converted to str (matching backend status)
255
+ self .
assertEqual (
event .
recipient ,
"[email protected] " )
0 commit comments