@@ -336,6 +336,8 @@ describe('Editor', function() {
336
336
337
337
for ( const alg of algs ) {
338
338
it ( alg . toUpperCase ( ) , async function ( ) {
339
+ this . timeout ( 20000 ) ;
340
+
339
341
await this . page . click ( '.js-input' ) ;
340
342
await this . page . keyboard . down ( 'ControlLeft' ) ;
341
343
await this . page . keyboard . press ( 'KeyA' ) ;
@@ -369,71 +371,86 @@ describe('Editor', function() {
369
371
}
370
372
} ) ;
371
373
372
- describe ( 'Encodes RS/ES/PS tokens' , function ( ) {
373
- const algs = Object . keys ( defaultTokens )
374
- . filter ( alg => ! alg . includes ( 'hs' ) && alg !== 'none' ) ;
375
-
376
- for ( const alg of algs ) {
377
- it ( alg . toUpperCase ( ) , async function ( ) {
374
+ describe ( 'Encodes RS/ES/PS tokens' , function ( ) {
375
+ describe ( 'RS/PS' , async function ( ) {
376
+ before ( async function ( ) {
378
377
this . timeout ( 30000 ) ;
379
378
380
- await this . page . select ( '#algorithm-select' , alg . toUpperCase ( ) ) ;
381
-
382
- const oldToken = await this . page . evaluate ( ( ) => {
383
- return window . test . tokenEditor . getValue ( ) ;
384
- } ) ;
379
+ await this . page . select ( '#algorithm-select' , 'RS256' ) ;
385
380
386
381
await this . page . click ( 'textarea[name="public-key"]' ) ;
387
382
await this . page . keyboard . down ( 'ControlLeft' ) ;
388
383
await this . page . keyboard . press ( 'KeyA' ) ;
389
384
await this . page . keyboard . up ( 'ControlLeft' ) ;
390
- await this . page . keyboard . type ( defaultTokens [ alg ] . publicKey , {
385
+ await this . page . keyboard . type ( defaultTokens [ 'rs256' ] . publicKey , {
391
386
delay : 5
392
387
} ) ;
393
388
394
389
await this . page . click ( 'textarea[name="private-key"]' ) ;
395
390
await this . page . keyboard . down ( 'ControlLeft' ) ;
396
391
await this . page . keyboard . press ( 'KeyA' ) ;
397
392
await this . page . keyboard . up ( 'ControlLeft' ) ;
398
- await this . page . keyboard . type ( defaultTokens [ alg ] . privateKey , {
399
- delay : 5
400
- } ) ;
401
-
402
- await this . page . click ( '.js-header' ) ;
403
- await this . page . keyboard . down ( 'ControlLeft' ) ;
404
- await this . page . keyboard . press ( 'KeyA' ) ;
405
- await this . page . keyboard . up ( 'ControlLeft' ) ;
406
- await this . page . keyboard . type ( JSON . stringify ( {
407
- alg : alg . toUpperCase ( ) ,
408
- typ : 'JWT'
409
- } , null , 2 ) , {
410
- delay : 5
411
- } ) ;
412
-
413
- await this . page . click ( '.js-payload' ) ;
414
- await this . page . keyboard . down ( 'ControlLeft' ) ;
415
- await this . page . keyboard . press ( 'KeyA' ) ;
416
- await this . page . keyboard . up ( 'ControlLeft' ) ;
417
- await this . page . keyboard . type ( JSON . stringify ( {
418
- sub : 'test'
419
- } , null , 2 ) , {
393
+ await this . page . keyboard . type ( defaultTokens [ 'rs256' ] . privateKey , {
420
394
delay : 5
421
395
} ) ;
396
+ } ) ;
422
397
423
- const newToken = await this . page . evaluate ( ( ) => {
424
- return window . test . tokenEditor . getValue ( ) ;
425
- } ) ;
398
+ const algs =
399
+ Object . keys ( defaultTokens )
400
+ . filter ( alg => alg . includes ( 'rs' ) || alg . includes ( 'ps' ) ) ;
401
+
402
+ for ( const alg of algs ) {
403
+ it ( alg . toUpperCase ( ) , async function ( ) {
404
+ this . timeout ( 30000 ) ;
405
+
406
+ await this . page . evaluate ( token => {
407
+ window . test . tokenEditor . setValue ( token ) ;
408
+ } , defaultTokens [ alg ] . token ) ;
409
+
410
+ await this . page . select ( '#algorithm-select' , alg . toUpperCase ( ) ) ;
411
+
412
+ const oldToken = await this . page . evaluate ( ( ) => {
413
+ return window . test . tokenEditor . getValue ( ) ;
414
+ } ) ;
415
+
416
+ await this . page . click ( '.js-header' ) ;
417
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
418
+ await this . page . keyboard . press ( 'KeyA' ) ;
419
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
420
+ await this . page . keyboard . type ( JSON . stringify ( {
421
+ alg : alg . toUpperCase ( ) ,
422
+ typ : 'JWT'
423
+ } , null , 2 ) , {
424
+ delay : 5
425
+ } ) ;
426
+
427
+ await this . page . click ( '.js-payload' ) ;
428
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
429
+ await this . page . keyboard . press ( 'KeyA' ) ;
430
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
431
+ await this . page . keyboard . type ( JSON . stringify ( {
432
+ sub : 'test'
433
+ } , null , 2 ) , {
434
+ delay : 5
435
+ } ) ;
436
+
437
+ const newToken = await this . page . evaluate ( ( ) => {
438
+ return window . test . tokenEditor . getValue ( ) ;
439
+ } ) ;
440
+
441
+ expect ( newToken ) . to . not . be . empty ;
442
+ expect ( newToken ) . to . not . equal ( oldToken ) ;
443
+
444
+ const valid = await this . page . $eval ( '.validation-status' ,
445
+ status => {
446
+ return status . classList . contains ( 'valid-token' ) &&
447
+ status . textContent . indexOf ( 'verified' ) !== - 1 ;
448
+ } ) ;
426
449
427
- expect ( newToken ) . to . not . equal ( oldToken ) ;
428
-
429
- const valid = await this . page . $eval ( '.validation-status' , status => {
430
- return status . classList . contains ( 'valid-token' ) &&
431
- status . textContent . indexOf ( 'verified' ) !== - 1 ;
450
+ expect ( valid ) . to . be . true ;
432
451
} ) ;
433
-
434
- expect ( valid ) . to . be . true ;
435
- } ) ;
436
- }
452
+ }
453
+ } ) ;
437
454
} ) ;
438
455
439
456
describe ( 'Should download public-keys when possible' , function ( ) {
@@ -450,7 +467,9 @@ describe('Editor', function() {
450
467
} ) ;
451
468
452
469
it ( 'Clears the token when the header is edited and there ' +
453
- 'is no private key' , async function ( ) {
470
+ 'is no private key' , async function ( ) {
471
+ await this . page . select ( '#algorithm-select' , 'RS256' ) ;
472
+
454
473
const secretInput = await this . page . $ ( 'textarea[name="private-key"]' ) ;
455
474
await secretInput . click ( ) ;
456
475
await this . page . keyboard . down ( 'ControlLeft' ) ;
@@ -481,33 +500,37 @@ describe('Editor', function() {
481
500
482
501
it ( 'Clears the token when the payload is edited and there ' +
483
502
'is no private key' , async function ( ) {
484
- const secretInput = await this . page . $ ( 'textarea[name="private-key"]' ) ;
485
- await secretInput . click ( ) ;
486
- await this . page . keyboard . down ( 'ControlLeft' ) ;
487
- await this . page . keyboard . press ( 'KeyA' ) ;
488
- await this . page . keyboard . up ( 'ControlLeft' ) ;
489
- await this . page . keyboard . press ( 'Delete' ) ;
490
-
491
- await this . page . click ( '.js-payload' ) ;
492
- await this . page . keyboard . down ( 'ControlLeft' ) ;
493
- await this . page . keyboard . press ( 'KeyA' ) ;
494
- await this . page . keyboard . up ( 'ControlLeft' ) ;
495
-
496
- const payload = {
497
- sub : 'test'
498
- } ;
499
- await this . page . keyboard . type ( JSON . stringify ( payload , null , 2 ) , {
500
- delay : 5
501
- } ) ;
502
-
503
- const token = await this . page . evaluate ( ( ) => {
504
- return window . test . tokenEditor . getValue ( ) ;
505
- } ) ;
506
-
507
- expect ( token ) . to . be . empty ;
503
+ await this . page . select ( '#algorithm-select' , 'RS256' ) ;
504
+
505
+ const secretInput = await this . page . $ ( 'textarea[name="private-key"]' ) ;
506
+ await secretInput . click ( ) ;
507
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
508
+ await this . page . keyboard . press ( 'KeyA' ) ;
509
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
510
+ await this . page . keyboard . press ( 'Delete' ) ;
511
+
512
+ await this . page . click ( '.js-payload' ) ;
513
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
514
+ await this . page . keyboard . press ( 'KeyA' ) ;
515
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
516
+
517
+ const payload = {
518
+ sub : 'test'
519
+ } ;
520
+ await this . page . keyboard . type ( JSON . stringify ( payload , null , 2 ) , {
521
+ delay : 5
522
+ } ) ;
523
+
524
+ const token = await this . page . evaluate ( ( ) => {
525
+ return window . test . tokenEditor . getValue ( ) ;
526
+ } ) ;
527
+
528
+ expect ( token ) . to . be . empty ;
508
529
} ) ;
509
530
510
531
it ( 'Marks token as invalid when there is no public key' , async function ( ) {
532
+ this . timeout ( 20000 ) ;
533
+
511
534
await this . page . select ( '#algorithm-select' , 'RS256' ) ;
512
535
513
536
await this . page . click ( '.js-input' ) ;
@@ -588,8 +611,91 @@ describe('Editor', function() {
588
611
expect ( invalid ) . to . be . true ;
589
612
} ) ;
590
613
591
- it ( 'Marks token as valid when the public key is OK and private key is wrong' ) ;
592
- it ( 'Marks token as valid when the public key is OK and private key is missing' ) ;
614
+ it ( 'Marks token as valid when the public key is OK and private ' +
615
+ 'key is wrong' , async function ( ) {
616
+ this . timeout ( 30000 ) ;
617
+
618
+ await this . page . select ( '#algorithm-select' , 'RS256' ) ;
619
+
620
+ const secretInput = await this . page . $ ( 'textarea[name="public-key"]' ) ;
621
+ await secretInput . click ( ) ;
622
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
623
+ await this . page . keyboard . press ( 'KeyA' ) ;
624
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
625
+ await secretInput . type ( defaultTokens [ 'rs256' ] . publicKey , {
626
+ delay : 5
627
+ } ) ;
628
+
629
+ const privateKeyInput = await this . page . $ ( 'textarea[name="private-key"]' ) ;
630
+ await privateKeyInput . click ( ) ;
631
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
632
+ await this . page . keyboard . press ( 'KeyA' ) ;
633
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
634
+
635
+ const head = defaultTokens [ 'rs256' ] . privateKey . slice ( 0 , 20 ) ;
636
+ const tail = defaultTokens [ 'rs256' ] . privateKey . slice ( 20 ) ;
637
+
638
+ await privateKeyInput . type ( `${ head } sadfasdf${ tail } ` , {
639
+ delay : 5
640
+ } ) ;
641
+
642
+ await this . page . click ( '.js-input' ) ;
643
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
644
+ await this . page . keyboard . press ( 'KeyA' ) ;
645
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
646
+ await this . page . keyboard . type ( defaultTokens [ 'rs256' ] . token , {
647
+ delay : 5
648
+ } ) ;
649
+
650
+ await this . page . waitFor ( 1000 ) ;
651
+
652
+ const valid = await this . page . $eval ( '.validation-status' , status => {
653
+ return status . classList . contains ( 'valid-token' ) &&
654
+ status . textContent . indexOf ( 'verified' ) !== - 1 ;
655
+ } ) ;
656
+
657
+ expect ( valid ) . to . be . true ;
658
+ } ) ;
659
+
660
+ it ( 'Marks token as valid when the public key is OK and private ' +
661
+ 'key is missing' , async function ( ) {
662
+ this . timeout ( 30000 ) ;
663
+
664
+ await this . page . select ( '#algorithm-select' , 'RS256' ) ;
665
+
666
+ const secretInput = await this . page . $ ( 'textarea[name="public-key"]' ) ;
667
+ await secretInput . click ( ) ;
668
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
669
+ await this . page . keyboard . press ( 'KeyA' ) ;
670
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
671
+ await secretInput . type ( tokens [ 'rs256' ] . publicKey , {
672
+ delay : 5
673
+ } ) ;
674
+
675
+ const privateKeyInput = await this . page . $ ( 'textarea[name="private-key"]' ) ;
676
+ await privateKeyInput . click ( ) ;
677
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
678
+ await this . page . keyboard . press ( 'KeyA' ) ;
679
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
680
+ await this . page . keyboard . press ( 'Delete' ) ;
681
+
682
+ await this . page . click ( '.js-input' ) ;
683
+ await this . page . keyboard . down ( 'ControlLeft' ) ;
684
+ await this . page . keyboard . press ( 'KeyA' ) ;
685
+ await this . page . keyboard . up ( 'ControlLeft' ) ;
686
+ await this . page . keyboard . type ( tokens [ 'rs256' ] . token , {
687
+ delay : 5
688
+ } ) ;
689
+
690
+ await this . page . waitFor ( 1000 ) ;
691
+
692
+ const valid = await this . page . $eval ( '.validation-status' , status => {
693
+ return status . classList . contains ( 'valid-token' ) &&
694
+ status . textContent . indexOf ( 'verified' ) !== - 1 ;
695
+ } ) ;
696
+
697
+ expect ( valid ) . to . be . true ;
698
+ } ) ;
593
699
} ) ;
594
700
595
701
it ( 'Updates the header when the token algorithm ' +
@@ -614,6 +720,8 @@ describe('Editor', function() {
614
720
} ) ;
615
721
616
722
it ( 'Marks token as invalid when "alg" is "none"' , async function ( ) {
723
+ this . timeout ( 20000 ) ;
724
+
617
725
await this . page . click ( '.js-input' ) ;
618
726
await this . page . keyboard . down ( 'ControlLeft' ) ;
619
727
await this . page . keyboard . press ( 'KeyA' ) ;
0 commit comments