\r
'use strict'\r
\r
-import { assert, isNode, suite, test } from './GLOBALS.mjs'\r
+import { assert, suite, test } from './GLOBALS.mjs'\r
import { NANO_TEST_VECTORS } from './VECTORS.js'\r
-import { Bip44Wallet, Blake2bWallet, LedgerWallet } from '../dist/main.min.js'\r
+import { Bip44Wallet, Blake2bWallet } from '../dist/main.min.js'\r
\r
await suite('Create wallets', async () => {\r
\r
await test('fail when using new', async () => {\r
assert.throws(() => new Bip44Wallet())\r
assert.throws(() => new Blake2bWallet())\r
- assert.throws(() => new LedgerWallet())\r
})\r
\r
await test('fail without a password', async () => {\r
await assert.rejects(Bip44Wallet.create())\r
await assert.rejects(Blake2bWallet.create())\r
})\r
-\r
- await test('connect to a Ledger device', { skip: false || isNode }, async () => {\r
- const wallet = await LedgerWallet.create()\r
- let status = await new Promise(resolve => {\r
- const button = document.createElement('button')\r
- button.innerText = 'Unlock Ledger, then click to continue'\r
- button.addEventListener('click', async (event) => {\r
- const connection = await wallet.connect()\r
- document.body.removeChild(button)\r
- resolve(connection)\r
- })\r
- document.body.appendChild(button)\r
- })\r
-\r
- assert.equals(status, 'CONNECTED')\r
- assert.equals((await wallet.close()).status, 'OK')\r
- })\r
})\r
--- /dev/null
+// SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+'use strict'
+
+import { assert, isNode, suite, test } from './GLOBALS.mjs'
+import { NANO_TEST_VECTORS } from './VECTORS.js'
+import { LedgerWallet } from '../dist/main.min.js'
+
+async function click (text, fn) {
+ return new Promise(resolve => {
+ const button = document.createElement('button')
+ button.innerText = text
+ button.addEventListener('click', async (event) => {
+ const result = await fn
+ document.body.removeChild(button)
+ resolve(result)
+ })
+ document.body.appendChild(button)
+ })
+}
+
+await suite('Ledger hardware wallet', async () => {
+
+ await test('fail when using new', async () => {
+ assert.throws(() => new LedgerWallet())
+ })
+
+ await test('connect to a Ledger device and then disconnect', { skip: false || isNode }, async () => {
+ const wallet = await LedgerWallet.create()
+ const openStatus = await click('Unlock, then click to connect', wallet.connect())
+
+ assert.equals(openStatus, 'CONNECTED')
+
+ const closeStatus = await click('Click to close', wallet.close())
+ assert.equals(closeStatus.status, 'OK')
+ })
+})
// SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
// SPDX-License-Identifier: GPL-3.0-or-later
-import './test.blake2b.mjs'
-import './test.calculate-pow.mjs'
-import './test.create-wallet.mjs'
-import './test.derive-accounts.mjs'
-import './test.import-wallet.mjs'
-import './test.lock-unlock.mjs'
-import './test.manage-rolodex.mjs'
-import './test.refresh-accounts.mjs'
-import './test.sign-blocks.mjs'
-import './test.tools.mjs'
+// import './test.blake2b.mjs'
+// import './test.calculate-pow.mjs'
+// import './test.create-wallet.mjs'
+// import './test.derive-accounts.mjs'
+// import './test.import-wallet.mjs'
+import './test.ledger.mjs'
+// import './test.lock-unlock.mjs'
+// import './test.manage-rolodex.mjs'
+// import './test.refresh-accounts.mjs'
+// import './test.sign-blocks.mjs'
+// import './test.tools.mjs'
console.log('%cTESTING COMPLETE', 'color:orange;font-weight:bold')