Files
protocol/packages/subproviders/test/unit/debug_subprovider_test.ts

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');
}
}
});
});
});