| 69 | |
| 70 | #[test] |
| 71 | fn test_for_user() { |
| 72 | let secrect = &"verysecret"; |
| 73 | let other_secret = &"notsosecret"; |
| 74 | let user_id = Uuid::new_v4(); |
| 75 | let key_id = Uuid::new_v4(); |
| 76 | |
| 77 | let nbf: DateTime<Utc> = Utc::now(); |
| 78 | let exp = nbf.add(-Duration::try_days(1).unwrap()); |
| 79 | |
| 80 | let claim = AuthClaim::new_for_api_key(&key_id); |
| 81 | assert_eq!("key", claim.typ); |
| 82 | assert_eq!(key_id.to_string(), claim.sub); |
| 83 | |
| 84 | let token = claim.encode(secrect.as_ref()).unwrap(); |
| 85 | let decoded = AuthClaim::decode(&token, secrect.as_ref()).unwrap(); |
| 86 | assert_eq!(claim, decoded); |
| 87 | |
| 88 | // user token |
| 89 | let mut claim = AuthClaim::new_for_user(&user_id); |
| 90 | assert_eq!("user", claim.typ); |
| 91 | assert_eq!(user_id.to_string(), claim.sub); |
| 92 | |
| 93 | let token = claim.encode(secrect.as_ref()).unwrap(); |
| 94 | let decoded = AuthClaim::decode(&token, secrect.as_ref()).unwrap(); |
| 95 | assert_eq!(claim, decoded); |
| 96 | |
| 97 | // different key |
| 98 | assert!(AuthClaim::decode(&token, other_secret.as_ref()).is_err()); |
| 99 | |
| 100 | // expired |
| 101 | claim.exp = Some(exp.timestamp() as usize); |
| 102 | let token = claim.encode(secrect.as_ref()).unwrap(); |
| 103 | assert!(AuthClaim::decode(&token, secrect.as_ref()).is_err()); |
| 104 | } |
| 105 | } |