UNPKG

@venly/web3-provider

Version:

Venly enabled Web3 Provider for the web

229 lines (228 loc) 7.79 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const connect_1 = require("@venly/connect"); const index_1 = require("./index"); const json_rpc_engine_1 = require("@metamask/json-rpc-engine"); const eth_json_rpc_middleware_1 = require("@metamask/eth-json-rpc-middleware"); require('isomorphic-fetch'); var venly; var engine; beforeAll(() => __awaiter(void 0, void 0, void 0, function* () { venly = new index_1.VenlyProvider(); let options = { clientId: 'Testaccount', environment: 'qa', secretType: connect_1.SecretType.ETHEREUM, skipAuthentication: true }; var provider = yield venly.createProvider(options); engine = new json_rpc_engine_1.JsonRpcEngine(); engine.push((0, eth_json_rpc_middleware_1.providerAsMiddleware)(provider)); })); describe('Static Middleware', () => { test('web3_clientVersion returns VenlyProviderEngine/v0.21.0/javascript', () => { const req = { id: 1, jsonrpc: '2.0', method: 'web3_clientVersion' }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/VenlyProvider.*/); }); }); test('eth_hashrate returns 0x00', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_hashrate' }; return engine.handle(req).then((res) => { expect(res.result).toStrictEqual('0x00'); }); }); test('eth_mining returns false', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_mining' }; return engine.handle(req).then((res) => { expect(res.result).toStrictEqual(false); }); }); test('eth_syncing returns false', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_syncing' }; return engine.handle(req).then((res) => { expect(res.result).toStrictEqual(false); }); }); }); describe('Network Middleware', () => { test('eth_chainId returns 0x5', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_chainId' }; return engine.handle(req).then((res) => { expect(res.result).toStrictEqual(0x5); }); }); test('eth_blockNumber returns valid block number', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_blockNumber' }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/0x.*/); }); }); test('eth_gasPrice returns valid gas price', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_gasPrice' }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/0x.*/); }); }); test('eth_getBalance returns valid account balance', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_getBalance', params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"] }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/0x.*/); }); }); test('eth_getTransactionCount returns valid transaction count', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_getTransactionCount', params: ["0x779F85503e1d4f38AB1B203820Dd7C633f931b99", "latest"] }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/0x.*/); }); }); test('eth_getBlockTransactionCountByNumber returns valid transaction count', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_getBlockTransactionCountByNumber', params: ["0xe8"] }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/0x.*/); }); }); test('eth_getCode returns valid code', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_getCode', params: ["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "latest"] }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/0x.*/); }); }); }); describe('Filter Middleware', () => { var filterId; test('eth_newFilter returns valid filter id', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_newFilter', params: [{ fromBlock: "0x1", toBlock: "0x2", address: "0x8888f1f195afa192cfee860698584c030f4c9db1", topics: [ "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", null, [ "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc", ], ], }] }; return engine.handle(req).then((res) => { filterId = res.result; expect(res.result).toMatch(/0x.*/); }); }); test('eth_newBlockFilter returns valid filter id', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_newBlockFilter' }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/0x.*/); }); }); test('eth_newPendingTransactionFilter returns valid filter id', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_newPendingTransactionFilter' }; return engine.handle(req).then((res) => { expect(res.result).toMatch(/0x.*/); }); }); test('eth_getFilterChanges returns an array', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_getFilterChanges', params: [filterId] }; return engine.handle(req).then((res) => { expect(res.result).toBeInstanceOf(Array); }); }); test('eth_getFilterLogs returns an array', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_getFilterLogs', params: [filterId] }; return engine.handle(req).then((res) => { expect(res.result).toBeInstanceOf(Array); }); }); test('eth_uninstallFilter returns true', () => { const req = { id: 1, jsonrpc: '2.0', method: 'eth_uninstallFilter', params: [filterId] }; return engine.handle(req).then((res) => { expect(res.result).toStrictEqual(true); }); }); });