use agent_ask::{
did_from_pubkey, from_base64, generate_keypair, pubkey_from_did, sign, to_base64, verify_sig,
};
#[test]
fn keypair_shapes() {
let kp = generate_keypair();
assert_eq!(kp.private_key.len(), 32);
assert_eq!(kp.public_key.len(), 32);
assert!(kp.did.starts_with("did:key:z"));
}
#[test]
fn did_key_roundtrip() {
let kp = generate_keypair();
let recovered = pubkey_from_did(&kp.did).unwrap();
assert_eq!(recovered, kp.public_key);
}
#[test]
fn sign_verify_roundtrip() {
let kp = generate_keypair();
let msg = b"hello";
let sig = sign(msg, &kp.private_key);
assert_eq!(sig.len(), 64);
assert!(verify_sig(&sig, msg, &kp.public_key));
}
#[test]
fn verify_rejects_mutated() {
let kp = generate_keypair();
let sig = sign(b"hello", &kp.private_key);
assert!(!verify_sig(&sig, b"hellp", &kp.public_key));
}
#[test]
fn base64_roundtrip() {
let original = vec![0u8, 1, 2, 255, 128, 64];
let s = to_base64(&original);
assert_eq!(from_base64(&s).unwrap(), original);
}
#[test]
fn pubkey_from_did_rejects_wrong_codec() {
assert!(pubkey_from_did("did:key:zQ3sh").is_err());
}
#[test]
fn did_from_pubkey_deterministic() {
let pk = vec![7u8; 32];
assert_eq!(
did_from_pubkey(&pk).unwrap(),
did_from_pubkey(&pk).unwrap()
);
}