mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-01 21:57:06 +01:00
26db0aee46
In order to be able to better compare differences between the version of NetworkController in this repo and the version in the `core` repo before we replace this version with the `core` version, this commit converts the NetworkController network client tests to TypeScript. The added types here are copied from the `core` repo. We plan on making more improvements on the `core` side at some point to polish the tests and types and reduce some of the duplication, but for now we're just trying to keep things as similar as possible.
64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
/* eslint-disable jest/require-top-level-describe, jest/no-export */
|
|
|
|
import { fill } from 'lodash';
|
|
import {
|
|
ProviderType,
|
|
withMockedCommunications,
|
|
withNetworkClient,
|
|
} from './helpers';
|
|
|
|
type TestsForRpcMethodNotHandledByMiddlewareOptions = {
|
|
providerType: ProviderType;
|
|
numberOfParameters: number;
|
|
};
|
|
|
|
/**
|
|
* Defines tests which exercise the behavior exhibited by an RPC method that
|
|
* is not handled specially by the network client middleware.
|
|
*
|
|
* @param method - The name of the RPC method under test.
|
|
* @param additionalArgs - Additional arguments.
|
|
* @param additionalArgs.providerType - The type of provider being tested;
|
|
* either `infura` or `custom`.
|
|
* @param additionalArgs.numberOfParameters - The number of parameters that this
|
|
* RPC method takes.
|
|
*/
|
|
export function testsForRpcMethodNotHandledByMiddleware(
|
|
method: string,
|
|
{
|
|
providerType,
|
|
numberOfParameters,
|
|
}: TestsForRpcMethodNotHandledByMiddlewareOptions,
|
|
) {
|
|
if (providerType !== 'infura' && providerType !== 'custom') {
|
|
throw new Error(
|
|
`providerType must be either "infura" or "custom", was "${providerType}" instead`,
|
|
);
|
|
}
|
|
|
|
it('attempts to pass the request off to the RPC endpoint', async () => {
|
|
const request = {
|
|
method,
|
|
params: fill(Array(numberOfParameters), 'some value'),
|
|
};
|
|
const expectedResult = 'the result';
|
|
|
|
await withMockedCommunications({ providerType }, async (comms) => {
|
|
// The first time a block-cacheable request is made, the latest block
|
|
// number is retrieved through the block tracker first. It doesn't
|
|
// matter what this is — it's just used as a cache key.
|
|
comms.mockNextBlockTrackerRequest();
|
|
comms.mockRpcCall({
|
|
request,
|
|
response: { result: expectedResult },
|
|
});
|
|
const actualResult = await withNetworkClient(
|
|
{ providerType },
|
|
({ makeRpcCall }) => makeRpcCall(request),
|
|
);
|
|
|
|
expect(actualResult).toStrictEqual(expectedResult);
|
|
});
|
|
});
|
|
}
|