From 8a8f205a4e4f3ae4172011fe83a4cba712251824 Mon Sep 17 00:00:00 2001 From: Danny Cho Date: Mon, 22 Aug 2022 10:24:14 +1200 Subject: [PATCH] test: added new tests against nonce types --- packages/near-api-js/test/serialize.test.js | 52 +++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/packages/near-api-js/test/serialize.test.js b/packages/near-api-js/test/serialize.test.js index c87015650d..c726c54b24 100644 --- a/packages/near-api-js/test/serialize.test.js +++ b/packages/near-api-js/test/serialize.test.js @@ -1,5 +1,6 @@ const fs = require('fs'); +const BN = require('bn.js'); const nearApi = require('../src/index'); class Test extends nearApi.utils.enums.Assignable { @@ -111,4 +112,55 @@ describe('roundtrip test', () => { }); } } +}); + +describe('serialize and deserialize on different types of nonce', () => { + const actions = [ + nearApi.transactions.transfer(1), + ]; + const blockHash = nearApi.utils.serialize.base_decode('244ZQ9cgj3CQ6bWBdytfrJMuMQ1jdXLFGnr4HhvtCTnM'); + const targetNonce = new BN(1); + test('number typed nonce', async() => { + const transaction = nearApi.transactions.createTransaction( + 'test.near', + nearApi.utils.PublicKey.fromString('Anu7LYDfpLtkP7E16LT9imXF694BdQaa9ufVkQiwTQxC'), + 'whatever.near', + 1, + actions, + blockHash); + const serialized = transaction.encode(); + expect(serialized.toString('hex')).toEqual('09000000746573742e6e65617200917b3d268d4b58f7fec1b150bd68d69be3ee5d4cc39855e341538465bb77860d01000000000000000d00000077686174657665722e6e6561720fa473fd26901df296be6adc4cc4df34d040efa2435224b6986910e630c2fef6010000000301000000000000000000000000000000'); + const deserialized = nearApi.transactions.Transaction.decode(serialized); + expect(deserialized.encode()).toEqual(serialized); + expect(deserialized.nonce.toString()).toEqual(targetNonce.toString()); + + }); + test('string typed nonce', async() => { + const transaction = nearApi.transactions.createTransaction( + 'test.near', + nearApi.utils.PublicKey.fromString('Anu7LYDfpLtkP7E16LT9imXF694BdQaa9ufVkQiwTQxC'), + 'whatever.near', + '1', + actions, + blockHash); + const serialized = transaction.encode(); + expect(serialized.toString('hex')).toEqual('09000000746573742e6e65617200917b3d268d4b58f7fec1b150bd68d69be3ee5d4cc39855e341538465bb77860d01000000000000000d00000077686174657665722e6e6561720fa473fd26901df296be6adc4cc4df34d040efa2435224b6986910e630c2fef6010000000301000000000000000000000000000000'); + const deserialized = nearApi.transactions.Transaction.decode(serialized); + expect(deserialized.encode()).toEqual(serialized); + expect(deserialized.nonce.toString()).toEqual(targetNonce.toString()); + }); + test('BN typed nonce', async() => { + const transaction = nearApi.transactions.createTransaction( + 'test.near', + nearApi.utils.PublicKey.fromString('Anu7LYDfpLtkP7E16LT9imXF694BdQaa9ufVkQiwTQxC'), + 'whatever.near', + new BN(1), + actions, + blockHash); + const serialized = transaction.encode(); + expect(serialized.toString('hex')).toEqual('09000000746573742e6e65617200917b3d268d4b58f7fec1b150bd68d69be3ee5d4cc39855e341538465bb77860d01000000000000000d00000077686174657665722e6e6561720fa473fd26901df296be6adc4cc4df34d040efa2435224b6986910e630c2fef6010000000301000000000000000000000000000000'); + const deserialized = nearApi.transactions.Transaction.decode(serialized); + expect(deserialized.encode()).toEqual(serialized); + expect(deserialized.nonce.toString()).toEqual(targetNonce.toString()); + }); }); \ No newline at end of file