use agent_pay::{
did_key_from_public_key, generate_key_pair, public_key_from_did_key, verification_method_id,
};
#[test]
fn generate_key_pair_returns_32_byte_secret_and_public() {
let kp = generate_key_pair();
assert_eq!(kp.private_key.len(), 32);
assert_eq!(kp.public_key.len(), 32);
}
#[test]
fn did_key_roundtrips_an_ed25519_public_key() {
let kp = generate_key_pair();
let did = did_key_from_public_key(&kp.public_key).unwrap();
assert!(did.starts_with("did:key:z"));
let back = public_key_from_did_key(&did).unwrap();
assert_eq!(back, kp.public_key);
}
#[test]
fn public_key_from_did_key_rejects_non_did_key() {
assert!(public_key_from_did_key("did:web:example.com").is_err());
}
#[test]
fn verification_method_id_for_did_key_uses_multibase_as_fragment() {
let did = "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH";
assert_eq!(
verification_method_id(did).unwrap(),
format!("{did}#z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH"),
);
}