web_toolkit/
lib.rs

1pub mod encrypt;
2pub use encrypt::{hasher,jwt};
3
4#[cfg(test)]
5mod tests {
6    use std::collections::HashSet;
7
8    use jwt_simple::prelude::Duration;
9
10    use crate::jwt::{SignOptions, VerifyOptions};
11
12    use super::*;
13
14    #[test]
15    fn jwt_test_num_aud() {
16        jwt::generate_key_pair_if_absent().unwrap();
17        let keys = jwt::get_keys_as_str().unwrap();
18        let token = jwt::sign::<u64>(keys.0.as_str(), SignOptions {
19            expiry: Some(Duration::from_secs(5)),
20            issuer: Some("cbd.ab"),
21            audience: Some(25u64)
22        }).unwrap();
23        let mut hs = HashSet::new();
24        hs.insert(String::from("abc.com"));
25        hs.insert(String::from("cbd.ab"));
26        let mut auds = HashSet::new();
27        auds.insert(String::from("2"));
28        auds.insert(String::from("35"));
29        let aud = jwt::verify::<u64>(token.as_str(), keys.1.as_str(), VerifyOptions{valid_after_expiry:Some(Duration::from_secs(2)), valid_audiences:Some(auds), valid_issuers: Some(hs)});
30        match aud {
31            Ok(audience) => {
32                assert_eq!(audience, 25u64);
33            },
34            Err(e) => {
35                println!("{:?}", e);
36            }
37        }
38    }
39
40    #[test]
41    fn hashandverify() {
42        let pass = "testpassword";
43        let hashed = hasher::hash(pass).unwrap();
44        let verified = hasher::verify(pass, hashed.as_str()).unwrap();
45        assert_eq!(true, verified);
46    }
47}