From: Chris Duncan Date: Sat, 2 Aug 2025 09:38:09 +0000 (-0700) Subject: Overhaul wallet import tests. X-Git-Tag: v0.10.5~47^2~13 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=d032bc70c01c2b42ee62d5ae3042950be38b865c;p=libnemo.git Overhaul wallet import tests. --- diff --git a/test/test.import-wallet.mjs b/test/test.import-wallet.mjs index 7598f76..40a4576 100644 --- a/test/test.import-wallet.mjs +++ b/test/test.import-wallet.mjs @@ -45,8 +45,8 @@ await Promise.all([ assert.ok('mnemonic' in wallet) assert.ok('seed' in wallet) assert.ok(account instanceof Account) - assert.throws(() => wallet.mnemonic) - assert.equal(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED) + assert.ok(wallet.mnemonic === undefined) + assert.ok(await wallet.verify(NANO_TEST_VECTORS.BIP39_SEED)) assert.equal(account.publicKey, NANO_TEST_VECTORS.PUBLIC_0) assert.equal(account.address, NANO_TEST_VECTORS.ADDRESS_0) @@ -54,12 +54,12 @@ await Promise.all([ }) await test('Trezor-derived BIP-44 entropy for 12-word mnemonic', async () => { - const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.ENTROPY_0) + const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.MNEMONIC_0) await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const account = await wallet.account() - assert.equal(wallet.mnemonic, CUSTOM_TEST_VECTORS.MNEMONIC_0) - assert.equal(wallet.seed, CUSTOM_TEST_VECTORS.SEED_0) + assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.MNEMONIC_0)) + assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.SEED_0)) assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.PUBLIC_0) assert.equal(account.address, CUSTOM_TEST_VECTORS.ADDRESS_0) @@ -67,12 +67,12 @@ await Promise.all([ }) await test('Trezor-derived BIP-44 entropy for 15-word mnemonic', async () => { - const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.ENTROPY_1) + const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.MNEMONIC_1) await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const account = await wallet.account() - assert.equal(wallet.mnemonic, CUSTOM_TEST_VECTORS.MNEMONIC_1) - assert.equal(wallet.seed, CUSTOM_TEST_VECTORS.SEED_1) + assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.MNEMONIC_1)) + assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.SEED_1)) assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.PUBLIC_1) assert.equal(account.address, CUSTOM_TEST_VECTORS.ADDRESS_1) @@ -80,12 +80,12 @@ await Promise.all([ }) await test('Trezor-derived BIP-44 entropy for 18-word mnemonic', async () => { - const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.ENTROPY_2) + const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.MNEMONIC_2) await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const account = await wallet.account() - assert.equal(wallet.mnemonic, CUSTOM_TEST_VECTORS.MNEMONIC_2) - assert.equal(wallet.seed, CUSTOM_TEST_VECTORS.SEED_2) + assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.MNEMONIC_2)) + assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.SEED_2)) assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.PUBLIC_2) assert.equal(account.address, CUSTOM_TEST_VECTORS.ADDRESS_2) @@ -93,12 +93,12 @@ await Promise.all([ }) await test('Trezor-derived BIP-44 entropy for 21-word mnemonic', async () => { - const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.ENTROPY_3) + const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.MNEMONIC_3) await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const account = await wallet.account() - assert.equal(wallet.mnemonic, CUSTOM_TEST_VECTORS.MNEMONIC_3) - assert.equal(wallet.seed, CUSTOM_TEST_VECTORS.SEED_3) + assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.MNEMONIC_3)) + assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.SEED_3)) assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.PUBLIC_3) assert.equal(account.address, CUSTOM_TEST_VECTORS.ADDRESS_3) @@ -106,14 +106,14 @@ await Promise.all([ }) await test('BIP-44 zero-string entropy', async () => { - const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.ENTROPY_0, TREZOR_TEST_VECTORS.PASSWORD) + const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.MNEMONIC_0, TREZOR_TEST_VECTORS.PASSWORD) await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const accounts = await wallet.accounts(0, 3) assert.ok('mnemonic' in wallet) assert.ok('seed' in wallet) - assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_0) - assert.equal(wallet.seed, TREZOR_TEST_VECTORS.SEED_0.toUpperCase()) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_0)) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.SEED_0)) assert.equal(accounts.length, 4) for (let i = 0; i < accounts.length; i++) { @@ -126,14 +126,16 @@ await Promise.all([ }) await test('BLAKE2b zero-string seed', async () => { - const wallet = await Wallet.import('BLAKE2b', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.ENTROPY_0) + const wallet = await Wallet.import('BLAKE2b', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.MNEMONIC_0) await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const accounts = await wallet.accounts(0, 3) assert.ok('mnemonic' in wallet) assert.ok('seed' in wallet) - assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_0) - assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_0) + assert.ok(wallet.mnemonic === undefined) + assert.ok(wallet.seed === undefined) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_0)) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_0)) assert.equal(accounts.length, 4) for (let i = 0; i < accounts.length; i++) { @@ -150,10 +152,8 @@ await Promise.all([ await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const accounts = await wallet.accounts(0, 1) - assert.ok('mnemonic' in wallet) - assert.ok('seed' in wallet) - assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_1) - assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_1) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_1)) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_1)) assert.ok(accounts[0] instanceof Account) assert.equal(accounts[0].publicKey, TREZOR_TEST_VECTORS.BLAKE2B_1_PUBLIC_0) @@ -171,18 +171,15 @@ await Promise.all([ await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const walletAccount = await wallet.account() - assert.ok('mnemonic' in wallet) - assert.ok('seed' in wallet) - assert.exists(walletAccount) - assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_2) - assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_2) + assert.equal(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_2), false) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_2)) const imported = await Wallet.import('BLAKE2b', TREZOR_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.MNEMONIC_2) await imported.unlock(TREZOR_TEST_VECTORS.PASSWORD) const importedAccount = await imported.account() - assert.equal(imported.mnemonic, wallet.mnemonic) - assert.equal(imported.seed, wallet.seed) + assert.ok(await imported.verify(TREZOR_TEST_VECTORS.MNEMONIC_2)) + assert.ok(await imported.verify(TREZOR_TEST_VECTORS.ENTROPY_2)) assert.equal(importedAccount.publicKey, walletAccount.publicKey) await assert.resolves(wallet.destroy()) @@ -194,18 +191,16 @@ await Promise.all([ await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) const account = await wallet.account() - assert.ok('mnemonic' in wallet) - assert.ok('seed' in wallet) assert.ok(account instanceof Account) - assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_3) - assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_3) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_3)) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_3)) assert.equal(account.publicKey, TREZOR_TEST_VECTORS.BLAKE2B_3_PUBLIC_0) assert.equal(account.address, TREZOR_TEST_VECTORS.BLAKE2B_3_ADDRESS_0) await assert.resolves(wallet.destroy()) }) - await test('Reject invalid entropy', async () => { + await test('Reject invalid seed', async () => { await assert.rejects(Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, '6CAF5A42BB8074314AAE20295975ECE663BE7AAD945A73613D193B0CC41C797')) await assert.rejects(Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, '6CAF5A42BB8074314AAE20295975ECE663BE7AAD945A73613D193B0CC41C79701')) await assert.rejects(Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.ENTROPY_0.replaceAll(/./g, 'x'))) @@ -231,16 +226,16 @@ await Promise.all([ assert.ok('mnemonic' in wallet) assert.ok('seed' in wallet) - assert.throws(() => wallet.mnemonic) - assert.throws(() => wallet.seed) + assert.ok(wallet.mnemonic === undefined) + assert.ok(wallet.seed === undefined) + await assert.rejects(wallet.verify(NANO_TEST_VECTORS.MNEMONIC)) + await assert.rejects(wallet.verify(NANO_TEST_VECTORS.BIP39_SEED)) const unlockResult = await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) assert.equal(unlockResult, true) - assert.ok('mnemonic' in wallet) - assert.ok('seed' in wallet) - assert.equal(wallet.mnemonic, NANO_TEST_VECTORS.MNEMONIC) - assert.equal(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED) + assert.ok(await wallet.verify(NANO_TEST_VECTORS.MNEMONIC)) + assert.ok(await wallet.verify(NANO_TEST_VECTORS.BIP39_SEED)) await assert.resolves(wallet.destroy()) }) @@ -251,16 +246,16 @@ await Promise.all([ assert.ok('mnemonic' in wallet) assert.ok('seed' in wallet) - assert.throws(() => wallet.mnemonic) - assert.throws(() => wallet.seed) + assert.ok(wallet.mnemonic === undefined) + assert.ok(wallet.seed === undefined) + await assert.rejects(wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_0)) + await assert.rejects(wallet.verify(TREZOR_TEST_VECTORS.SEED_0)) const unlockResult = await wallet.unlock(NANO_TEST_VECTORS.PASSWORD) assert.equal(unlockResult, true) - assert.ok('mnemonic' in wallet) - assert.ok('seed' in wallet) - assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_0) - assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_0) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_0)) + assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_0)) await assert.resolves(wallet.destroy()) }) @@ -268,23 +263,21 @@ await Promise.all([ await test('export wallet IDs from storage and reimport them', async () => { const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, NANO_TEST_VECTORS.MNEMONIC, NANO_TEST_VECTORS.PASSWORD) const backups = await Wallet.export() - - assert.ok(backups.some(id => id === wallet.id)) + debugger + assert.ok(backups.some(record => record.id === wallet.id)) const restored = await Wallet.restore(wallet.id) assert.ok('mnemonic' in restored) assert.ok('seed' in restored) - assert.throws(() => restored.mnemonic) - assert.throws(() => restored.seed) + assert.ok(restored.mnemonic === undefined) + assert.ok(restored.seed === undefined) const unlockResult = await restored.unlock(NANO_TEST_VECTORS.PASSWORD) assert.equal(unlockResult, true) - assert.ok('mnemonic' in restored) - assert.ok('seed' in restored) - assert.equal(restored.mnemonic, NANO_TEST_VECTORS.MNEMONIC) - assert.equal(restored.seed, NANO_TEST_VECTORS.BIP39_SEED) + assert.ok(await restored.verify(NANO_TEST_VECTORS.MNEMONIC)) + assert.ok(await restored.verify(NANO_TEST_VECTORS.BIP39_SEED)) await assert.resolves(wallet.destroy()) await assert.resolves(restored.destroy())