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 ), 27 )
7474
7575 # MessageEvent, SourceUser, TextMessage
7676 self .assertIsInstance (events [0 ], MessageEvent )
@@ -392,75 +392,75 @@ 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+ # MessageEvent, SourceUser, FileMessage
429+ self .assertIsInstance (events [21 ], MessageEvent )
430+ self .assertEqual (events [21 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
431+ self .assertEqual (events [21 ].type , 'message' )
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...' )
443-
444- # ThingsEvent, SourceUser, unlink
445- self . assertIsInstance ( events [ 22 ], ThingsEvent )
446- self .assertEqual (events [22 ]. reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
447- self .assertEqual (events [22 ].type , 'things ' )
440+ self .assertIsInstance ( events [21 ].message , FileMessage )
441+ self .assertEqual (events [21 ].message . id , '325708' )
442+ self .assertEqual (events [21 ].message . type , 'file ' )
443+ self .assertEqual (events [21 ].message . file_name , "file.txt" )
444+ self . assertEqual ( events [ 21 ]. message . file_size , 2138 )
445+
446+ # UnsendEvent
447+ self .assertIsInstance (events [22 ], UnsendEvent )
448+ self .assertEqual (events [22 ].type , 'unsend ' )
448449 self .assertEqual (events [22 ].mode , 'active' )
449- self .assertEqual (events [22 ].timestamp , 1462629479859 )
450- self .assertIsInstance (events [22 ].source , SourceUser )
451- self .assertEqual (events [22 ].source .type , 'user ' )
450+ self .assertEqual (events [22 ].timestamp , 1547817848122 )
451+ self .assertIsInstance (events [22 ].source , SourceGroup )
452+ self .assertEqual (events [22 ].source .type , 'group ' )
452453 self .assertEqual (events [22 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
453454 self .assertEqual (events [22 ].webhook_event_id , 'testwebhookeventid' )
454455 self .assertIsInstance (events [22 ].delivery_context , DeliveryContext )
455456 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' )
457+ self .assertIsInstance (events [22 ].unsend , Unsend )
458+ self .assertEqual (events [22 ].unsend .message_id , '325708' )
459459
460- # MessageEvent, SourceUser, FileMessage
461- self .assertIsInstance (events [23 ], MessageEvent )
460+ # VideoPlayCompleteEvent
461+ self .assertIsInstance (events [23 ], VideoPlayCompleteEvent )
462462 self .assertEqual (events [23 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
463- self .assertEqual (events [23 ].type , 'message ' )
463+ self .assertEqual (events [23 ].type , 'videoPlayComplete ' )
464464 self .assertEqual (events [23 ].mode , 'active' )
465465 self .assertEqual (events [23 ].timestamp , 1462629479859 )
466466 self .assertIsInstance (events [23 ].source , SourceUser )
@@ -469,107 +469,48 @@ def test_parse(self):
469469 self .assertEqual (events [23 ].webhook_event_id , 'testwebhookeventid' )
470470 self .assertIsInstance (events [23 ].delivery_context , DeliveryContext )
471471 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 )
477-
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' )
472+ self .assertIsInstance (events [23 ].video_play_complete , VideoPlayComplete )
473+ self .assertEqual (events [23 ].video_play_complete .tracking_id , 'track_id' )
474+
475+ # MessageEvent, SourceUser, ImageMessage with ImageSet
476+ self .assertIsInstance (events [1 ], MessageEvent )
477+ self .assertEqual (events [24 ].reply_token , 'fbf94e269485410da6b7e3a5e33283e8' )
478+ self .assertEqual (events [24 ].type , 'message' )
482479 self .assertEqual (events [24 ].mode , 'active' )
483- self .assertEqual (events [24 ].timestamp , 1547817848122 )
480+ self .assertEqual (events [24 ].timestamp , 1627356924722 )
484481 self .assertIsInstance (events [24 ].source , SourceUser )
485482 self .assertEqual (events [24 ].source .type , 'user' )
486483 self .assertEqual (events [24 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
487484 self .assertEqual (events [24 ].webhook_event_id , 'testwebhookeventid' )
488485 self .assertIsInstance (events [24 ].delivery_context , DeliveryContext )
489486 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' )
487+ self .assertIsInstance (events [24 ].message , ImageMessage )
488+ self .assertEqual (events [24 ].message .id , '354718705033693861' )
489+ self .assertEqual (events [24 ].message .type , 'image' )
490+ self .assertEqual (events [24 ].message .content_provider .type , 'line' )
491+ self .assertEqual (events [24 ].message .image_set .id , 'E005D41A7288F41B655' )
492+ self .assertEqual (events [24 ].message .image_set .index , 2 )
493+ self .assertEqual (events [24 ].message .image_set .total , 2 )
504494
505- # UnsendEvent
506- self .assertIsInstance (events [25 ], UnsendEvent )
507- self .assertEqual (events [25 ].type , 'unsend' )
495+ # MessageEvent, SourceUser, TextMessage (Redeliveried)
496+ self .assertIsInstance (events [25 ], MessageEvent )
497+ self .assertEqual (events [25 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
498+ self .assertEqual (events [25 ].type , 'message' )
508499 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 ' )
500+ self .assertEqual (events [25 ].timestamp , 1462629479859 )
501+ self .assertIsInstance (events [25 ].source , SourceUser )
502+ self .assertEqual (events [25 ].source .type , 'user ' )
512503 self .assertEqual (events [25 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
513504 self .assertEqual (events [25 ].webhook_event_id , 'testwebhookeventid' )
514505 self .assertIsInstance (events [25 ].delivery_context , DeliveryContext )
515- self .assertFalse (events [25 ].delivery_context .is_redelivery )
516- self .assertIsInstance (events [25 ].unsend , Unsend )
517- self .assertEqual (events [25 ].unsend .message_id , '325708' )
518-
519- # VideoPlayCompleteEvent
520- self .assertIsInstance (events [26 ], VideoPlayCompleteEvent )
521- self .assertEqual (events [26 ].reply_token , 'nHuyWiB7yP5Zw52FIkcQobQuGDXCTA' )
522- self .assertEqual (events [26 ].type , 'videoPlayComplete' )
523- self .assertEqual (events [26 ].mode , 'active' )
524- self .assertEqual (events [26 ].timestamp , 1462629479859 )
525- self .assertIsInstance (events [26 ].source , SourceUser )
526- self .assertEqual (events [26 ].source .type , 'user' )
527- self .assertEqual (events [26 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
528- self .assertEqual (events [26 ].webhook_event_id , 'testwebhookeventid' )
529- self .assertIsInstance (events [26 ].delivery_context , DeliveryContext )
530- 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' )
533-
534- # MessageEvent, SourceUser, ImageMessage with ImageSet
535- self .assertIsInstance (events [1 ], MessageEvent )
536- self .assertEqual (events [27 ].reply_token , 'fbf94e269485410da6b7e3a5e33283e8' )
537- self .assertEqual (events [27 ].type , 'message' )
538- self .assertEqual (events [27 ].mode , 'active' )
539- self .assertEqual (events [27 ].timestamp , 1627356924722 )
540- self .assertIsInstance (events [27 ].source , SourceUser )
541- self .assertEqual (events [27 ].source .type , 'user' )
542- self .assertEqual (events [27 ].source .user_id , 'U206d25c2ea6bd87c17655609a1c37cb8' )
543- self .assertEqual (events [27 ].webhook_event_id , 'testwebhookeventid' )
544- 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' )
506+ self .assertTrue (events [25 ].delivery_context .is_redelivery )
507+ self .assertIsInstance (events [25 ].message , TextMessage )
508+ self .assertEqual (events [25 ].message .id , '325708' )
509+ self .assertEqual (events [25 ].message .type , 'text' )
510+ self .assertEqual (events [25 ].message .text , 'Hello, world' )
570511
571512 # UnknownEvent
572- self .assertIsInstance (events [29 ], UnknownEvent )
513+ self .assertIsInstance (events [26 ], UnknownEvent )
573514
574515 def test_parse_webhook_req_without_destination (self ):
575516 body = """
0 commit comments