@@ -264,12 +264,14 @@ describe('Token Handler', () => {
264
264
} ) ;
265
265
266
266
it ( 'returns tokens for valid code exchange' , async ( ) => {
267
+ const mockExchangeCode = jest . spyOn ( mockProvider , 'exchangeAuthorizationCode' ) ;
267
268
const response = await supertest ( app )
268
269
. post ( '/token' )
269
270
. type ( 'form' )
270
271
. send ( {
271
272
client_id : 'valid-client' ,
272
273
client_secret : 'valid-secret' ,
274
+ resource : 'https://api.example.com/resource' ,
273
275
grant_type : 'authorization_code' ,
274
276
code : 'valid_code' ,
275
277
code_verifier : 'valid_verifier'
@@ -280,24 +282,6 @@ describe('Token Handler', () => {
280
282
expect ( response . body . token_type ) . toBe ( 'bearer' ) ;
281
283
expect ( response . body . expires_in ) . toBe ( 3600 ) ;
282
284
expect ( response . body . refresh_token ) . toBe ( 'mock_refresh_token' ) ;
283
- } ) ;
284
-
285
- it ( 'accepts and passes resource parameter to provider' , async ( ) => {
286
- const mockExchangeCode = jest . spyOn ( mockProvider , 'exchangeAuthorizationCode' ) ;
287
-
288
- const response = await supertest ( app )
289
- . post ( '/token' )
290
- . type ( 'form' )
291
- . send ( {
292
- client_id : 'valid-client' ,
293
- client_secret : 'valid-secret' ,
294
- grant_type : 'authorization_code' ,
295
- code : 'valid_code' ,
296
- code_verifier : 'valid_verifier' ,
297
- resource : 'https://api.example.com/resource'
298
- } ) ;
299
-
300
- expect ( response . status ) . toBe ( 200 ) ;
301
285
expect ( mockExchangeCode ) . toHaveBeenCalledWith (
302
286
validClient ,
303
287
'valid_code' ,
@@ -465,12 +449,14 @@ describe('Token Handler', () => {
465
449
} ) ;
466
450
467
451
it ( 'returns new tokens for valid refresh token' , async ( ) => {
452
+ const mockExchangeRefresh = jest . spyOn ( mockProvider , 'exchangeRefreshToken' ) ;
468
453
const response = await supertest ( app )
469
454
. post ( '/token' )
470
455
. type ( 'form' )
471
456
. send ( {
472
457
client_id : 'valid-client' ,
473
458
client_secret : 'valid-secret' ,
459
+ resource : 'https://api.example.com/resource' ,
474
460
grant_type : 'refresh_token' ,
475
461
refresh_token : 'valid_refresh_token'
476
462
} ) ;
@@ -480,39 +466,6 @@ describe('Token Handler', () => {
480
466
expect ( response . body . token_type ) . toBe ( 'bearer' ) ;
481
467
expect ( response . body . expires_in ) . toBe ( 3600 ) ;
482
468
expect ( response . body . refresh_token ) . toBe ( 'new_mock_refresh_token' ) ;
483
- } ) ;
484
-
485
- it ( 'respects requested scopes on refresh' , async ( ) => {
486
- const response = await supertest ( app )
487
- . post ( '/token' )
488
- . type ( 'form' )
489
- . send ( {
490
- client_id : 'valid-client' ,
491
- client_secret : 'valid-secret' ,
492
- grant_type : 'refresh_token' ,
493
- refresh_token : 'valid_refresh_token' ,
494
- scope : 'profile email'
495
- } ) ;
496
-
497
- expect ( response . status ) . toBe ( 200 ) ;
498
- expect ( response . body . scope ) . toBe ( 'profile email' ) ;
499
- } ) ;
500
-
501
- it ( 'accepts and passes resource parameter to provider on refresh' , async ( ) => {
502
- const mockExchangeRefresh = jest . spyOn ( mockProvider , 'exchangeRefreshToken' ) ;
503
-
504
- const response = await supertest ( app )
505
- . post ( '/token' )
506
- . type ( 'form' )
507
- . send ( {
508
- client_id : 'valid-client' ,
509
- client_secret : 'valid-secret' ,
510
- grant_type : 'refresh_token' ,
511
- refresh_token : 'valid_refresh_token' ,
512
- resource : 'https://api.example.com/resource'
513
- } ) ;
514
-
515
- expect ( response . status ) . toBe ( 200 ) ;
516
469
expect ( mockExchangeRefresh ) . toHaveBeenCalledWith (
517
470
validClient ,
518
471
'valid_refresh_token' ,
@@ -521,48 +474,7 @@ describe('Token Handler', () => {
521
474
) ;
522
475
} ) ;
523
476
524
- it ( 'rejects invalid resource parameter (non-URL) on refresh' , async ( ) => {
525
- const response = await supertest ( app )
526
- . post ( '/token' )
527
- . type ( 'form' )
528
- . send ( {
529
- client_id : 'valid-client' ,
530
- client_secret : 'valid-secret' ,
531
- grant_type : 'refresh_token' ,
532
- refresh_token : 'valid_refresh_token' ,
533
- resource : 'not-a-url'
534
- } ) ;
535
-
536
- expect ( response . status ) . toBe ( 400 ) ;
537
- expect ( response . body . error ) . toBe ( 'invalid_request' ) ;
538
- expect ( response . body . error_description ) . toContain ( 'resource' ) ;
539
- } ) ;
540
-
541
- it ( 'handles refresh token exchange without resource parameter' , async ( ) => {
542
- const mockExchangeRefresh = jest . spyOn ( mockProvider , 'exchangeRefreshToken' ) ;
543
-
544
- const response = await supertest ( app )
545
- . post ( '/token' )
546
- . type ( 'form' )
547
- . send ( {
548
- client_id : 'valid-client' ,
549
- client_secret : 'valid-secret' ,
550
- grant_type : 'refresh_token' ,
551
- refresh_token : 'valid_refresh_token'
552
- } ) ;
553
-
554
- expect ( response . status ) . toBe ( 200 ) ;
555
- expect ( mockExchangeRefresh ) . toHaveBeenCalledWith (
556
- validClient ,
557
- 'valid_refresh_token' ,
558
- undefined , // scopes
559
- undefined // resource parameter
560
- ) ;
561
- } ) ;
562
-
563
- it ( 'passes resource with scopes on refresh' , async ( ) => {
564
- const mockExchangeRefresh = jest . spyOn ( mockProvider , 'exchangeRefreshToken' ) ;
565
-
477
+ it ( 'respects requested scopes on refresh' , async ( ) => {
566
478
const response = await supertest ( app )
567
479
. post ( '/token' )
568
480
. type ( 'form' )
@@ -571,17 +483,11 @@ describe('Token Handler', () => {
571
483
client_secret : 'valid-secret' ,
572
484
grant_type : 'refresh_token' ,
573
485
refresh_token : 'valid_refresh_token' ,
574
- scope : 'profile email' ,
575
- resource : 'https://api.example.com/resource'
486
+ scope : 'profile email'
576
487
} ) ;
577
488
578
489
expect ( response . status ) . toBe ( 200 ) ;
579
- expect ( mockExchangeRefresh ) . toHaveBeenCalledWith (
580
- validClient ,
581
- 'valid_refresh_token' ,
582
- [ 'profile' , 'email' ] , // scopes
583
- new URL ( 'https://api.example.com/resource' ) // resource parameter
584
- ) ;
490
+ expect ( response . body . scope ) . toBe ( 'profile email' ) ;
585
491
} ) ;
586
492
} ) ;
587
493
0 commit comments