Skip to content

Commit 315d7f9

Browse files
committed
fix: implement RevokeSession functionality in devnet smoke test
1 parent b61e94a commit 315d7f9

2 files changed

Lines changed: 81 additions & 3 deletions

File tree

.claude/settings.local.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"permissions": {
3+
"allow": [
4+
"Bash(cargo build-sbf:*)",
5+
"Bash(npm --version)",
6+
"Bash(node generate.mjs)",
7+
"Bash(npx tsc:*)",
8+
"Bash(npm run:*)",
9+
"Bash(npm install:*)",
10+
"Bash(curl -s http://127.0.0.1:8899 -X POST -H \"Content-Type: application/json\" -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"getHealth\"}')",
11+
"Bash(solana-test-validator --bpf-program FLb7fyAtkfA4TSa2uYcAT8QKHd2pkoMHgmqfnXFXo7ao target/deploy/lazorkit_program.so --reset)",
12+
"Bash(npx vitest:*)",
13+
"Bash(node -e ':*)",
14+
"Bash(git commit -m ':*)",
15+
"Bash(git add:*)",
16+
"Bash(npx tsx:*)",
17+
"Bash(git status:*)",
18+
"Bash(rm -f /Users/mac/Documents/LazorKit/wallet-management-contract/.git/index.lock)",
19+
"Bash(git -C /Users/mac/Documents/LazorKit/wallet-management-contract commit -m ':*)",
20+
"Bash(git -C /Users/mac/Documents/LazorKit/wallet-management-contract push origin feat/odometer-replay-fix-and-sdk)",
21+
"Bash(git -C /Users/mac/Documents/LazorKit/wallet-management-contract diff --stat)",
22+
"Bash(rm -f .git/index.lock)",
23+
"Bash(grep -n \"fn sign_v2_instruction\" /Users/mac/Documents/LazorKit/wallet-management-contract/swig-wallet/rust-sdk/src/*.rs)",
24+
"Bash(cargo test:*)",
25+
"Bash(pkill -f solana-test-validator)",
26+
"Bash(solana-test-validator --bpf-program FLb7fyAtkfA4TSa2uYcAT8QKHd2pkoMHgmqfnXFXo7ao ../target/deploy/lazorkit_program.so --reset)",
27+
"Bash(solana balance:*)",
28+
"Bash(solana program:*)",
29+
"Bash(ls /Users/mac/Documents/LazorKit/wallet-management-contract/program/target/deploy/*.so)",
30+
"Bash(gh pr:*)",
31+
"Bash(git checkout:*)",
32+
"WebFetch(domain:github.com)",
33+
"WebFetch(domain:rareskills.io)",
34+
"WebSearch",
35+
"Read(//private/tmp/idl-upload/**)",
36+
"Bash(npx @solana-program/program-metadata write idl FLb7fyAtkfA4TSa2uYcAT8QKHd2pkoMHgmqfnXFXo7ao --keypair /Users/mac/.config/solana/id.json --url https://api.devnet.solana.com)",
37+
"Bash(npx @solana-program/program-metadata write --help)",
38+
"Bash(npx @solana-program/program-metadata write idl FLb7fyAtkfA4TSa2uYcAT8QKHd2pkoMHgmqfnXFXo7ao /Users/mac/Documents/LazorKit/wallet-management-contract/program/idl.json -k /Users/mac/.config/solana/id.json --rpc https://api.devnet.solana.com)",
39+
"Bash(npx @solana-program/program-metadata fetch idl FLb7fyAtkfA4TSa2uYcAT8QKHd2pkoMHgmqfnXFXo7ao --rpc https://api.devnet.solana.com)",
40+
"Bash(python3 -c ':*)",
41+
"Bash(grep -r \"authorize\\\\|executeDeferredFromPayload\\\\|reclaimDeferred\" /Users/mac/Documents/LazorKit/wallet-management-contract/tests-sdk/tests/*.ts)"
42+
]
43+
}
44+
}

tests-sdk/tests/devnet-smoke.ts

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,41 @@ async function main() {
391391
}
392392

393393
// ────────────────────────────────────────────────────────────
394-
// 7. DEFERRED EXECUTION (Authorize + ExecuteDeferred)
394+
// 7. REVOKE SESSION
395+
// ────────────────────────────────────────────────────────────
396+
console.log('\n--- RevokeSession ---');
397+
398+
// Ed25519 owner revokes Ed25519 session
399+
{
400+
const balBefore = await connection.getBalance(payer.publicKey);
401+
const { instructions } = await client.revokeSession({
402+
payer: payer.publicKey, walletPda: ed25519WalletPda,
403+
adminSigner: ed25519(ed25519OwnerKp.publicKey, ed25519OwnerAuthPda),
404+
sessionPda: ed25519SessionPda,
405+
});
406+
const r = await sendAndMeasure(connection, payer, instructions, [ed25519OwnerKp]);
407+
const balAfter = await connection.getBalance(payer.publicKey);
408+
r.rentCost = balBefore - balAfter - 10000; // 2 signers = 10000 fee
409+
record('RevokeSession (Ed25519 owner, Ed25519 wallet)', r);
410+
}
411+
412+
// Secp256r1 owner revokes Secp256r1 session
413+
{
414+
const ownerSigner = createMockSigner(secpOwnerKey);
415+
const balBefore = await connection.getBalance(payer.publicKey);
416+
const { instructions } = await client.revokeSession({
417+
payer: payer.publicKey, walletPda: secpWalletPda,
418+
adminSigner: secp256r1(ownerSigner, { authorityPda: secpOwnerAuthPda }),
419+
sessionPda: secpSessionPda,
420+
});
421+
const r = await sendAndMeasure(connection, payer, instructions);
422+
const balAfter = await connection.getBalance(payer.publicKey);
423+
r.rentCost = balBefore - balAfter - 5000;
424+
record('RevokeSession (Secp256r1 owner, Secp256r1 wallet)', r);
425+
}
426+
427+
// ────────────────────────────────────────────────────────────
428+
// 8. DEFERRED EXECUTION (Authorize + ExecuteDeferred)
395429
// ────────────────────────────────────────────────────────────
396430
console.log('\n--- Deferred Execution ---');
397431

@@ -424,7 +458,7 @@ async function main() {
424458
}
425459

426460
// ────────────────────────────────────────────────────────────
427-
// 8. REMOVE AUTHORITY
461+
// 9. REMOVE AUTHORITY
428462
// ────────────────────────────────────────────────────────────
429463
console.log('\n--- RemoveAuthority ---');
430464

@@ -458,7 +492,7 @@ async function main() {
458492
}
459493

460494
// ────────────────────────────────────────────────────────────
461-
// 9. TRANSFER OWNERSHIP
495+
// 10. TRANSFER OWNERSHIP
462496
// ────────────────────────────────────────────────────────────
463497
console.log('\n--- TransferOwnership ---');
464498

0 commit comments

Comments
 (0)