88 lines
3.7 KiB
TypeScript
88 lines
3.7 KiB
TypeScript
import * as chai from 'chai';
|
|
|
|
import { chaiSetup } from '../chai_setup';
|
|
import { fixtureData } from '../utils/fixture_data';
|
|
|
|
import { DebugPayload, DebugSubprovider } from './../../src/subproviders/debug_subprovider';
|
|
|
|
chaiSetup.configure();
|
|
const expect = chai.expect;
|
|
|
|
const blankCallback = () => {
|
|
return;
|
|
};
|
|
|
|
describe('DebugSubprovider', () => {
|
|
describe('sends debug message to callback', async () => {
|
|
let sentDebugData: DebugPayload | undefined;
|
|
const debugCallback = (curDebugData: DebugPayload) => {
|
|
sentDebugData = curDebugData;
|
|
return;
|
|
};
|
|
before(() => {
|
|
sentDebugData = undefined;
|
|
});
|
|
it('for ERC20 transfer', async () => {
|
|
const fixtureRpcPayload = fixtureData.ERC20_TRANSFER_RPC_PAYLOAD;
|
|
const debugSubprovider = new DebugSubprovider(debugCallback);
|
|
await debugSubprovider.handleRequest(fixtureRpcPayload, blankCallback, blankCallback);
|
|
|
|
if (!sentDebugData) {
|
|
fail('No debug data sent');
|
|
} else {
|
|
expect(sentDebugData.id).to.eql(fixtureRpcPayload.id);
|
|
expect(sentDebugData.jsonrpc).to.eql(fixtureRpcPayload.jsonrpc);
|
|
expect(sentDebugData.params).to.eql(fixtureRpcPayload.params);
|
|
expect(sentDebugData.method).to.eql(fixtureRpcPayload.method);
|
|
|
|
const rawTxnAttrs = sentDebugData.rawTransactionAttributes;
|
|
if (!rawTxnAttrs) {
|
|
fail('No rawTransactionAttributes');
|
|
} else {
|
|
expect(rawTxnAttrs.gasLimit).to.eql('37428');
|
|
expect(rawTxnAttrs.gasPrice).to.eql('1000000000');
|
|
expect(rawTxnAttrs.nonce).to.eql('32');
|
|
expect(rawTxnAttrs.value).to.eql('0');
|
|
expect(rawTxnAttrs.to).to.eql('0x2002d3812f58e35f0ea1ffbf80a75a38c32175fa');
|
|
}
|
|
}
|
|
});
|
|
it('for eth_blockNumber command', async () => {
|
|
const fixtureRpcPayload = fixtureData.ETH_GETBLOCK_RPC_PAYLOAD;
|
|
const debugSubprovider = new DebugSubprovider(debugCallback);
|
|
await debugSubprovider.handleRequest(fixtureRpcPayload, blankCallback, blankCallback);
|
|
|
|
if (!sentDebugData) {
|
|
fail('No debug data sent');
|
|
} else {
|
|
expect(sentDebugData).to.eql(fixtureRpcPayload);
|
|
}
|
|
});
|
|
it('for regular ETH transfer', async () => {
|
|
const fixtureRpcPayload = fixtureData.ETH_TRANSFER_PAYLOAD;
|
|
const debugSubprovider = new DebugSubprovider(debugCallback);
|
|
await debugSubprovider.handleRequest(fixtureRpcPayload, blankCallback, blankCallback);
|
|
|
|
if (!sentDebugData) {
|
|
fail('No debug data sent');
|
|
} else {
|
|
expect(sentDebugData.id).to.eql(fixtureRpcPayload.id);
|
|
expect(sentDebugData.jsonrpc).to.eql(fixtureRpcPayload.jsonrpc);
|
|
expect(sentDebugData.params).to.eql(fixtureRpcPayload.params);
|
|
expect(sentDebugData.method).to.eql(fixtureRpcPayload.method);
|
|
|
|
const rawTxnAttrs = sentDebugData.rawTransactionAttributes;
|
|
if (!rawTxnAttrs) {
|
|
fail('No rawTransactionAttributes');
|
|
} else {
|
|
expect(rawTxnAttrs.gasLimit).to.eql('21000');
|
|
expect(rawTxnAttrs.gasPrice).to.eql('8000000000');
|
|
expect(rawTxnAttrs.nonce).to.eql('38');
|
|
expect(rawTxnAttrs.value).to.eql('410000000000000');
|
|
expect(rawTxnAttrs.to).to.eql('0x8a333a18b924554d6e83ef9e9944de6260f61d3b');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
});
|