Skip to content

Commit 45a422f

Browse files
committed
NO-ISSUE Bye line things
1 parent b894f47 commit 45a422f

5 files changed

Lines changed: 174 additions & 390 deletions

File tree

README.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,9 @@ Versioning
332332
----------
333333
This project respects semantic versioning
334334

335-
See http://semver.org/
335+
- See `semver.org <https://semver.org/>`_
336336

337+
However, if a feature that was publicly released is discontinued for business reasons and becomes completely unusable, we will release changes as a patch release.
337338

338339
Version 3.x
339340
-----------

tests/test_webhook.py

Lines changed: 96 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from 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

Comments
 (0)