From 408f50e6f27314431d67abc058cd6b0009270a7a Mon Sep 17 00:00:00 2001 From: Jun Sugiura Date: Sat, 1 Jun 2019 21:23:39 +0900 Subject: [PATCH 1/5] return result not response obj on send --- packages/web3-providers/src/providers/Web3EthereumProvider.js | 2 +- .../tests/src/providers/Web3EthereumProviderTest.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web3-providers/src/providers/Web3EthereumProvider.js b/packages/web3-providers/src/providers/Web3EthereumProvider.js index ece4b53c3ac..c6ff339de5a 100644 --- a/packages/web3-providers/src/providers/Web3EthereumProvider.js +++ b/packages/web3-providers/src/providers/Web3EthereumProvider.js @@ -136,7 +136,7 @@ export default class Web3EthereumProvider extends AbstractSocketProvider { throw validationResult; } - return response; + return response.result; } /** diff --git a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js index ad72751fb46..573883998c7 100644 --- a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js +++ b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js @@ -174,7 +174,7 @@ describe('Web3EthereumProviderTest', () => { ethereumProvider.onMessage({subscription: '0x0'}); }); - it('calls send and returns a resolved promise with the response', async () => { + it('calls send and returns a resolved promise with the response result', async () => { JsonRpcResponseValidator.validate = jest.fn(() => { return true; }); @@ -184,7 +184,7 @@ describe('Web3EthereumProviderTest', () => { expect(parameters).toEqual([]); - return Promise.resolve(true); + return Promise.resolve({result: true}); }); const response = await ethereumProvider.send('method', []); From 0f29dcaccc5b8a26612e48e3d371204100525c70 Mon Sep 17 00:00:00 2001 From: Jun Sugiura Date: Sun, 2 Jun 2019 01:27:18 +0900 Subject: [PATCH 2/5] fix error handling logic on send method --- .../src/providers/Web3EthereumProvider.js | 14 ++++++---- .../src/providers/Web3EthereumProviderTest.js | 28 +++++++++---------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/packages/web3-providers/src/providers/Web3EthereumProvider.js b/packages/web3-providers/src/providers/Web3EthereumProvider.js index c6ff339de5a..3df3e95f8cd 100644 --- a/packages/web3-providers/src/providers/Web3EthereumProvider.js +++ b/packages/web3-providers/src/providers/Web3EthereumProvider.js @@ -129,14 +129,18 @@ export default class Web3EthereumProvider extends AbstractSocketProvider { * @returns {Promise} */ async send(method, parameters) { - const response = await this.connection.send(method, parameters); - const validationResult = JsonRpcResponseValidator.validate(response); + let result; + try { + result = await this.connection.send(method, parameters); + } catch (error) { + throw new Error(`Node error: ${error.message}`); + } - if (validationResult instanceof Error) { - throw validationResult; + if (result === undefined) { + throw new Error(`Validation error: Undefined JSON-RPC result`); } - return response.result; + return result; } /** diff --git a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js index 573883998c7..2a0dfc82312 100644 --- a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js +++ b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js @@ -175,41 +175,41 @@ describe('Web3EthereumProviderTest', () => { }); it('calls send and returns a resolved promise with the response result', async () => { - JsonRpcResponseValidator.validate = jest.fn(() => { - return true; - }); - socketMock.send = jest.fn((method, parameters) => { expect(method).toEqual('method'); expect(parameters).toEqual([]); - return Promise.resolve({result: true}); + return Promise.resolve(true); }); const response = await ethereumProvider.send('method', []); expect(response).toEqual(true); - - expect(JsonRpcResponseValidator.validate).toHaveBeenCalled(); }); - it('calls send and returns a rejected promise because of a invalid response', async () => { - JsonRpcResponseValidator.validate = jest.fn(() => { - return new Error('invalid'); + it ('callse send and returns a rejected promise becase of an undefined response result', async () => { + socketMock.send = jest.fn((method, parameters) => { + expect(method).toEqual('method'); + + expect(parameters).toEqual([]); + + return Promise.resolve(); }); + await expect(ethereumProvider.send('method', [])).rejects.toThrow('Validation error: Undefined JSON-RPC result'); + }); + + it('calls send and returns a rejected promise because of an error response', async () => { socketMock.send = jest.fn((method, parameters) => { expect(method).toEqual('method'); expect(parameters).toEqual([]); - return Promise.resolve(false); + return Promise.reject(new Error('invalid')); }); - await expect(ethereumProvider.send('method', [])).rejects.toThrow('invalid'); - - expect(JsonRpcResponseValidator.validate).toHaveBeenCalled(); + await expect(ethereumProvider.send('method', [])).rejects.toThrow('Node error: invalid'); }); it('calls sendBatch and returns a resolved promise with the response', async () => { From 3cb56771abe4537d08c3e0c4e5cee0c459a6e963 Mon Sep 17 00:00:00 2001 From: Jun Sugiura Date: Sun, 2 Jun 2019 01:41:19 +0900 Subject: [PATCH 3/5] fix lint errors --- .../web3-providers/src/providers/Web3EthereumProvider.js | 3 +-- .../tests/src/providers/Web3EthereumProviderTest.js | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/web3-providers/src/providers/Web3EthereumProvider.js b/packages/web3-providers/src/providers/Web3EthereumProvider.js index 3df3e95f8cd..1cbcbac2fac 100644 --- a/packages/web3-providers/src/providers/Web3EthereumProvider.js +++ b/packages/web3-providers/src/providers/Web3EthereumProvider.js @@ -17,7 +17,6 @@ * @date 2018 */ -import JsonRpcResponseValidator from '../validators/JsonRpcResponseValidator'; import AbstractSocketProvider from '../../lib/providers/AbstractSocketProvider'; export default class Web3EthereumProvider extends AbstractSocketProvider { @@ -137,7 +136,7 @@ export default class Web3EthereumProvider extends AbstractSocketProvider { } if (result === undefined) { - throw new Error(`Validation error: Undefined JSON-RPC result`); + throw new Error('Validation error: Undefined JSON-RPC result'); } return result; diff --git a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js index 2a0dfc82312..df79fbc7536 100644 --- a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js +++ b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js @@ -1,5 +1,4 @@ import Web3EthereumProvider from '../../../src/providers/Web3EthereumProvider'; -import JsonRpcResponseValidator from '../../../src/validators/JsonRpcResponseValidator'; import AbstractMethod from '../../__mocks__/AbstractMethod'; import AbstractWeb3Module from '../../__mocks__/AbstractWeb3Module'; import AbstractSocketProvider from '../../../lib/providers/AbstractSocketProvider'; @@ -188,7 +187,7 @@ describe('Web3EthereumProviderTest', () => { expect(response).toEqual(true); }); - it ('callse send and returns a rejected promise becase of an undefined response result', async () => { + it('callse send and returns a rejected promise becase of an undefined response result', async () => { socketMock.send = jest.fn((method, parameters) => { expect(method).toEqual('method'); @@ -197,7 +196,9 @@ describe('Web3EthereumProviderTest', () => { return Promise.resolve(); }); - await expect(ethereumProvider.send('method', [])).rejects.toThrow('Validation error: Undefined JSON-RPC result'); + await expect(ethereumProvider.send('method', [])).rejects.toThrow( + 'Validation error: Undefined JSON-RPC result' + ); }); it('calls send and returns a rejected promise because of an error response', async () => { From 747554bce786962eae0f04db867d2365cd153551 Mon Sep 17 00:00:00 2001 From: Jun Sugiura Date: Mon, 3 Jun 2019 20:06:37 +0900 Subject: [PATCH 4/5] remove undefined response check --- .../src/providers/Web3EthereumProvider.js | 9 +-------- .../src/providers/Web3EthereumProviderTest.js | 14 -------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/packages/web3-providers/src/providers/Web3EthereumProvider.js b/packages/web3-providers/src/providers/Web3EthereumProvider.js index 1cbcbac2fac..4f11cfd407c 100644 --- a/packages/web3-providers/src/providers/Web3EthereumProvider.js +++ b/packages/web3-providers/src/providers/Web3EthereumProvider.js @@ -128,18 +128,11 @@ export default class Web3EthereumProvider extends AbstractSocketProvider { * @returns {Promise} */ async send(method, parameters) { - let result; try { - result = await this.connection.send(method, parameters); + return await this.connection.send(method, parameters); } catch (error) { throw new Error(`Node error: ${error.message}`); } - - if (result === undefined) { - throw new Error('Validation error: Undefined JSON-RPC result'); - } - - return result; } /** diff --git a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js index df79fbc7536..b92df403da7 100644 --- a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js +++ b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js @@ -187,20 +187,6 @@ describe('Web3EthereumProviderTest', () => { expect(response).toEqual(true); }); - it('callse send and returns a rejected promise becase of an undefined response result', async () => { - socketMock.send = jest.fn((method, parameters) => { - expect(method).toEqual('method'); - - expect(parameters).toEqual([]); - - return Promise.resolve(); - }); - - await expect(ethereumProvider.send('method', [])).rejects.toThrow( - 'Validation error: Undefined JSON-RPC result' - ); - }); - it('calls send and returns a rejected promise because of an error response', async () => { socketMock.send = jest.fn((method, parameters) => { expect(method).toEqual('method'); From 4f8a8c1464c33b3794c85f910cde2e1bd63d81da Mon Sep 17 00:00:00 2001 From: Jun Sugiura Date: Mon, 3 Jun 2019 20:29:35 +0900 Subject: [PATCH 5/5] revert test name --- .../tests/src/providers/Web3EthereumProviderTest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js index b92df403da7..fa2927ddb98 100644 --- a/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js +++ b/packages/web3-providers/tests/src/providers/Web3EthereumProviderTest.js @@ -173,7 +173,7 @@ describe('Web3EthereumProviderTest', () => { ethereumProvider.onMessage({subscription: '0x0'}); }); - it('calls send and returns a resolved promise with the response result', async () => { + it('calls send and returns a resolved promise with the response', async () => { socketMock.send = jest.fn((method, parameters) => { expect(method).toEqual('method');