Skip to content

Commit 179c6e0

Browse files
committed
add tests
1 parent b70a420 commit 179c6e0

4 files changed

+91
-22
lines changed

tests/main_test.rs

+71-22
Original file line numberDiff line numberDiff line change
@@ -381,26 +381,6 @@ mod tests {
381381
assert!(result.is_ok());
382382
}
383383

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-
404384
#[test]
405385
fn decodes_a_token_as_json() {
406386
let matches = App::command()
@@ -505,6 +485,37 @@ mod tests {
505485
assert!(result.is_ok());
506486
}
507487

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+
508519
#[test]
509520
fn encodes_and_decodes_an_rsa_ssa_pkcs1_v1_5_token_using_key_from_file() {
510521
let body: String = "{\"field\":\"value\"}".to_string();
@@ -657,7 +668,7 @@ mod tests {
657668
"jwt",
658669
"decode",
659670
"-S",
660-
"@./tests/pub_rsa_jwks.json",
671+
"@./tests/public_rsa_jwks.json",
661672
"-A",
662673
"RS256",
663674
&encoded_token,
@@ -799,7 +810,7 @@ mod tests {
799810
"jwt",
800811
"decode",
801812
"-S",
802-
"@./tests/pub_ecdsa_jwks.json",
813+
"@./tests/public_ecdsa_jwks.json",
803814
"-A",
804815
"ES256",
805816
&encoded_token,
@@ -893,6 +904,44 @@ mod tests {
893904
assert!(result.is_ok());
894905
}
895906

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+
896945
#[test]
897946
fn shows_timestamps_as_dates() {
898947
let exp = (Utc::now() + Duration::minutes(60)).timestamp();
File renamed without changes.

tests/public_eddsa_jwks.json

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"keys": [
3+
{
4+
"kty": "OKP",
5+
"use": "sig",
6+
"alg": "EdDSA",
7+
"kid": "4h7wt2IHHu_RLR6OtlZjCe_mIt8xAReS0cDEwwWAeKU",
8+
"crv": "Ed25519",
9+
"x": "BzKf6VPTrsj8oqur2gHMkpRCl2DHxe04q0A8lV_QP-A"
10+
},
11+
{
12+
"kty": "OKP",
13+
"use": "enc",
14+
"alg": "EdDSA",
15+
"kid": "4h7wt2IHHu_RLR6OtlZjCe_mIt8xAReS0cDEwwWAeKU",
16+
"crv": "Ed25519",
17+
"x": "BzKf6VPTrsj8oqur2gHMkpRCl2DHxe04q0A8lV_QP-A"
18+
}
19+
]
20+
}
File renamed without changes.

0 commit comments

Comments
 (0)