use crate::signer_jwt::{self, SignerJWT};
use crate::signer_message::SignerMessage;
use crate::signer_user::SignerUser;
use super::signer_fs_store;
#[test]
fn test_create_signer_user() -> anyhow::Result<()> {
let sfs =
signer_fs_store::SignerFsStore::new(String::from("./test_root/users"));
let u = SignerUser::generete("test")?;
sfs.save_signer_user(&u)?;
let list = sfs.list_signer_user()?;
assert!(list.len() > 0);
let u2 = sfs.load_signer_user(&u.public.pub_key)?;
assert_eq!(u.prv_key, u2.prv_key);
sfs.drop_signer_user(&u2)?;
Ok(())
}
#[test]
fn test_create_signature() -> anyhow::Result<()> {
let u = SignerUser::generete("test")?;
let ud_sig = u.public.create_signature(&u)?;
u.public.verify_signature(&ud_sig)?;
Ok(())
}
#[test]
fn test_signer_jwt() -> anyhow::Result<()> {
let u = SignerUser::generete("tester")?;
let jwt = SignerJWT::new(
signer_jwt::SignerJWTHeader::default(&u),
signer_jwt::SignerJWTClaims::default(
format!("http://aud.com"),
format!("1001"),
),
);
let jwt_string = jwt.encode(&u)?;
println!("JWT_STRING :: {}", jwt_string);
let decode = SignerJWT::decode(&jwt_string)?;
assert_eq!(jwt.claims.jti, decode.claims.jti);
let invalid_jwt = jwt_string + "INVALID";
let invalid = SignerJWT::decode_unverify(&invalid_jwt)?;
assert_eq!(jwt.claims.jti, invalid.claims.jti);
matches!(SignerJWT::decode(&invalid_jwt), Err(_));
Ok(())
}
#[test]
fn test_signer_message() -> anyhow::Result<()> {
let alice = SignerUser::generete("alice")?;
let bob = SignerUser::generete("bob")?;
let wisper = b"i love u";
let message = SignerMessage::create(&alice, &bob.public.pub_key, wisper)?;
let decrypt = message.decrypt(&bob)?;
assert_eq!(wisper.to_vec(), decrypt);
println!("alice says: {}", std::str::from_utf8(&decrypt)?);
Ok(())
}