]> git.codecow.com Git - libnemo.git/commitdiff
Add clicks to test user activation when signing with wallet.
authorChris Duncan <chris@zoso.dev>
Sun, 26 Apr 2026 20:58:49 +0000 (13:58 -0700)
committerChris Duncan <chris@zoso.dev>
Sun, 26 Apr 2026 20:58:49 +0000 (13:58 -0700)
test/test.blocks.mjs

index 3b0fcb53c1f6b49a8db56ff78e5a287e1136be29..db60bac36e8c89175f1897a0164ed49d38e40d3c 100644 (file)
@@ -4,7 +4,7 @@
 'use strict'\r
 \r
 import { Block, Rpc, Wallet } from 'libnemo'\r
-import { assert, isNode, suite, test } from './GLOBALS.mjs'\r
+import { assert, click, isNode, suite, test } from './GLOBALS.mjs'\r
 import { CUSTOM_TEST_VECTORS, NANO_TEST_VECTORS } from './VECTORS.mjs'\r
 \r
 await Promise.all([\r
@@ -105,37 +105,64 @@ await Promise.all([
                await test('sign open block with BLAKE2b wallet', async () => {\r
                        const wallet = await Wallet.load('BLAKE2b', PASSWORD, BLAKE2B_SEED)\r
                        await assert.resolves(wallet.unlock(PASSWORD))\r
-\r
                        const block = new Block(BLAKE2B_ADDRESS_1, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative)\r
                                .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance)\r
-                       await assert.resolves(wallet.sign(1, block))\r
+\r
+                       await assert.resolves(async () => {\r
+                               await click(\r
+                                       'Sign with BLAKE2b',\r
+                                       async () => wallet.sign(1, block)\r
+                               )\r
+                       })\r
                        assert.ok(await block.verify(BLAKE2B_PUBLIC_1))\r
 \r
-                       await wallet.destroy()\r
+                       await assert.resolves(wallet.destroy())\r
                })\r
 \r
                await test('sign open block with BIP-44 wallet', async () => {\r
                        const wallet = await Wallet.load('BIP-44', PASSWORD, BIP39_SEED)\r
                        await assert.resolves(wallet.unlock(PASSWORD))\r
-\r
                        const block = new Block(ADDRESS_0, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative)\r
                                .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance)\r
-                       await assert.resolves(wallet.sign(0, block))\r
+\r
+                       await assert.resolves(async () => {\r
+                               await click(\r
+                                       'Sign with BIP-44',\r
+                                       async () => wallet.sign(0, block)\r
+                               )\r
+                       })\r
                        assert.ok(await block.verify(PUBLIC_0))\r
 \r
-                       await wallet.destroy()\r
+                       await assert.resolves(wallet.destroy())\r
                })\r
 \r
                await test('sign open block with Exodus wallet', async () => {\r
                        const wallet = await Wallet.load('Exodus', PASSWORD, EXODUS.BIP39_SEED_0)\r
                        await assert.resolves(wallet.unlock(PASSWORD))\r
-\r
                        const block = new Block(EXODUS.ADDRESS_0, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative)\r
                                .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance)\r
-                       await assert.resolves(wallet.sign(0, block))\r
+\r
+                       await assert.resolves(async () => {\r
+                               await click(\r
+                                       'Sign with Exodus',\r
+                                       async () => wallet.sign(0, block)\r
+                               )\r
+                       })\r
                        assert.ok(await block.verify(EXODUS.PUBLIC_0))\r
 \r
-                       await wallet.destroy()\r
+                       await assert.resolves(wallet.destroy())\r
+               })\r
+\r
+               await test('fail to sign open block with wallet without user activation', async () => {\r
+                       const wallet = await Wallet.load('BIP-44', PASSWORD, BIP39_SEED)\r
+                       await assert.resolves(wallet.unlock(PASSWORD))\r
+                       const block = new Block(ADDRESS_0, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative)\r
+                               .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance)\r
+\r
+                       await assert.rejects(wallet.sign(0, block))\r
+                       assert.ok(block.signature === undefined)\r
+\r
+                       await assert.resolves(wallet.destroy())\r
                })\r
 \r
                await test('fail to sign open block with wallet when locked', async () => {\r
@@ -143,6 +170,12 @@ await Promise.all([
                        const block = new Block(ADDRESS_0, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative)\r
                                .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance)\r
 \r
+                       await assert.rejects(async () => {\r
+                               await click(\r
+                                       'Sign while locked',\r
+                                       async () => wallet.sign(0, block)\r
+                               )\r
+                       })\r
                        await assert.rejects(wallet.sign(0, block))\r
                        assert.ok(block.signature === undefined)\r
 \r
@@ -162,7 +195,8 @@ await Promise.all([
                        const block = await new Block(RECEIVE_BLOCK.account, RECEIVE_BLOCK.balance, RECEIVE_BLOCK.previous, RECEIVE_BLOCK.representative)\r
                                .receive(RECEIVE_BLOCK.link, 0)\r
                                .pow(RECEIVE_BLOCK.work)\r
-                       await block.sign(RECEIVE_BLOCK.key)\r
+\r
+                       await assert.resolves(async () => await block.sign(RECEIVE_BLOCK.key))\r
                        assert.equal(block.hash, RECEIVE_BLOCK.hash)\r
                        assert.equal(block.signature, RECEIVE_BLOCK.signature)\r
                })\r