]> git.codecow.com Git - libnemo.git/commitdiff
Overhaul wallet import tests.
authorChris Duncan <chris@zoso.dev>
Sat, 2 Aug 2025 09:38:09 +0000 (02:38 -0700)
committerChris Duncan <chris@zoso.dev>
Sat, 2 Aug 2025 09:38:09 +0000 (02:38 -0700)
test/test.import-wallet.mjs

index 7598f76039ff8a94f39adbaa6fe337eeeab5c407..40a457672a0facc1b8be89bb672bc4ee7b8fbbf1 100644 (file)
@@ -45,8 +45,8 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.ok(account instanceof Account)\r
-                       assert.throws(() => wallet.mnemonic)\r
-                       assert.equal(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED)\r
+                       assert.ok(wallet.mnemonic === undefined)\r
+                       assert.ok(await wallet.verify(NANO_TEST_VECTORS.BIP39_SEED))\r
                        assert.equal(account.publicKey, NANO_TEST_VECTORS.PUBLIC_0)\r
                        assert.equal(account.address, NANO_TEST_VECTORS.ADDRESS_0)\r
 \r
@@ -54,12 +54,12 @@ await Promise.all([
                })\r
 \r
                await test('Trezor-derived BIP-44 entropy for 12-word mnemonic', async () => {\r
-                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.ENTROPY_0)\r
+                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.MNEMONIC_0)\r
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const account = await wallet.account()\r
 \r
-                       assert.equal(wallet.mnemonic, CUSTOM_TEST_VECTORS.MNEMONIC_0)\r
-                       assert.equal(wallet.seed, CUSTOM_TEST_VECTORS.SEED_0)\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.MNEMONIC_0))\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.SEED_0))\r
                        assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.PUBLIC_0)\r
                        assert.equal(account.address, CUSTOM_TEST_VECTORS.ADDRESS_0)\r
 \r
@@ -67,12 +67,12 @@ await Promise.all([
                })\r
 \r
                await test('Trezor-derived BIP-44 entropy for 15-word mnemonic', async () => {\r
-                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.ENTROPY_1)\r
+                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.MNEMONIC_1)\r
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const account = await wallet.account()\r
 \r
-                       assert.equal(wallet.mnemonic, CUSTOM_TEST_VECTORS.MNEMONIC_1)\r
-                       assert.equal(wallet.seed, CUSTOM_TEST_VECTORS.SEED_1)\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.MNEMONIC_1))\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.SEED_1))\r
                        assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.PUBLIC_1)\r
                        assert.equal(account.address, CUSTOM_TEST_VECTORS.ADDRESS_1)\r
 \r
@@ -80,12 +80,12 @@ await Promise.all([
                })\r
 \r
                await test('Trezor-derived BIP-44 entropy for 18-word mnemonic', async () => {\r
-                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.ENTROPY_2)\r
+                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.MNEMONIC_2)\r
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const account = await wallet.account()\r
 \r
-                       assert.equal(wallet.mnemonic, CUSTOM_TEST_VECTORS.MNEMONIC_2)\r
-                       assert.equal(wallet.seed, CUSTOM_TEST_VECTORS.SEED_2)\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.MNEMONIC_2))\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.SEED_2))\r
                        assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.PUBLIC_2)\r
                        assert.equal(account.address, CUSTOM_TEST_VECTORS.ADDRESS_2)\r
 \r
@@ -93,12 +93,12 @@ await Promise.all([
                })\r
 \r
                await test('Trezor-derived BIP-44 entropy for 21-word mnemonic', async () => {\r
-                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.ENTROPY_3)\r
+                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.MNEMONIC_3)\r
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const account = await wallet.account()\r
 \r
-                       assert.equal(wallet.mnemonic, CUSTOM_TEST_VECTORS.MNEMONIC_3)\r
-                       assert.equal(wallet.seed, CUSTOM_TEST_VECTORS.SEED_3)\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.MNEMONIC_3))\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.SEED_3))\r
                        assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.PUBLIC_3)\r
                        assert.equal(account.address, CUSTOM_TEST_VECTORS.ADDRESS_3)\r
 \r
@@ -106,14 +106,14 @@ await Promise.all([
                })\r
 \r
                await test('BIP-44 zero-string entropy', async () => {\r
-                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.ENTROPY_0, TREZOR_TEST_VECTORS.PASSWORD)\r
+                       const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.MNEMONIC_0, TREZOR_TEST_VECTORS.PASSWORD)\r
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const accounts = await wallet.accounts(0, 3)\r
 \r
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
-                       assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_0)\r
-                       assert.equal(wallet.seed, TREZOR_TEST_VECTORS.SEED_0.toUpperCase())\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_0))\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.SEED_0))\r
                        assert.equal(accounts.length, 4)\r
 \r
                        for (let i = 0; i < accounts.length; i++) {\r
@@ -126,14 +126,16 @@ await Promise.all([
                })\r
 \r
                await test('BLAKE2b zero-string seed', async () => {\r
-                       const wallet = await Wallet.import('BLAKE2b', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.ENTROPY_0)\r
+                       const wallet = await Wallet.import('BLAKE2b', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.MNEMONIC_0)\r
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const accounts = await wallet.accounts(0, 3)\r
 \r
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
-                       assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_0)\r
-                       assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_0)\r
+                       assert.ok(wallet.mnemonic === undefined)\r
+                       assert.ok(wallet.seed === undefined)\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_0))\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_0))\r
                        assert.equal(accounts.length, 4)\r
 \r
                        for (let i = 0; i < accounts.length; i++) {\r
@@ -150,10 +152,8 @@ await Promise.all([
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const accounts = await wallet.accounts(0, 1)\r
 \r
-                       assert.ok('mnemonic' in wallet)\r
-                       assert.ok('seed' in wallet)\r
-                       assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_1)\r
-                       assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_1)\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_1))\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_1))\r
 \r
                        assert.ok(accounts[0] instanceof Account)\r
                        assert.equal(accounts[0].publicKey, TREZOR_TEST_VECTORS.BLAKE2B_1_PUBLIC_0)\r
@@ -171,18 +171,15 @@ await Promise.all([
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const walletAccount = await wallet.account()\r
 \r
-                       assert.ok('mnemonic' in wallet)\r
-                       assert.ok('seed' in wallet)\r
-                       assert.exists(walletAccount)\r
-                       assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_2)\r
-                       assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_2)\r
+                       assert.equal(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_2), false)\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_2))\r
 \r
                        const imported = await Wallet.import('BLAKE2b', TREZOR_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.MNEMONIC_2)\r
                        await imported.unlock(TREZOR_TEST_VECTORS.PASSWORD)\r
                        const importedAccount = await imported.account()\r
 \r
-                       assert.equal(imported.mnemonic, wallet.mnemonic)\r
-                       assert.equal(imported.seed, wallet.seed)\r
+                       assert.ok(await imported.verify(TREZOR_TEST_VECTORS.MNEMONIC_2))\r
+                       assert.ok(await imported.verify(TREZOR_TEST_VECTORS.ENTROPY_2))\r
                        assert.equal(importedAccount.publicKey, walletAccount.publicKey)\r
 \r
                        await assert.resolves(wallet.destroy())\r
@@ -194,18 +191,16 @@ await Promise.all([
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const account = await wallet.account()\r
 \r
-                       assert.ok('mnemonic' in wallet)\r
-                       assert.ok('seed' in wallet)\r
                        assert.ok(account instanceof Account)\r
-                       assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_3)\r
-                       assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_3)\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_3))\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_3))\r
                        assert.equal(account.publicKey, TREZOR_TEST_VECTORS.BLAKE2B_3_PUBLIC_0)\r
                        assert.equal(account.address, TREZOR_TEST_VECTORS.BLAKE2B_3_ADDRESS_0)\r
 \r
                        await assert.resolves(wallet.destroy())\r
                })\r
 \r
-               await test('Reject invalid entropy', async () => {\r
+               await test('Reject invalid seed', async () => {\r
                        await assert.rejects(Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, '6CAF5A42BB8074314AAE20295975ECE663BE7AAD945A73613D193B0CC41C797'))\r
                        await assert.rejects(Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, '6CAF5A42BB8074314AAE20295975ECE663BE7AAD945A73613D193B0CC41C79701'))\r
                        await assert.rejects(Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, TREZOR_TEST_VECTORS.ENTROPY_0.replaceAll(/./g, 'x')))\r
@@ -231,16 +226,16 @@ await Promise.all([
 \r
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
-                       assert.throws(() => wallet.mnemonic)\r
-                       assert.throws(() => wallet.seed)\r
+                       assert.ok(wallet.mnemonic === undefined)\r
+                       assert.ok(wallet.seed === undefined)\r
+                       await assert.rejects(wallet.verify(NANO_TEST_VECTORS.MNEMONIC))\r
+                       await assert.rejects(wallet.verify(NANO_TEST_VECTORS.BIP39_SEED))\r
 \r
                        const unlockResult = await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
 \r
                        assert.equal(unlockResult, true)\r
-                       assert.ok('mnemonic' in wallet)\r
-                       assert.ok('seed' in wallet)\r
-                       assert.equal(wallet.mnemonic, NANO_TEST_VECTORS.MNEMONIC)\r
-                       assert.equal(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED)\r
+                       assert.ok(await wallet.verify(NANO_TEST_VECTORS.MNEMONIC))\r
+                       assert.ok(await wallet.verify(NANO_TEST_VECTORS.BIP39_SEED))\r
 \r
                        await assert.resolves(wallet.destroy())\r
                })\r
@@ -251,16 +246,16 @@ await Promise.all([
 \r
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
-                       assert.throws(() => wallet.mnemonic)\r
-                       assert.throws(() => wallet.seed)\r
+                       assert.ok(wallet.mnemonic === undefined)\r
+                       assert.ok(wallet.seed === undefined)\r
+                       await assert.rejects(wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_0))\r
+                       await assert.rejects(wallet.verify(TREZOR_TEST_VECTORS.SEED_0))\r
 \r
                        const unlockResult = await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
 \r
                        assert.equal(unlockResult, true)\r
-                       assert.ok('mnemonic' in wallet)\r
-                       assert.ok('seed' in wallet)\r
-                       assert.equal(wallet.mnemonic, TREZOR_TEST_VECTORS.MNEMONIC_0)\r
-                       assert.equal(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_0)\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.MNEMONIC_0))\r
+                       assert.ok(await wallet.verify(TREZOR_TEST_VECTORS.ENTROPY_0))\r
 \r
                        await assert.resolves(wallet.destroy())\r
                })\r
@@ -268,23 +263,21 @@ await Promise.all([
                await test('export wallet IDs from storage and reimport them', async () => {\r
                        const wallet = await Wallet.import('BIP-44', NANO_TEST_VECTORS.PASSWORD, NANO_TEST_VECTORS.MNEMONIC, NANO_TEST_VECTORS.PASSWORD)\r
                        const backups = await Wallet.export()\r
-\r
-                       assert.ok(backups.some(id => id === wallet.id))\r
+                       debugger\r
+                       assert.ok(backups.some(record => record.id === wallet.id))\r
 \r
                        const restored = await Wallet.restore(wallet.id)\r
 \r
                        assert.ok('mnemonic' in restored)\r
                        assert.ok('seed' in restored)\r
-                       assert.throws(() => restored.mnemonic)\r
-                       assert.throws(() => restored.seed)\r
+                       assert.ok(restored.mnemonic === undefined)\r
+                       assert.ok(restored.seed === undefined)\r
 \r
                        const unlockResult = await restored.unlock(NANO_TEST_VECTORS.PASSWORD)\r
 \r
                        assert.equal(unlockResult, true)\r
-                       assert.ok('mnemonic' in restored)\r
-                       assert.ok('seed' in restored)\r
-                       assert.equal(restored.mnemonic, NANO_TEST_VECTORS.MNEMONIC)\r
-                       assert.equal(restored.seed, NANO_TEST_VECTORS.BIP39_SEED)\r
+                       assert.ok(await restored.verify(NANO_TEST_VECTORS.MNEMONIC))\r
+                       assert.ok(await restored.verify(NANO_TEST_VECTORS.BIP39_SEED))\r
 \r
                        await assert.resolves(wallet.destroy())\r
                        await assert.resolves(restored.destroy())\r