@@ -152,23 +152,30 @@ public function testBuildParams()
152
152
153
153
public function testTokenFromCodeSuccess ()
154
154
{
155
- $ mockProvider = $ this ->getMockBuilder (Alipay::class)
156
- ->setConstructorArgs ([[
157
- 'client_id ' => 'client_id ' ,
158
- 'rsa_private_key ' => 'private_key ' ,
159
- 'redirect_url ' => 'http://localhost/callback ' ,
160
- ]])
161
- ->onlyMethods (['getHttpClient ' , 'generateSign ' ])
162
- ->getMock ();
163
-
164
-
165
-
166
-
155
+ $ provider = new Alipay ([
156
+ 'client_id ' => 'client_id ' ,
157
+ 'rsa_private_key ' => 'private_key ' ,
158
+ 'redirect_url ' => 'http://localhost/callback ' ,
159
+ ]);
167
160
168
-
161
+ // Mock HTTP response
162
+ $ mock = new MockHandler ([
163
+ new Response (200 , [], json_encode ([
164
+ 'alipay_system_oauth_token_response ' => [
165
+ 'access_token ' => 'token123 ' ,
166
+ 'user_id ' => 'user123 '
167
+ ]
168
+ ]))
169
+ ]);
169
170
171
+ $ handler = HandlerStack::create ($ mock );
172
+ $ client = new Client (['handler ' => $ handler ]);
170
173
171
- $ provider ->method ('generateSign ' )->willReturn ('test_signature ' );
174
+ // Use reflection to set the HTTP client
175
+ $ reflection = new \ReflectionObject ($ provider );
176
+ $ httpClientProperty = $ reflection ->getProperty ('httpClient ' );
177
+ $ httpClientProperty ->setAccessible (true );
178
+ $ httpClientProperty ->setValue ($ provider , $ client );
172
179
173
180
$ token = $ provider ->tokenFromCode ('test_code ' );
174
181
@@ -178,49 +185,60 @@ public function testTokenFromCodeSuccess()
178
185
179
186
public function testThrowsExceptionWhenTokenResponseMissing ()
180
187
{
181
- $ mockProvider = $ this ->getMockBuilder (Alipay::class)
182
- ->setConstructorArgs ([[
183
- 'client_id ' => 'client_id ' ,
184
- 'rsa_private_key ' => 'private_key ' ,
185
- 'redirect_url ' => 'http://localhost/callback ' ,
186
- ]])
187
- ->onlyMethods (['getHttpClient ' , 'generateSign ' ])
188
- ->getMock ();
189
-
190
-
191
-
192
-
188
+ $ provider = new Alipay ([
189
+ 'client_id ' => 'client_id ' ,
190
+ 'rsa_private_key ' => 'private_key ' ,
191
+ 'redirect_url ' => 'http://localhost/callback ' ,
192
+ ]);
193
193
194
- // Missing alipay_system_oauth_token_response
194
+ // Mock HTTP response without alipay_system_oauth_token_response
195
+ $ mock = new MockHandler ([
196
+ new Response (200 , [], json_encode ([
197
+ 'some_other_field ' => 'value '
198
+ ]))
199
+ ]);
195
200
201
+ $ handler = HandlerStack::create ($ mock );
202
+ $ client = new Client (['handler ' => $ handler ]);
196
203
197
- $ provider ->method ('generateSign ' )->willReturn ('test_signature ' );
204
+ // Use reflection to set the HTTP client
205
+ $ reflection = new \ReflectionObject ($ provider );
206
+ $ httpClientProperty = $ reflection ->getProperty ('httpClient ' );
207
+ $ httpClientProperty ->setAccessible (true );
208
+ $ httpClientProperty ->setValue ($ provider , $ client );
198
209
199
210
$ this ->expectException (AuthorizeFailedException::class);
200
211
$ this ->expectExceptionMessage ('Authorization failed: missing alipay_system_oauth_token_response in response ' );
201
-
212
+
202
213
$ provider ->tokenFromCode ('test_code ' );
203
214
}
204
215
205
216
public function testThrowsExceptionWhenErrorResponse ()
206
217
{
207
- $ mockProvider = $ this ->getMockBuilder (Alipay::class)
208
- ->setConstructorArgs ([[
209
- 'client_id ' => 'client_id ' ,
210
- 'rsa_private_key ' => 'private_key ' ,
211
- 'redirect_url ' => 'http://localhost/callback ' ,
212
- ]])
213
- ->onlyMethods (['getHttpClient ' , 'generateSign ' ])
214
- ->getMock ();
215
-
216
-
217
-
218
-
218
+ $ provider = new Alipay ([
219
+ 'client_id ' => 'client_id ' ,
220
+ 'rsa_private_key ' => 'private_key ' ,
221
+ 'redirect_url ' => 'http://localhost/callback ' ,
222
+ ]);
219
223
220
-
224
+ // Mock HTTP response with error
225
+ $ mock = new MockHandler ([
226
+ new Response (200 , [], json_encode ([
227
+ 'error_response ' => [
228
+ 'code ' => '20001 ' ,
229
+ 'msg ' => 'Invalid parameters '
230
+ ]
231
+ ]))
232
+ ]);
221
233
234
+ $ handler = HandlerStack::create ($ mock );
235
+ $ client = new Client (['handler ' => $ handler ]);
222
236
223
- $ provider ->method ('generateSign ' )->willReturn ('test_signature ' );
237
+ // Use reflection to set the HTTP client
238
+ $ reflection = new \ReflectionObject ($ provider );
239
+ $ httpClientProperty = $ reflection ->getProperty ('httpClient ' );
240
+ $ httpClientProperty ->setAccessible (true );
241
+ $ httpClientProperty ->setValue ($ provider , $ client );
224
242
225
243
$ this ->expectException (BadRequestException::class);
226
244
@@ -229,27 +247,34 @@ public function testThrowsExceptionWhenErrorResponse()
229
247
230
248
public function testGetUserByTokenSuccess ()
231
249
{
232
- $ mockProvider = $ this ->getMockBuilder (Alipay::class)
233
- ->setConstructorArgs ([[
234
- 'client_id ' => 'client_id ' ,
235
- 'rsa_private_key ' => 'private_key ' ,
236
- 'redirect_url ' => 'http://localhost/callback ' ,
237
- ]])
238
- ->onlyMethods (['getHttpClient ' , 'generateSign ' ])
239
- ->getMock ();
240
-
241
-
242
-
243
-
250
+ $ provider = new Alipay ([
251
+ 'client_id ' => 'client_id ' ,
252
+ 'rsa_private_key ' => 'private_key ' ,
253
+ 'redirect_url ' => 'http://localhost/callback ' ,
254
+ ]);
244
255
245
-
256
+ // Mock HTTP response with user data
257
+ $ mock = new MockHandler ([
258
+ new Response (200 , [], json_encode ([
259
+ 'alipay_user_info_share_response ' => [
260
+ 'user_id ' => 'user123 ' ,
261
+ 'nick_name ' => 'Test User '
262
+ ]
263
+ ]))
264
+ ]);
246
265
266
+ $ handler = HandlerStack::create ($ mock );
267
+ $ client = new Client (['handler ' => $ handler ]);
247
268
248
- $ provider ->method ('generateSign ' )->willReturn ('test_signature ' );
269
+ // Use reflection to set the HTTP client
270
+ $ reflection = new \ReflectionObject ($ provider );
271
+ $ httpClientProperty = $ reflection ->getProperty ('httpClient ' );
272
+ $ httpClientProperty ->setAccessible (true );
273
+ $ httpClientProperty ->setValue ($ provider , $ client );
249
274
250
275
$ getUserByToken = new ReflectionMethod (Alipay::class, 'getUserByToken ' );
251
276
$ getUserByToken ->setAccessible (true );
252
- $ result = $ getUserByToken ->invoke ($ mockProvider , 'test_token ' );
277
+ $ result = $ getUserByToken ->invoke ($ provider , 'test_token ' );
253
278
254
279
$ this ->assertArrayHasKey ('user_id ' , $ result );
255
280
$ this ->assertSame ('user123 ' , $ result ['user_id ' ]);
@@ -259,29 +284,36 @@ public function testGetUserByTokenSuccess()
259
284
260
285
public function testGetUserByTokenThrowsExceptionWhenErrorResponse ()
261
286
{
262
- $ mockProvider = $ this ->getMockBuilder (Alipay::class)
263
- ->setConstructorArgs ([[
264
- 'client_id ' => 'client_id ' ,
265
- 'rsa_private_key ' => 'private_key ' ,
266
- 'redirect_url ' => 'http://localhost/callback ' ,
267
- ]])
268
- ->onlyMethods (['getHttpClient ' , 'generateSign ' ])
269
- ->getMock ();
270
-
271
-
272
-
273
-
287
+ $ provider = new Alipay ([
288
+ 'client_id ' => 'client_id ' ,
289
+ 'rsa_private_key ' => 'private_key ' ,
290
+ 'redirect_url ' => 'http://localhost/callback ' ,
291
+ ]);
274
292
275
-
293
+ // Mock HTTP response with error
294
+ $ mock = new MockHandler ([
295
+ new Response (200 , [], json_encode ([
296
+ 'error_response ' => [
297
+ 'code ' => '20001 ' ,
298
+ 'msg ' => 'Invalid token '
299
+ ]
300
+ ]))
301
+ ]);
276
302
303
+ $ handler = HandlerStack::create ($ mock );
304
+ $ client = new Client (['handler ' => $ handler ]);
277
305
278
- $ provider ->method ('generateSign ' )->willReturn ('test_signature ' );
306
+ // Use reflection to set the HTTP client
307
+ $ reflection = new \ReflectionObject ($ provider );
308
+ $ httpClientProperty = $ reflection ->getProperty ('httpClient ' );
309
+ $ httpClientProperty ->setAccessible (true );
310
+ $ httpClientProperty ->setValue ($ provider , $ client );
279
311
280
312
$ this ->expectException (BadRequestException::class);
281
313
282
314
$ getUserByToken = new ReflectionMethod (Alipay::class, 'getUserByToken ' );
283
315
$ getUserByToken ->setAccessible (true );
284
- $ getUserByToken ->invoke ($ mockProvider , 'test_token ' );
316
+ $ getUserByToken ->invoke ($ provider , 'test_token ' );
285
317
}
286
318
287
319
public function testMapUserToObject ()
0 commit comments