From 47220aa12fa98e0375b56968bb1f68a02597732a Mon Sep 17 00:00:00 2001 From: bartmacbartek Date: Thu, 6 May 2021 12:42:52 +0200 Subject: [PATCH] Fix default options merging in Secp256k1HdWallet --- packages/amino/src/secp256k1hdwallet.spec.ts | 12 ++++++++++++ packages/amino/src/secp256k1hdwallet.ts | 7 ++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/amino/src/secp256k1hdwallet.spec.ts b/packages/amino/src/secp256k1hdwallet.spec.ts index 92aa78a9..c55085d1 100644 --- a/packages/amino/src/secp256k1hdwallet.spec.ts +++ b/packages/amino/src/secp256k1hdwallet.spec.ts @@ -33,6 +33,18 @@ describe("Secp256k1HdWallet", () => { expect(account.pubkey).not.toEqual(defaultPubkey); expect(account.address.slice(0, 4)).toEqual("yolo"); }); + + it("works with explicitly undefined options", async () => { + const wallet = await Secp256k1HdWallet.fromMnemonic(defaultMnemonic, { + bip39Password: undefined, + hdPaths: undefined, + prefix: undefined, + }); + expect(wallet.mnemonic).toEqual(defaultMnemonic); + const [account] = await wallet.getAccounts(); + expect(account.pubkey).toEqual(defaultPubkey); + expect(account.address).toEqual(defaultAddress); + }); }); describe("generate", () => { diff --git a/packages/amino/src/secp256k1hdwallet.ts b/packages/amino/src/secp256k1hdwallet.ts index 56a65f23..2c224e31 100644 --- a/packages/amino/src/secp256k1hdwallet.ts +++ b/packages/amino/src/secp256k1hdwallet.ts @@ -246,12 +246,13 @@ export class Secp256k1HdWallet implements OfflineAminoSigner { private readonly accounts: readonly DerivationInfo[]; protected constructor(mnemonic: EnglishMnemonic, options: Secp256k1HdWalletConstructorOptions) { - const { seed, hdPaths, prefix } = { ...defaultOptions, ...options }; + const hdPaths = options.hdPaths ?? defaultOptions.hdPaths; + const prefix = options.prefix ?? defaultOptions.prefix; this.secret = mnemonic; - this.seed = seed; + this.seed = options.seed; this.accounts = hdPaths.map((hdPath) => ({ hdPath: hdPath, - prefix: prefix, + prefix, })); }