@@ -381,26 +381,6 @@ mod tests {
381
381
assert ! ( result. is_ok( ) ) ;
382
382
}
383
383
384
- #[ test]
385
- fn decodes_a_token_2 ( ) {
386
- let matches = App :: command ( )
387
- . try_get_matches_from ( vec ! [
388
- "jwt" ,
389
- "decode" ,
390
- "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkRGbzcxemxOdV9vLTkxOFJIN0lIVyJ9.eyJodHRwczovL3d3dy5qaGlwc3Rlci50ZWNoL3JvbGVzIjpbIkFkbWluaXN0cmF0b3IiLCJST0xFX0FETUlOIiwiUk9MRV9VU0VSIl0sImlzcyI6Imh0dHBzOi8vZGV2LTA2YnpzMWN1LnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw2MWJjYmM3NmY2NGQ0YTAwNzJhZjhhMWQiLCJhdWQiOlsiaHR0cHM6Ly9kZXYtMDZienMxY3UudXMuYXV0aDAuY29tL2FwaS92Mi8iLCJodHRwczovL2Rldi0wNmJ6czFjdS51cy5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNzA1MDAyMDQxLCJleHAiOjE3MDUwODg0NDEsImF6cCI6IjFmbTdJMUdHRXRNZlRabW5vdFV1azVVT3gyWm10NnR0Iiwic2NvcGUiOiJvcGVuaWQifQ.eWdbVEolnmqqyx_Z5rR-09H3kg06EaokYoAAdrqLmB6FHwZbbyZrPaHImmEnY8BSRM42FpE9NZehqVAeQ5VQhOVdMMklCQSA5h13oQbKn6ciuc9Etyq2jg4sk2lOEkSmw4e_hWUGjkXnzP_J84o9-2qpN7VKNTGEvtk3mdQYXxwoeD8RvQjYJq6LsKIKA0biEyGWZxIpK1LCAFH1dmo5ZMpTeNGIwnUBdOxkL4jbKe26e9t7TDO0EtFjXmq-C218bbr1AgFN2eyj6n-3kNy9XfRcnfIlyXWJ0ZvcDVa9UoaTGP9Wdo0Ze3q2IrcgYrP7zTeZia5O2tejkaNknKNnwA" ,
391
- // "-S",
392
- // "1234567890",
393
- // "-A",
394
- // "HS256",
395
- ] )
396
- . unwrap ( ) ;
397
- let decode_matches = matches. subcommand_matches ( "decode" ) . unwrap ( ) ;
398
- let decode_arguments = DecodeArgs :: from_arg_matches ( decode_matches) . unwrap ( ) ;
399
- let ( result, _, _) = decode_token ( & decode_arguments) ;
400
-
401
- assert ! ( result. is_ok( ) ) ;
402
- }
403
-
404
384
#[ test]
405
385
fn decodes_a_token_as_json ( ) {
406
386
let matches = App :: command ( )
@@ -505,6 +485,37 @@ mod tests {
505
485
assert ! ( result. is_ok( ) ) ;
506
486
}
507
487
488
+ #[ test]
489
+ fn encodes_and_decodes_an_hmac_token_using_jwks ( ) {
490
+ let jwks = r#"{"kty":"oct","k":"Fdh9u8rINxfivbrianbbVT1u232VQBZYKx1HGAGPt2I"}"# ;
491
+ let body: String = "{\" field\" :\" value\" }" . to_string ( ) ;
492
+ let encode_matcher = App :: command ( )
493
+ . try_get_matches_from ( vec ! [
494
+ "jwt" , "encode" , "-A" , "HS256" , "--exp" , "-S" , jwks, & body,
495
+ ] )
496
+ . unwrap ( ) ;
497
+ let encode_matches = encode_matcher. subcommand_matches ( "encode" ) . unwrap ( ) ;
498
+ let encode_arguments = EncodeArgs :: from_arg_matches ( encode_matches) . unwrap ( ) ;
499
+ let encoded_token = encode_token ( & encode_arguments) . unwrap ( ) ;
500
+ let decode_matcher = App :: command ( )
501
+ . try_get_matches_from ( vec ! [
502
+ "jwt" ,
503
+ "decode" ,
504
+ "-S" ,
505
+ jwks,
506
+ "-A" ,
507
+ "HS256" ,
508
+ "--ignore-exp" ,
509
+ & encoded_token,
510
+ ] )
511
+ . unwrap ( ) ;
512
+ let decode_matches = decode_matcher. subcommand_matches ( "decode" ) . unwrap ( ) ;
513
+ let decode_arguments = DecodeArgs :: from_arg_matches ( decode_matches) . unwrap ( ) ;
514
+ let ( result, _, _) = decode_token ( & decode_arguments) ;
515
+
516
+ assert ! ( result. is_ok( ) ) ;
517
+ }
518
+
508
519
#[ test]
509
520
fn encodes_and_decodes_an_rsa_ssa_pkcs1_v1_5_token_using_key_from_file ( ) {
510
521
let body: String = "{\" field\" :\" value\" }" . to_string ( ) ;
@@ -657,7 +668,7 @@ mod tests {
657
668
"jwt" ,
658
669
"decode" ,
659
670
"-S" ,
660
- "@./tests/pub_rsa_jwks .json" ,
671
+ "@./tests/public_rsa_jwks .json" ,
661
672
"-A" ,
662
673
"RS256" ,
663
674
& encoded_token,
@@ -799,7 +810,7 @@ mod tests {
799
810
"jwt" ,
800
811
"decode" ,
801
812
"-S" ,
802
- "@./tests/pub_ecdsa_jwks .json" ,
813
+ "@./tests/public_ecdsa_jwks .json" ,
803
814
"-A" ,
804
815
"ES256" ,
805
816
& encoded_token,
@@ -893,6 +904,44 @@ mod tests {
893
904
assert ! ( result. is_ok( ) ) ;
894
905
}
895
906
907
+ #[ test]
908
+ fn encodes_and_decodes_an_eddsa_token_using_jwks_from_file ( ) {
909
+ let body: String = "{\" field\" :\" value\" }" . to_string ( ) ;
910
+ let encode_matcher = App :: command ( )
911
+ . try_get_matches_from ( vec ! [
912
+ "jwt" ,
913
+ "encode" ,
914
+ "-A" ,
915
+ "EDDSA" ,
916
+ "--kid" ,
917
+ "4h7wt2IHHu_RLR6OtlZjCe_mIt8xAReS0cDEwwWAeKU" ,
918
+ "--exp" ,
919
+ "-S" ,
920
+ "@./tests/private_eddsa_key.pem" ,
921
+ & body,
922
+ ] )
923
+ . unwrap ( ) ;
924
+ let encode_matches = encode_matcher. subcommand_matches ( "encode" ) . unwrap ( ) ;
925
+ let encode_arguments = EncodeArgs :: from_arg_matches ( encode_matches) . unwrap ( ) ;
926
+ let encoded_token = encode_token ( & encode_arguments) . unwrap ( ) ;
927
+ let decode_matcher = App :: command ( )
928
+ . try_get_matches_from ( vec ! [
929
+ "jwt" ,
930
+ "decode" ,
931
+ "-S" ,
932
+ "@./tests/public_eddsa_jwks.json" ,
933
+ "-A" ,
934
+ "EDDSA" ,
935
+ & encoded_token,
936
+ ] )
937
+ . unwrap ( ) ;
938
+ let decode_matches = decode_matcher. subcommand_matches ( "decode" ) . unwrap ( ) ;
939
+ let decode_arguments = DecodeArgs :: from_arg_matches ( decode_matches) . unwrap ( ) ;
940
+ let ( result, _, _) = decode_token ( & decode_arguments) ;
941
+
942
+ assert_eq ! ( result. err( ) , None ) ;
943
+ }
944
+
896
945
#[ test]
897
946
fn shows_timestamps_as_dates ( ) {
898
947
let exp = ( Utc :: now ( ) + Duration :: minutes ( 60 ) ) . timestamp ( ) ;
0 commit comments