From 5ef6976d01f30e79b1fb8f76332108575f3fc77e Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sun, 26 Apr 2026 13:58:49 -0700 Subject: [PATCH] Add clicks to test user activation when signing with wallet. --- test/test.blocks.mjs | 56 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/test/test.blocks.mjs b/test/test.blocks.mjs index 3b0fcb5..db60bac 100644 --- a/test/test.blocks.mjs +++ b/test/test.blocks.mjs @@ -4,7 +4,7 @@ 'use strict' import { Block, Rpc, Wallet } from 'libnemo' -import { assert, isNode, suite, test } from './GLOBALS.mjs' +import { assert, click, isNode, suite, test } from './GLOBALS.mjs' import { CUSTOM_TEST_VECTORS, NANO_TEST_VECTORS } from './VECTORS.mjs' await Promise.all([ @@ -105,37 +105,64 @@ await Promise.all([ await test('sign open block with BLAKE2b wallet', async () => { const wallet = await Wallet.load('BLAKE2b', PASSWORD, BLAKE2B_SEED) await assert.resolves(wallet.unlock(PASSWORD)) - const block = new Block(BLAKE2B_ADDRESS_1, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative) .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance) - await assert.resolves(wallet.sign(1, block)) + + await assert.resolves(async () => { + await click( + 'Sign with BLAKE2b', + async () => wallet.sign(1, block) + ) + }) assert.ok(await block.verify(BLAKE2B_PUBLIC_1)) - await wallet.destroy() + await assert.resolves(wallet.destroy()) }) await test('sign open block with BIP-44 wallet', async () => { const wallet = await Wallet.load('BIP-44', PASSWORD, BIP39_SEED) await assert.resolves(wallet.unlock(PASSWORD)) - const block = new Block(ADDRESS_0, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative) .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance) - await assert.resolves(wallet.sign(0, block)) + + await assert.resolves(async () => { + await click( + 'Sign with BIP-44', + async () => wallet.sign(0, block) + ) + }) assert.ok(await block.verify(PUBLIC_0)) - await wallet.destroy() + await assert.resolves(wallet.destroy()) }) await test('sign open block with Exodus wallet', async () => { const wallet = await Wallet.load('Exodus', PASSWORD, EXODUS.BIP39_SEED_0) await assert.resolves(wallet.unlock(PASSWORD)) - const block = new Block(EXODUS.ADDRESS_0, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative) .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance) - await assert.resolves(wallet.sign(0, block)) + + await assert.resolves(async () => { + await click( + 'Sign with Exodus', + async () => wallet.sign(0, block) + ) + }) assert.ok(await block.verify(EXODUS.PUBLIC_0)) - await wallet.destroy() + await assert.resolves(wallet.destroy()) + }) + + await test('fail to sign open block with wallet without user activation', async () => { + const wallet = await Wallet.load('BIP-44', PASSWORD, BIP39_SEED) + await assert.resolves(wallet.unlock(PASSWORD)) + const block = new Block(ADDRESS_0, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative) + .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance) + + await assert.rejects(wallet.sign(0, block)) + assert.ok(block.signature === undefined) + + await assert.resolves(wallet.destroy()) }) await test('fail to sign open block with wallet when locked', async () => { @@ -143,6 +170,12 @@ await Promise.all([ const block = new Block(ADDRESS_0, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative) .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance) + await assert.rejects(async () => { + await click( + 'Sign while locked', + async () => wallet.sign(0, block) + ) + }) await assert.rejects(wallet.sign(0, block)) assert.ok(block.signature === undefined) @@ -162,7 +195,8 @@ await Promise.all([ const block = await new Block(RECEIVE_BLOCK.account, RECEIVE_BLOCK.balance, RECEIVE_BLOCK.previous, RECEIVE_BLOCK.representative) .receive(RECEIVE_BLOCK.link, 0) .pow(RECEIVE_BLOCK.work) - await block.sign(RECEIVE_BLOCK.key) + + await assert.resolves(async () => await block.sign(RECEIVE_BLOCK.key)) assert.equal(block.hash, RECEIVE_BLOCK.hash) assert.equal(block.signature, RECEIVE_BLOCK.signature) }) -- 2.47.3