use agent_phone::did::{decode_did_key, ed25519_priv_to_x25519, ed25519_pub_to_x25519};
use agent_phone::noise::x25519_public_from_private;
use agent_phone::{encode_did_key, generate_key_pair};
#[test]
fn encode_decode_did_key_roundtrip() {
let kp = generate_key_pair();
let did = encode_did_key(&kp.public_key).unwrap();
assert!(did.starts_with("did:key:z"));
let decoded = decode_did_key(&did).unwrap();
assert_eq!(decoded, kp.public_key);
}
#[test]
fn decode_did_key_rejects_bad_multicodec() {
let did = "did:key:zQ3shokFTS3brHcDQrn82RUDfCZESWL1ZdCEJwekUDPQiYBme";
assert!(decode_did_key(did).is_err());
}
#[test]
fn decode_did_key_rejects_truncated() {
assert!(decode_did_key("did:key:zR2").is_err());
}
#[test]
fn ed25519_to_x25519_conversion_is_consistent() {
let kp = generate_key_pair();
let x_priv = ed25519_priv_to_x25519(&kp.private_key);
let x_pub = ed25519_pub_to_x25519(&kp.public_key);
assert_eq!(x25519_public_from_private(&x_priv), x_pub);
}