'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
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
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
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