Add tests for JWT decoding
This commit is contained in:
@@ -11,14 +11,19 @@ pub struct Token<'a> {
|
|||||||
pub token: &'a str,
|
pub token: &'a str,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize)]
|
#[derive(Debug, Deserialize, Serialize)]
|
||||||
pub struct Claims {
|
pub struct Claims {
|
||||||
pub sub: String,
|
pub sub: String,
|
||||||
pub exp: i64,
|
pub exp: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn secret_key() -> String {
|
pub fn secret_key() -> String {
|
||||||
|
if cfg!(test) {
|
||||||
|
String::from("test_key")
|
||||||
|
} else {
|
||||||
|
println!("USING REAL KEY");
|
||||||
dotenv::var("SECRET_KEY").expect("SECRET_KEY env not set!")
|
dotenv::var("SECRET_KEY").expect("SECRET_KEY env not set!")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromStr for Claims {
|
impl FromStr for Claims {
|
||||||
@@ -85,3 +90,39 @@ pub struct CreateAccountRequest {
|
|||||||
pub struct AddFavoriteRequest {
|
pub struct AddFavoriteRequest {
|
||||||
pub path: String,
|
pub path: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::Claims;
|
||||||
|
use jsonwebtoken::errors::ErrorKind;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_token_from_claims() {
|
||||||
|
let claims = Claims {
|
||||||
|
exp: 16136164790, // 2481-ish
|
||||||
|
sub: String::from("9"),
|
||||||
|
};
|
||||||
|
|
||||||
|
let c = Claims::from_str(
|
||||||
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5IiwiZXhwIjoxNjEzNjE2NDc5MH0.9wwK4l8vhvq55YoueEljMbN_5uVTaAsGLLRPr0AuymE")
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
assert_eq!(claims.sub, c.sub);
|
||||||
|
assert_eq!(claims.exp, c.exp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_expired_token() {
|
||||||
|
let err = Claims::from_str(
|
||||||
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5IiwiZXhwIjoxNn0.eZnfaNfiD54VMbphIqeBICeG9SzAtwNXntLwtTBihjY");
|
||||||
|
|
||||||
|
match err.unwrap_err().into_kind() {
|
||||||
|
ErrorKind::ExpiredSignature => assert!(true),
|
||||||
|
kind => {
|
||||||
|
println!("Unexpected error: {:?}", kind);
|
||||||
|
assert!(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user