From a9c605de51bfd3a7c01f7d371fb257fe27a8109c Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Tue, 18 Feb 2020 11:23:41 +0100 Subject: [PATCH] Throw early if transaction fee is missing --- packages/bcp/src/encode.spec.ts | 30 +++--------------------------- packages/bcp/src/encode.ts | 16 ++++------------ 2 files changed, 7 insertions(+), 39 deletions(-) diff --git a/packages/bcp/src/encode.spec.ts b/packages/bcp/src/encode.spec.ts index 5c63bfe9..b0738993 100644 --- a/packages/bcp/src/encode.spec.ts +++ b/packages/bcp/src/encode.spec.ts @@ -230,7 +230,8 @@ describe("encode", () => { ); }); - it("builds a send transaction without fee", () => { + it("throws for a send transaction without fee", () => { + // This will be rejected by the REST server. Better throw early to avoid hard to debug errors. const tx = { kind: "bcp/send", chainId: defaultChainId, @@ -239,32 +240,7 @@ describe("encode", () => { recipient: defaultRecipient, memo: defaultMemo, }; - expect(buildUnsignedTx(tx, defaultTokens)).toEqual({ - type: "cosmos-sdk/StdTx", - value: { - msg: [ - { - type: "cosmos-sdk/MsgSend", - value: { - from_address: "cosmos1h806c7khnvmjlywdrkdgk2vrayy2mmvf9rxk2r", - to_address: "cosmos1z7g5w84ynmjyg0kqpahdjqpj7yq34v3suckp0e", - amount: [ - { - denom: "uatom", - amount: "11657995", - }, - ], - }, - }, - ], - signatures: [], - memo: defaultMemo, - fee: { - amount: [], - gas: "", - }, - }, - }); + expect(() => buildUnsignedTx(tx, defaultTokens)).toThrowError(/transaction fee must be set/i); }); it("builds a send transaction with fee", () => { diff --git a/packages/bcp/src/encode.ts b/packages/bcp/src/encode.ts index 49056033..85a83e31 100644 --- a/packages/bcp/src/encode.ts +++ b/packages/bcp/src/encode.ts @@ -91,6 +91,8 @@ export function buildUnsignedTx( const matchingBankToken = bankTokens.find(t => t.ticker === tx.amount.tokenTicker); const matchingErc20Token = erc20Tokens.find(t => t.ticker === tx.amount.tokenTicker); + if (!tx.fee) throw new Error("Transaction fee must be set"); + if (matchingBankToken) { return { type: "cosmos-sdk/StdTx", @@ -107,12 +109,7 @@ export function buildUnsignedTx( ], memo: tx.memo || "", signatures: [], - fee: tx.fee - ? encodeFee(tx.fee, bankTokens) - : { - amount: [], - gas: "", - }, + fee: encodeFee(tx.fee, bankTokens), }, }; } else if (matchingErc20Token) { @@ -137,12 +134,7 @@ export function buildUnsignedTx( ], memo: tx.memo || "", signatures: [], - fee: tx.fee - ? encodeFee(tx.fee, bankTokens) - : { - amount: [], - gas: "", - }, + fee: encodeFee(tx.fee, bankTokens), }, }; } else {