@@ -840,6 +840,97 @@ class EventRequestParserTest extends TestCase
840840          } 
841841        ] 
842842       } 
843+       }, 
844+       { 
845+         "type": "activated", 
846+         "timestamp": 12345678901234, 
847+         "mode": "active", 
848+         "source": { 
849+           "type": "user", 
850+           "userId": "userid" 
851+         }, 
852+         "chatControl": { 
853+           "expireAt": 1462629479860 
854+         }, 
855+         "webhookEventId": "testwebhookeventid", 
856+         "deliveryContext": { 
857+           "isRedelivery": false 
858+         } 
859+       }, 
860+       { 
861+         "type": "deactivated", 
862+         "timestamp": 12345678901234, 
863+         "mode": "active", 
864+         "source": { 
865+           "type": "user", 
866+           "userId": "userid" 
867+         }, 
868+         "webhookEventId": "testwebhookeventid", 
869+         "deliveryContext": { 
870+           "isRedelivery": false 
871+         } 
872+       }, 
873+       { 
874+         "type": "botSuspended", 
875+         "timestamp": 12345678901234, 
876+         "mode": "active", 
877+         "webhookEventId": "testwebhookeventid", 
878+         "deliveryContext": { 
879+           "isRedelivery": false 
880+         } 
881+       }, 
882+       { 
883+         "type": "botResumed", 
884+         "timestamp": 12345678901234, 
885+         "mode": "active", 
886+         "webhookEventId": "testwebhookeventid", 
887+         "deliveryContext": { 
888+           "isRedelivery": false 
889+         } 
890+       }, 
891+       { 
892+         "type": "delivery", 
893+         "timestamp": 12345678901234, 
894+         "mode": "active", 
895+         "source": { 
896+           "type": "user", 
897+           "userId": "userid" 
898+         }, 
899+         "delivery": { 
900+           "data": "deliverydata" 
901+         }, 
902+         "webhookEventId": "testwebhookeventid", 
903+         "deliveryContext": { 
904+           "isRedelivery": false 
905+         } 
906+       }, 
907+       { 
908+         "type": "module", 
909+         "timestamp": 12345678901234, 
910+         "mode": "active", 
911+         "module": { 
912+           "type": "attached", 
913+           "botId": "botid", 
914+           "scopes": ["a", "b"] 
915+         }, 
916+         "webhookEventId": "testwebhookeventid", 
917+         "deliveryContext": { 
918+           "isRedelivery": false 
919+         } 
920+       }, 
921+       { 
922+         "type": "module", 
923+         "timestamp": 12345678901234, 
924+         "mode": "active", 
925+         "module": { 
926+           "type": "detached", 
927+           "botId": "botid", 
928+           "reason": "bot deleted" 
929+         }, 
930+         "webhookEventId": "testwebhookeventid", 
931+         "deliveryContext": { 
932+           "isRedelivery": false 
933+         } 
843934      } 
844935     ] 
845936    } 
@@ -862,7 +953,7 @@ public function testParseEventRequest()
862953        $ this assertEquals ($ parsedEventsgetDestination (), 'U0123456789abcdef0123456789abcd ' );
863954
864955        $ events$ parsedEventsgetEvents ();
865-         $ this assertEquals (count ($ events39 );
956+         $ this assertEquals (count ($ events46 );
866957
867958        {
868959            // text 
@@ -1512,6 +1603,101 @@ public function testParseEventRequest()
15121603            $ this assertEquals ('5ac1bfd5040ab15980c9b435 ' , $ emojiInfogetProductId ());
15131604            $ this assertEquals ('001 ' , $ emojiInfogetEmojiId ());
15141605        }
1606+ 
1607+         {
1608+             // activated 
1609+             $ event$ events39 ];
1610+             $ source$ eventgetSource ();
1611+             $ this assertEquals (12345678901234 , $ eventgetTimestamp ());
1612+             $ this assertEquals ('active ' , $ eventgetMode ());
1613+             $ this assertTrue ($ sourceinstanceof  UserSource);
1614+             $ this assertEquals ('userid ' , $ sourcegetUserId ());
1615+             $ this assertInstanceOf (\LINE \Webhook \Model \ActivatedEvent::class, $ event
1616+             $ this assertInstanceOf (\LINE \Webhook \Model \ChatControl::class, $ eventgetChatControl ());
1617+             $ this assertEquals (1462629479860 , $ eventgetChatControl ()->getExpireAt ());
1618+             $ this assertEquals ('testwebhookeventid ' , $ eventgetWebhookEventId ());
1619+             $ this assertFalse ($ eventgetDeliveryContext ()->getIsRedelivery ());
1620+         }
1621+ 
1622+         {
1623+             // deactivated 
1624+             $ event$ events40 ];
1625+             $ source$ eventgetSource ();
1626+             $ this assertEquals (12345678901234 , $ eventgetTimestamp ());
1627+             $ this assertEquals ('active ' , $ eventgetMode ());
1628+             $ this assertTrue ($ sourceinstanceof  UserSource);
1629+             $ this assertEquals ('userid ' , $ sourcegetUserId ());
1630+             $ this assertInstanceOf (\LINE \Webhook \Model \DeactivatedEvent::class, $ event
1631+             $ this assertEquals ('testwebhookeventid ' , $ eventgetWebhookEventId ());
1632+             $ this assertFalse ($ eventgetDeliveryContext ()->getIsRedelivery ());
1633+         }
1634+ 
1635+         {
1636+             // botSuspended 
1637+             $ event$ events41 ];
1638+             $ this assertEquals (12345678901234 , $ eventgetTimestamp ());
1639+             $ this assertEquals ('active ' , $ eventgetMode ());
1640+             $ this assertInstanceOf (\LINE \Webhook \Model \BotSuspendedEvent::class, $ event
1641+             $ this assertEquals ('testwebhookeventid ' , $ eventgetWebhookEventId ());
1642+             $ this assertFalse ($ eventgetDeliveryContext ()->getIsRedelivery ());
1643+         }
1644+ 
1645+         {
1646+             // botResumed 
1647+             $ event$ events42 ];
1648+             $ this assertEquals (12345678901234 , $ eventgetTimestamp ());
1649+             $ this assertEquals ('active ' , $ eventgetMode ());
1650+             $ this assertInstanceOf (\LINE \Webhook \Model \BotResumedEvent::class, $ event
1651+             $ this assertEquals ('testwebhookeventid ' , $ eventgetWebhookEventId ());
1652+             $ this assertFalse ($ eventgetDeliveryContext ()->getIsRedelivery ());
1653+         }
1654+ 
1655+         {
1656+             // delivery 
1657+             $ event$ events43 ];
1658+             $ source$ eventgetSource ();
1659+             $ this assertEquals (12345678901234 , $ eventgetTimestamp ());
1660+             $ this assertEquals ('active ' , $ eventgetMode ());
1661+             $ this assertTrue ($ sourceinstanceof  UserSource);
1662+             $ this assertEquals ('userid ' , $ sourcegetUserId ());
1663+             $ this assertInstanceOf (\LINE \Webhook \Model \PnpDeliveryCompletionEvent::class, $ event
1664+             $ this assertInstanceOf (\LINE \Webhook \Model \PnpDelivery::class, $ eventgetDelivery ());
1665+             $ this assertEquals ('deliverydata ' , $ eventgetDelivery ()->getData ());
1666+             $ this assertEquals ('testwebhookeventid ' , $ eventgetWebhookEventId ());
1667+             $ this assertFalse ($ eventgetDeliveryContext ()->getIsRedelivery ());
1668+         }
1669+ 
1670+         {
1671+             // module (attached) 
1672+             $ event$ events44 ];
1673+             $ this assertEquals (12345678901234 , $ eventgetTimestamp ());
1674+             $ this assertEquals ('active ' , $ eventgetMode ());
1675+             $ this assertInstanceOf (\LINE \Webhook \Model \ModuleEvent::class, $ event
1676+             /** @var \LINE\Webhook\Model\AttachedModuleContent $module */ 
1677+             $ module$ eventgetModule ();
1678+ 
1679+             $ this assertInstanceOf (\LINE \Webhook \Model \AttachedModuleContent::class, $ module
1680+             $ this assertEquals ('botid ' , $ modulegetBotId ());
1681+             $ this assertEquals ('b ' , $ modulegetScopes ()[1 ]);
1682+             $ this assertEquals ('testwebhookeventid ' , $ eventgetWebhookEventId ());
1683+             $ this assertFalse ($ eventgetDeliveryContext ()->getIsRedelivery ());
1684+         }
1685+ 
1686+         {
1687+             // module (detached) 
1688+             $ event$ events45 ];
1689+             $ this assertEquals (12345678901234 , $ eventgetTimestamp ());
1690+             $ this assertEquals ('active ' , $ eventgetMode ());
1691+             $ this assertInstanceOf (\LINE \Webhook \Model \ModuleEvent::class, $ event
1692+             /** @var \LINE\Webhook\Model\DetachedModuleContent $module */ 
1693+             $ module$ eventgetModule ();
1694+ 
1695+             $ this assertInstanceOf (\LINE \Webhook \Model \DetachedModuleContent::class, $ eventgetModule ());
1696+             $ this assertEquals ('botid ' , $ modulegetBotId ());
1697+             $ this assertEquals ('bot deleted ' , $ modulegetReason ());
1698+             $ this assertEquals ('testwebhookeventid ' , $ eventgetWebhookEventId ());
1699+             $ this assertFalse ($ eventgetDeliveryContext ()->getIsRedelivery ());
1700+         }
15151701    }
15161702
15171703    private  static  function  getSignature (string  $ secretstring 
0 commit comments