pocket-js-web3-provider
Version:
Pocket javascript web3 provider that allows the interaction with the Pocket Network.
86 lines (78 loc) • 3.35 kB
JavaScript
/**
* @author Pabel Nunez Landestoy <pabel@pokt.network>
* @description Unit test for the Pocket Web3 Provider
*/
// Constants
const expect = require('chai').expect;
const PocketProvider = require('../src/index.js');
const aionAccount = require('aion-web3-eth-accounts');
// Config
var config = require('../../../config.json')
const DEV_ID = config.dev_id;
// Aion data setup for test
const AionTransactionSigner = {
hasAddress: async function (address) {
return AionTransactionSigner.accounts.includes(address);
},
signTransaction: async function (txParams) {
// Retrieve the private key
var pkString = Object.values(AionTransactionSigner.privateKeys)[0];
// Sign transaction
var result = await aionAccount.prototype.signTransaction(txParams, pkString);
var signedTx = result.rawTransaction;
return signedTx;
},
// Needs at least 2 accounts in the node to run all tests
accounts: ["0xa0510dd236472e90f0ff4f6b7b4f70b1d8c5206cf303839f9a4e8fa6af0dd420", "0xa0d969df9232b45239b577c3790887081b5a22ffd5a46a8d82584ee560485624"],
// TODO: Improve this
// Update this object with the address - private keys for each account in the same order they are declared
privateKeys: {
"value": "0xd0c6208eb958998dcdac23bedf7d58d863c5abe64e250e4e379a4efd3966cd99e5cab1be5be1655abc987ff7321a438581778919b859370cf1faa22346b201fc"
}
}
// Network information
var aionOpts = { networkName: "AION", networkID: "32", devID: DEV_ID };
// Aion network tests
describe('Aion PocketProvider', function () {
var opts = {
transactionSigner: AionTransactionSigner
}
var provider = new PocketProvider(aionOpts.networkName, aionOpts.networkID, aionOpts.devID, opts);
it('should create a new instance of the PocketProvider', function () {
var pocketProvider = new PocketProvider(aionOpts.networkName, aionOpts.networkID,
aionOpts.devID, aionOpts.version, opts);
expect(pocketProvider).to.not.be.an.instanceof(Error);
expect(pocketProvider).to.be.an.instanceof(PocketProvider);
expect(pocketProvider).to.have.property('transactionSigner');
});
it('should send a new request', async () => {
var payload = {
"jsonrpc": "2.0",
"method": "eth_getBalance",
"params": [AionTransactionSigner.accounts[0], "latest"],
"id": (new Date()).getTime()
};
var response = await provider.send(payload);
expect(response).to.not.be.an.instanceof(Error);
expect(response).to.be.a('object');
});
it('should submit transactions using eth_sendTransaction', async () => {
// Transfers aion from accounts[0] to accounts[1]
var tx = {
"from": AionTransactionSigner.accounts[0],
"to": AionTransactionSigner.accounts[1],
"value": "0x2540be400",
"gas": "0x5208",
"gasPrice": "0x2540be400"
}
var payload = {
"jsonrpc": "2.0",
"method": "eth_sendTransaction",
"params": [tx],
"id": (new Date()).getTime()
};
var response = await provider.send(payload);
expect(response).to.not.be.an.instanceof(Error);
expect(response).to.be.a('object');
});
});