mirror of
https://github.com/pezkuwichain/pezkuwi-api.git
synced 2026-10-26 13:19:50 +00:00
36 lines
965 B
TypeScript
36 lines
965 B
TypeScript
// Copyright 2017-2026 @pezkuwi/rpc-provider authors & contributors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import type { Mock } from './types.js';
|
|
|
|
import nock from 'nock';
|
|
|
|
interface Request {
|
|
code?: number;
|
|
method: string;
|
|
reply?: Record<string, unknown>;
|
|
}
|
|
|
|
interface HttpMock extends Mock {
|
|
post: (uri: string) => {
|
|
reply: (code: number, handler: (uri: string, body: { id: string }) => unknown) => HttpMock
|
|
}
|
|
}
|
|
|
|
export const TEST_HTTP_URL = 'http://localhost:9944';
|
|
|
|
export function mockHttp (requests: Request[]): Mock {
|
|
nock.cleanAll();
|
|
|
|
return requests.reduce((scope: HttpMock, request: Request) =>
|
|
scope
|
|
.post('/')
|
|
.reply(request.code || 200, (_uri: string, body: { id: string }) => {
|
|
scope.body = scope.body || {};
|
|
scope.body[request.method] = body;
|
|
|
|
return Object.assign({ id: body.id, jsonrpc: '2.0' }, request.reply || {}) as unknown;
|
|
}),
|
|
nock(TEST_HTTP_URL) as unknown as HttpMock);
|
|
}
|