@@ -56,4 +56,68 @@ public function testIssueStatelessChannelToken(): void
5656 $ this ->assertEquals (30 , $ response ->getExpiresIn ());
5757 $ this ->assertEquals ('Bearer ' , $ response ->getTokenType ());
5858 }
59+
60+ public function testIssueStatelessChannelTokenByJWTAssertion (): void
61+ {
62+ $ client = Mockery::mock (ClientInterface::class);
63+ $ client ->shouldReceive ('send ' )
64+ ->with (
65+ Mockery::on (function (Request $ request ) {
66+ $ this ->assertEquals ('POST ' , $ request ->getMethod ());
67+ $ this ->assertEquals ('https://api.line.me/oauth2/v3/token ' , (string )$ request ->getUri ());
68+ $ body = (string )$ request ->getBody ();
69+ parse_str ($ body , $ params );
70+ $ this ->assertEquals ('client_credentials ' , $ params ['grant_type ' ]);
71+ $ this ->assertEquals ('urn:ietf:params:oauth:client-assertion-type:jwt-bearer ' , $ params ['client_assertion_type ' ]);
72+ $ this ->assertEquals ('jwtAssertionToken ' , $ params ['client_assertion ' ]);
73+ $ this ->assertArrayNotHasKey ('client_id ' , $ params );
74+ $ this ->assertArrayNotHasKey ('client_secret ' , $ params );
75+ return true ;
76+ }),
77+ []
78+ )
79+ ->once ()
80+ ->andReturn (new Response (
81+ status: 200 ,
82+ headers: [],
83+ body: json_encode (['access_token ' => 'accessToken ' , 'expires_in ' => 30 , 'token_type ' => 'Bearer ' ]),
84+ ));
85+ $ api = new ChannelAccessTokenApi ($ client );
86+ $ response = $ api ->issueStatelessChannelTokenByJWTAssertion (clientAssertion: "jwtAssertionToken " );
87+ $ this ->assertEquals ('accessToken ' , $ response ->getAccessToken ());
88+ $ this ->assertEquals (30 , $ response ->getExpiresIn ());
89+ $ this ->assertEquals ('Bearer ' , $ response ->getTokenType ());
90+ }
91+
92+ public function testIssueStatelessChannelTokenByClientSecret (): void
93+ {
94+ $ client = Mockery::mock (ClientInterface::class);
95+ $ client ->shouldReceive ('send ' )
96+ ->with (
97+ Mockery::on (function (Request $ request ) {
98+ $ this ->assertEquals ('POST ' , $ request ->getMethod ());
99+ $ this ->assertEquals ('https://api.line.me/oauth2/v3/token ' , (string )$ request ->getUri ());
100+ $ body = (string )$ request ->getBody ();
101+ parse_str ($ body , $ params );
102+ $ this ->assertEquals ('client_credentials ' , $ params ['grant_type ' ]);
103+ $ this ->assertEquals ('1234 ' , $ params ['client_id ' ]);
104+ $ this ->assertEquals ('clientSecret ' , $ params ['client_secret ' ]);
105+ $ this ->assertArrayNotHasKey ('client_assertion_type ' , $ params );
106+ $ this ->assertArrayNotHasKey ('client_assertion ' , $ params );
107+ return true ;
108+ }),
109+ []
110+ )
111+ ->once ()
112+ ->andReturn (new Response (
113+ status: 200 ,
114+ headers: [],
115+ body: json_encode (['access_token ' => 'accessToken ' , 'expires_in ' => 30 , 'token_type ' => 'Bearer ' ]),
116+ ));
117+ $ api = new ChannelAccessTokenApi ($ client );
118+ $ response = $ api ->issueStatelessChannelTokenByClientSecret (clientId: "1234 " , clientSecret: "clientSecret " );
119+ $ this ->assertEquals ('accessToken ' , $ response ->getAccessToken ());
120+ $ this ->assertEquals (30 , $ response ->getExpiresIn ());
121+ $ this ->assertEquals ('Bearer ' , $ response ->getTokenType ());
122+ }
59123}
0 commit comments