@@ -48,17 +48,19 @@ def test_validate(self):
48
48
49
49
50
50
class TestWebhookParser (unittest .TestCase ):
51
+ def setUp (self ):
52
+ parser = WebhookParser ('channel_secret' )
53
+ # mock
54
+ parser .signature_validator .validate = lambda a , b : True
55
+ self .parser = parser
56
+
51
57
def test_parse (self ):
52
58
file_dir = os .path .dirname (__file__ )
53
59
webhook_sample_json_path = os .path .join (file_dir , 'text' , 'webhook.json' )
54
60
with open (webhook_sample_json_path ) as fp :
55
61
body = fp .read ()
56
62
57
- parser = WebhookParser ('channel_secret' )
58
- # mock
59
- parser .signature_validator .validate = lambda a , b : True
60
-
61
- events = parser .parse (body , 'channel_secret' )
63
+ events = self .parser .parse (body , 'channel_secret' )
62
64
63
65
# MessageEvent, SourceUser, TextMessage
64
66
self .assertIsInstance (events [0 ], MessageEvent )
@@ -387,6 +389,45 @@ def test_parse(self):
387
389
self .assertIsInstance (events [24 ].things .result .action_results [1 ], ActionResult )
388
390
self .assertEqual (events [24 ].things .result .action_results [1 ].type , 'void' )
389
391
392
+ def test_parse_webhook_req_without_destination (self ):
393
+ body = """
394
+ {
395
+ "events": [
396
+ {
397
+ "replyToken": "00000000000000000000000000000000",
398
+ "type": "message",
399
+ "timestamp": 1561099010135,
400
+ "source": {
401
+ "type": "user",
402
+ "userId": "Udeadbeefdeadbeefdeadbeefdeadbeef"
403
+ },
404
+ "message": {
405
+ "id": "100001",
406
+ "type": "text",
407
+ "text": "Hello, world"
408
+ }
409
+ },
410
+ {
411
+ "replyToken": "ffffffffffffffffffffffffffffffff",
412
+ "type": "message",
413
+ "timestamp": 1561099010135,
414
+ "source": {
415
+ "type": "user",
416
+ "userId": "Udeadbeefdeadbeefdeadbeefdeadbeef"
417
+ },
418
+ "message": {
419
+ "id": "100002",
420
+ "type": "sticker",
421
+ "packageId": "1",
422
+ "stickerId": "1"
423
+ }
424
+ }
425
+ ]
426
+ }
427
+ """
428
+ payload = self .parser .parse (body = body , signature = 'channel_secret' , as_payload = True )
429
+ self .assertEqual (None , payload .destination )
430
+
390
431
391
432
class TestWebhookHandler (unittest .TestCase ):
392
433
def setUp (self ):
0 commit comments