2525from linebot .models import (
2626 MessageEvent , FollowEvent , UnfollowEvent , JoinEvent ,
2727 LeaveEvent , PostbackEvent , BeaconEvent , AccountLinkEvent ,
28- MemberJoinedEvent , MemberLeftEvent , ThingsEvent ,
28+ MemberJoinedEvent , MemberLeftEvent ,
2929 UnknownEvent ,
3030 TextMessage , ImageMessage , VideoMessage , AudioMessage ,
3131 LocationMessage , StickerMessage , FileMessage ,
@@ -70,7 +70,7 @@ def test_parse(self):
7070 events = self .parser .parse (body , 'channel_secret' )
7171
7272 # events count
73- self .assertEqual (len (events ), 30 )
73+ self .assertEqual (len (events ), 29 )
7474
7575 # MessageEvent, SourceUser, TextMessage
7676 self .assertIsInstance (events [0 ], MessageEvent )
@@ -392,59 +392,59 @@ def test_parse(self):
392392 self .assertEqual (events [18 ].postback .data , 'action=buyItem&itemId=123123&color=red' )
393393 self .assertEqual (events [18 ].postback .params ['datetime' ], '2013-04-01T10:00' )
394394
395- # ThingsEvent, SourceUser, link
396- self .assertIsInstance (events [19 ], ThingsEvent )
397- self .assertEqual (events [19 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA ' )
398- self .assertEqual (events [19 ].type , 'things ' )
395+ # MemberJoinedEvent
396+ self .assertIsInstance (events [19 ], MemberJoinedEvent )
397+ self .assertEqual (events [19 ].reply_token , '0f3779fba3b349968c5d07db31eabf65 ' )
398+ self .assertEqual (events [19 ].type , 'memberJoined ' )
399399 self .assertEqual (events [19 ].mode , 'active' )
400400 self .assertEqual (events [19 ].timestamp , 1462629479859 )
401- self .assertIsInstance (events [19 ].source , SourceUser )
402- self .assertEqual (events [19 ].source .type , 'user ' )
403- self .assertEqual (events [19 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8 ' )
401+ self .assertIsInstance (events [19 ].source , SourceGroup )
402+ self .assertEqual (events [19 ].source .type , 'group ' )
403+ self .assertEqual (events [19 ].source .group_id , 'C4af4980629... ' )
404404 self .assertEqual (events [19 ].webhook_event_id , 'testwebhookeventid' )
405405 self .assertIsInstance (events [19 ].delivery_context , DeliveryContext )
406406 self .assertFalse (events [19 ].delivery_context .is_redelivery )
407- self .assertIsInstance (events [19 ].things , DeviceLink )
408- self .assertEqual (events [19 ].things .type , 'link' )
409- self .assertEqual (events [19 ].things .device_id , 't2c449c9d1' )
407+ self .assertEqual (len (events [19 ].joined .members ), 2 )
408+ self .assertIsInstance (events [19 ].joined .members [0 ], SourceUser )
409+ self .assertEqual (events [19 ].joined .members [0 ].user_id , 'U4af4980629...' )
410+ self .assertEqual (events [19 ].joined .members [1 ].user_id , 'U91eeaf62d9...' )
410411
411- # MemberJoinedEvent
412- self .assertIsInstance (events [20 ], MemberJoinedEvent )
413- self .assertEqual (events [20 ].reply_token , '0f3779fba3b349968c5d07db31eabf65' )
414- self .assertEqual (events [20 ].type , 'memberJoined' )
412+ # MemberLeftEvent
413+ self .assertIsInstance (events [20 ], MemberLeftEvent )
414+ self .assertEqual (events [20 ].type , 'memberLeft' )
415415 self .assertEqual (events [20 ].mode , 'active' )
416- self .assertEqual (events [20 ].timestamp , 1462629479859 )
416+ self .assertEqual (events [20 ].timestamp , 1462629479960 )
417417 self .assertIsInstance (events [20 ].source , SourceGroup )
418418 self .assertEqual (events [20 ].source .type , 'group' )
419419 self .assertEqual (events [20 ].source .group_id , 'C4af4980629...' )
420420 self .assertEqual (events [20 ].webhook_event_id , 'testwebhookeventid' )
421421 self .assertIsInstance (events [20 ].delivery_context , DeliveryContext )
422422 self .assertFalse (events [20 ].delivery_context .is_redelivery )
423- self .assertEqual (len (events [20 ].joined .members ), 2 )
424- self .assertIsInstance (events [20 ].joined .members [0 ], SourceUser )
425- self .assertEqual (events [20 ].joined .members [0 ].user_id , 'U4af4980629...' )
426- self .assertEqual (events [20 ].joined .members [1 ].user_id , 'U91eeaf62d9...' )
423+ self .assertEqual (len (events [20 ].left .members ), 2 )
424+ self .assertIsInstance (events [20 ].left .members [0 ], SourceUser )
425+ self .assertEqual (events [20 ].left .members [0 ].user_id , 'U4af4980629...' )
426+ self .assertEqual (events [20 ].left .members [1 ].user_id , 'U91eeaf62d9...' )
427427
428- # MemberLeftEvent
429- self .assertIsInstance (events [21 ], MemberLeftEvent )
430- self .assertEqual (events [21 ].type , 'memberLeft' )
428+ # ThingsEvent, SourceUser, unlink
429+ self .assertIsInstance (events [21 ], ThingsEvent )
430+ self .assertEqual (events [21 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
431+ self .assertEqual (events [21 ].type , 'things' )
431432 self .assertEqual (events [21 ].mode , 'active' )
432- self .assertEqual (events [21 ].timestamp , 1462629479960 )
433- self .assertIsInstance (events [21 ].source , SourceGroup )
434- self .assertEqual (events [21 ].source .type , 'group ' )
435- self .assertEqual (events [21 ].source .group_id , 'C4af4980629... ' )
433+ self .assertEqual (events [21 ].timestamp , 1462629479859 )
434+ self .assertIsInstance (events [21 ].source , SourceUser )
435+ self .assertEqual (events [21 ].source .type , 'user ' )
436+ self .assertEqual (events [21 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8 ' )
436437 self .assertEqual (events [21 ].webhook_event_id , 'testwebhookeventid' )
437438 self .assertIsInstance (events [21 ].delivery_context , DeliveryContext )
438439 self .assertFalse (events [21 ].delivery_context .is_redelivery )
439- self .assertEqual (len (events [21 ].left .members ), 2 )
440- self .assertIsInstance (events [21 ].left .members [0 ], SourceUser )
441- self .assertEqual (events [21 ].left .members [0 ].user_id , 'U4af4980629...' )
442- self .assertEqual (events [21 ].left .members [1 ].user_id , 'U91eeaf62d9...' )
440+ self .assertIsInstance (events [21 ].things , DeviceUnlink )
441+ self .assertEqual (events [21 ].things .type , 'unlink' )
442+ self .assertEqual (events [21 ].things .device_id , 't2c449c9d1' )
443443
444- # ThingsEvent , SourceUser, unlink
445- self .assertIsInstance (events [22 ], ThingsEvent )
444+ # MessageEvent , SourceUser, FileMessage
445+ self .assertIsInstance (events [22 ], MessageEvent )
446446 self .assertEqual (events [22 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
447- self .assertEqual (events [22 ].type , 'things ' )
447+ self .assertEqual (events [22 ].type , 'message ' )
448448 self .assertEqual (events [22 ].mode , 'active' )
449449 self .assertEqual (events [22 ].timestamp , 1462629479859 )
450450 self .assertIsInstance (events [22 ].source , SourceUser )
@@ -453,123 +453,107 @@ def test_parse(self):
453453 self .assertEqual (events [22 ].webhook_event_id , 'testwebhookeventid' )
454454 self .assertIsInstance (events [22 ].delivery_context , DeliveryContext )
455455 self .assertFalse (events [22 ].delivery_context .is_redelivery )
456- self .assertIsInstance (events [22 ].things , DeviceUnlink )
457- self .assertEqual (events [22 ].things .type , 'unlink' )
458- self .assertEqual (events [22 ].things .device_id , 't2c449c9d1' )
456+ self .assertIsInstance (events [22 ].message , FileMessage )
457+ self .assertEqual (events [22 ].message .id , '325708' )
458+ self .assertEqual (events [22 ].message .type , 'file' )
459+ self .assertEqual (events [22 ].message .file_name , "file.txt" )
460+ self .assertEqual (events [22 ].message .file_size , 2138 )
459461
460- # MessageEvent , SourceUser, FileMessage
461- self .assertIsInstance (events [23 ], MessageEvent )
462+ # ThingsEvent , SourceUser, scenarioResult
463+ self .assertIsInstance (events [23 ], ThingsEvent )
462464 self .assertEqual (events [23 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
463- self .assertEqual (events [23 ].type , 'message ' )
465+ self .assertEqual (events [23 ].type , 'things ' )
464466 self .assertEqual (events [23 ].mode , 'active' )
465- self .assertEqual (events [23 ].timestamp , 1462629479859 )
467+ self .assertEqual (events [23 ].timestamp , 1547817848122 )
466468 self .assertIsInstance (events [23 ].source , SourceUser )
467469 self .assertEqual (events [23 ].source .type , 'user' )
468470 self .assertEqual (events [23 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
469471 self .assertEqual (events [23 ].webhook_event_id , 'testwebhookeventid' )
470472 self .assertIsInstance (events [23 ].delivery_context , DeliveryContext )
471473 self .assertFalse (events [23 ].delivery_context .is_redelivery )
472- self .assertIsInstance (events [23 ].message , FileMessage )
473- self .assertEqual (events [23 ].message .id , '325708' )
474- self .assertEqual (events [23 ].message .type , 'file' )
475- self .assertEqual (events [23 ].message .file_name , "file.txt" )
476- self .assertEqual (events [23 ].message .file_size , 2138 )
474+ self .assertIsInstance (events [23 ].things , ScenarioResult )
475+ self .assertEqual (events [23 ].things .type , 'scenarioResult' )
476+ self .assertEqual (events [23 ].things .device_id , 't2c449c9d1' )
477+ self .assertEqual (events [23 ].things .result .scenario_id , 'XXX' )
478+ self .assertEqual (events [23 ].things .result .revision , 2 )
479+ self .assertEqual (events [23 ].things .result .start_time , 1547817845950 )
480+ self .assertEqual (events [23 ].things .result .end_time , 1547817845952 )
481+ self .assertEqual (events [23 ].things .result .result_code , 'success' )
482+ self .assertEqual (events [23 ].things .result .ble_notification_payload , 'AQ==' )
483+ self .assertIsInstance (events [23 ].things .result .action_results [0 ], ActionResult )
484+ self .assertEqual (events [23 ].things .result .action_results [0 ].type , 'binary' )
485+ self .assertEqual (events [23 ].things .result .action_results [0 ].data , '/w==' )
486+ self .assertIsInstance (events [23 ].things .result .action_results [1 ], ActionResult )
487+ self .assertEqual (events [23 ].things .result .action_results [1 ].type , 'void' )
477488
478- # ThingsEvent, SourceUser, scenarioResult
479- self .assertIsInstance (events [24 ], ThingsEvent )
480- self .assertEqual (events [24 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
481- self .assertEqual (events [24 ].type , 'things' )
489+ # UnsendEvent
490+ self .assertIsInstance (events [24 ], UnsendEvent )
491+ self .assertEqual (events [24 ].type , 'unsend' )
482492 self .assertEqual (events [24 ].mode , 'active' )
483493 self .assertEqual (events [24 ].timestamp , 1547817848122 )
484- self .assertIsInstance (events [24 ].source , SourceUser )
485- self .assertEqual (events [24 ].source .type , 'user ' )
494+ self .assertIsInstance (events [24 ].source , SourceGroup )
495+ self .assertEqual (events [24 ].source .type , 'group ' )
486496 self .assertEqual (events [24 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
487497 self .assertEqual (events [24 ].webhook_event_id , 'testwebhookeventid' )
488498 self .assertIsInstance (events [24 ].delivery_context , DeliveryContext )
489499 self .assertFalse (events [24 ].delivery_context .is_redelivery )
490- self .assertIsInstance (events [24 ].things , ScenarioResult )
491- self .assertEqual (events [24 ].things .type , 'scenarioResult' )
492- self .assertEqual (events [24 ].things .device_id , 't2c449c9d1' )
493- self .assertEqual (events [24 ].things .result .scenario_id , 'XXX' )
494- self .assertEqual (events [24 ].things .result .revision , 2 )
495- self .assertEqual (events [24 ].things .result .start_time , 1547817845950 )
496- self .assertEqual (events [24 ].things .result .end_time , 1547817845952 )
497- self .assertEqual (events [24 ].things .result .result_code , 'success' )
498- self .assertEqual (events [24 ].things .result .ble_notification_payload , 'AQ==' )
499- self .assertIsInstance (events [24 ].things .result .action_results [0 ], ActionResult )
500- self .assertEqual (events [24 ].things .result .action_results [0 ].type , 'binary' )
501- self .assertEqual (events [24 ].things .result .action_results [0 ].data , '/w==' )
502- self .assertIsInstance (events [24 ].things .result .action_results [1 ], ActionResult )
503- self .assertEqual (events [24 ].things .result .action_results [1 ].type , 'void' )
500+ self .assertIsInstance (events [24 ].unsend , Unsend )
501+ self .assertEqual (events [24 ].unsend .message_id , '325708' )
504502
505- # UnsendEvent
506- self .assertIsInstance (events [25 ], UnsendEvent )
507- self .assertEqual (events [25 ].type , 'unsend' )
503+ # VideoPlayCompleteEvent
504+ self .assertIsInstance (events [25 ], VideoPlayCompleteEvent )
505+ self .assertEqual (events [25 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
506+ self .assertEqual (events [25 ].type , 'videoPlayComplete' )
508507 self .assertEqual (events [25 ].mode , 'active' )
509- self .assertEqual (events [25 ].timestamp , 1547817848122 )
510- self .assertIsInstance (events [25 ].source , SourceGroup )
511- self .assertEqual (events [25 ].source .type , 'group ' )
508+ self .assertEqual (events [25 ].timestamp , 1462629479859 )
509+ self .assertIsInstance (events [25 ].source , SourceUser )
510+ self .assertEqual (events [25 ].source .type , 'user ' )
512511 self .assertEqual (events [25 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
513512 self .assertEqual (events [25 ].webhook_event_id , 'testwebhookeventid' )
514513 self .assertIsInstance (events [25 ].delivery_context , DeliveryContext )
515514 self .assertFalse (events [25 ].delivery_context .is_redelivery )
516- self .assertIsInstance (events [25 ].unsend , Unsend )
517- self .assertEqual (events [25 ].unsend . message_id , '325708 ' )
515+ self .assertIsInstance (events [25 ].video_play_complete , VideoPlayComplete )
516+ self .assertEqual (events [25 ].video_play_complete . tracking_id , 'track_id ' )
518517
519- # VideoPlayCompleteEvent
520- self .assertIsInstance (events [26 ], VideoPlayCompleteEvent )
521- self .assertEqual (events [26 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA ' )
522- self .assertEqual (events [26 ].type , 'videoPlayComplete ' )
518+ # MessageEvent, SourceUser, ImageMessage with ImageSet
519+ self .assertIsInstance (events [1 ], MessageEvent )
520+ self .assertEqual (events [26 ].reply_token , 'fbf94e269485410da6b7e3a5e33283e8 ' )
521+ self .assertEqual (events [26 ].type , 'message ' )
523522 self .assertEqual (events [26 ].mode , 'active' )
524- self .assertEqual (events [26 ].timestamp , 1462629479859 )
523+ self .assertEqual (events [26 ].timestamp , 1627356924722 )
525524 self .assertIsInstance (events [26 ].source , SourceUser )
526525 self .assertEqual (events [26 ].source .type , 'user' )
527526 self .assertEqual (events [26 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
528527 self .assertEqual (events [26 ].webhook_event_id , 'testwebhookeventid' )
529528 self .assertIsInstance (events [26 ].delivery_context , DeliveryContext )
530529 self .assertFalse (events [26 ].delivery_context .is_redelivery )
531- self .assertIsInstance (events [26 ].video_play_complete , VideoPlayComplete )
532- self .assertEqual (events [26 ].video_play_complete .tracking_id , 'track_id' )
530+ self .assertIsInstance (events [26 ].message , ImageMessage )
531+ self .assertEqual (events [26 ].message .id , '354718705033693861' )
532+ self .assertEqual (events [26 ].message .type , 'image' )
533+ self .assertEqual (events [26 ].message .content_provider .type , 'line' )
534+ self .assertEqual (events [26 ].message .image_set .id , 'E005D41A7288F41B655' )
535+ self .assertEqual (events [26 ].message .image_set .index , 2 )
536+ self .assertEqual (events [26 ].message .image_set .total , 2 )
533537
534- # MessageEvent, SourceUser, ImageMessage with ImageSet
535- self .assertIsInstance (events [1 ], MessageEvent )
536- self .assertEqual (events [27 ].reply_token , 'fbf94e269485410da6b7e3a5e33283e8 ' )
538+ # MessageEvent, SourceUser, TextMessage (Redeliveried)
539+ self .assertIsInstance (events [27 ], MessageEvent )
540+ self .assertEqual (events [27 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA ' )
537541 self .assertEqual (events [27 ].type , 'message' )
538542 self .assertEqual (events [27 ].mode , 'active' )
539- self .assertEqual (events [27 ].timestamp , 1627356924722 )
543+ self .assertEqual (events [27 ].timestamp , 1462629479859 )
540544 self .assertIsInstance (events [27 ].source , SourceUser )
541545 self .assertEqual (events [27 ].source .type , 'user' )
542546 self .assertEqual (events [27 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
543547 self .assertEqual (events [27 ].webhook_event_id , 'testwebhookeventid' )
544548 self .assertIsInstance (events [27 ].delivery_context , DeliveryContext )
545- self .assertFalse (events [27 ].delivery_context .is_redelivery )
546- self .assertIsInstance (events [27 ].message , ImageMessage )
547- self .assertEqual (events [27 ].message .id , '354718705033693861' )
548- self .assertEqual (events [27 ].message .type , 'image' )
549- self .assertEqual (events [27 ].message .content_provider .type , 'line' )
550- self .assertEqual (events [27 ].message .image_set .id , 'E005D41A7288F41B655' )
551- self .assertEqual (events [27 ].message .image_set .index , 2 )
552- self .assertEqual (events [27 ].message .image_set .total , 2 )
553-
554- # MessageEvent, SourceUser, TextMessage (Redeliveried)
555- self .assertIsInstance (events [28 ], MessageEvent )
556- self .assertEqual (events [28 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
557- self .assertEqual (events [28 ].type , 'message' )
558- self .assertEqual (events [28 ].mode , 'active' )
559- self .assertEqual (events [28 ].timestamp , 1462629479859 )
560- self .assertIsInstance (events [28 ].source , SourceUser )
561- self .assertEqual (events [28 ].source .type , 'user' )
562- self .assertEqual (events [28 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
563- self .assertEqual (events [28 ].webhook_event_id , 'testwebhookeventid' )
564- self .assertIsInstance (events [28 ].delivery_context , DeliveryContext )
565- self .assertTrue (events [28 ].delivery_context .is_redelivery )
566- self .assertIsInstance (events [28 ].message , TextMessage )
567- self .assertEqual (events [28 ].message .id , '325708' )
568- self .assertEqual (events [28 ].message .type , 'text' )
569- self .assertEqual (events [28 ].message .text , 'Hello, world' )
549+ self .assertTrue (events [27 ].delivery_context .is_redelivery )
550+ self .assertIsInstance (events [27 ].message , TextMessage )
551+ self .assertEqual (events [27 ].message .id , '325708' )
552+ self .assertEqual (events [27 ].message .type , 'text' )
553+ self .assertEqual (events [27 ].message .text , 'Hello, world' )
570554
571555 # UnknownEvent
572- self .assertIsInstance (events [29 ], UnknownEvent )
556+ self .assertIsInstance (events [28 ], UnknownEvent )
573557
574558 def test_parse_webhook_req_without_destination (self ):
575559 body = """
0 commit comments