use agent_pay::{issue_token, verify_token};
const SECRET: &[u8] = b"thirty-two-byte-test-secret-pad!";
#[tokio::test]
async fn issue_token_verify_token_roundtrips() {
let tok = issue_token(&"a".repeat(64), "2030-01-01T00:00:00Z", SECRET)
.await
.unwrap();
let payload = verify_token(&tok, SECRET).await.unwrap();
assert_eq!(payload.payment_hash, "a".repeat(64));
assert_eq!(payload.expires_at, "2030-01-01T00:00:00Z");
}
#[tokio::test]
async fn verify_token_rejects_hmac_mismatch() {
let tok = issue_token(&"a".repeat(64), "2030-01-01T00:00:00Z", SECRET)
.await
.unwrap();
let err = verify_token(&tok, b"different-thirty-two-byte-secret")
.await
.unwrap_err();
let msg = format!("{err}").to_lowercase();
assert!(msg.contains("hmac"), "msg={msg}");
}
#[tokio::test]
async fn verify_token_rejects_malformed_token() {
assert!(verify_token("not.a.valid.token", SECRET).await.is_err());
}