Add more test to validate JWTs
This commit is contained in:
		@@ -83,18 +83,58 @@ mod test {
 | 
				
			|||||||
        exp: u64,
 | 
					        exp: u64,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    impl Default for Claims {
 | 
				
			||||||
 | 
					        fn default() -> Self {
 | 
				
			||||||
 | 
					            Self {
 | 
				
			||||||
 | 
					                sub: "my-sub".to_string(),
 | 
				
			||||||
 | 
					                exp: time() + 100,
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn jwt_encode_sign_verify_valid() {
 | 
					    fn jwt_encode_sign_verify_valid() {
 | 
				
			||||||
        let (pub_key, priv_key) = generate_key_pair().unwrap();
 | 
					        let (pub_key, priv_key) = generate_key_pair().unwrap();
 | 
				
			||||||
        let claims = Claims {
 | 
					        let claims = Claims::default();
 | 
				
			||||||
            sub: "my-sub".to_string(),
 | 
					 | 
				
			||||||
            exp: time() + 100,
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        let jwt = sign_jwt(&priv_key, &claims).expect("Failed to sign JWT!");
 | 
					        let jwt = sign_jwt(&priv_key, &claims).expect("Failed to sign JWT!");
 | 
				
			||||||
        let claims_out = validate_jwt(&pub_key, &jwt).expect("Failed to validate JWT!");
 | 
					        let claims_out = validate_jwt(&pub_key, &jwt).expect("Failed to validate JWT!");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert_eq!(claims, claims_out)
 | 
					        assert_eq!(claims, claims_out)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO : complete tests
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn jwt_encode_sign_verify_invalid_key() {
 | 
				
			||||||
 | 
					        let (_pub_key, priv_key) = generate_key_pair().unwrap();
 | 
				
			||||||
 | 
					        let (pub_key_2, _priv_key_2) = generate_key_pair().unwrap();
 | 
				
			||||||
 | 
					        let claims = Claims::default();
 | 
				
			||||||
 | 
					        let jwt = sign_jwt(&priv_key, &claims).expect("Failed to sign JWT!");
 | 
				
			||||||
 | 
					        validate_jwt::<Claims>(&pub_key_2, &jwt).expect_err("JWT should not have validated!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn jwt_verify_random_string() {
 | 
				
			||||||
 | 
					        let (pub_key, _priv_key) = generate_key_pair().unwrap();
 | 
				
			||||||
 | 
					        validate_jwt::<Claims>(&pub_key, "random_string")
 | 
				
			||||||
 | 
					            .expect_err("JWT should not have validated!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn jwt_expired() {
 | 
				
			||||||
 | 
					        let (pub_key, priv_key) = generate_key_pair().unwrap();
 | 
				
			||||||
 | 
					        let claims = Claims {
 | 
				
			||||||
 | 
					            exp: time() - 100,
 | 
				
			||||||
 | 
					            ..Default::default()
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        let jwt = sign_jwt(&priv_key, &claims).expect("Failed to sign JWT!");
 | 
				
			||||||
 | 
					        validate_jwt::<Claims>(&pub_key, &jwt).expect_err("JWT should not have validated!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn jwt_invalid_signature() {
 | 
				
			||||||
 | 
					        let (pub_key, priv_key) = generate_key_pair().unwrap();
 | 
				
			||||||
 | 
					        let claims = Claims::default();
 | 
				
			||||||
 | 
					        let jwt = sign_jwt(&priv_key, &claims).expect("Failed to sign JWT!");
 | 
				
			||||||
 | 
					        validate_jwt::<Claims>(&pub_key, &format!("{jwt}bad"))
 | 
				
			||||||
 | 
					            .expect_err("JWT should not have validated!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user