| import { IncomingHttpHeaders } from './header' |
| import Dispatcher from './dispatcher'; |
| import { BodyInit, Headers } from './fetch' |
| |
| export { |
| Interceptable, |
| MockInterceptor, |
| MockScope |
| } |
| |
| /** The scope associated with a mock dispatch. */ |
| declare class MockScope<TData extends object = object> { |
| constructor(mockDispatch: MockInterceptor.MockDispatch<TData>); |
| /** Delay a reply by a set amount of time in ms. */ |
| delay(waitInMs: number): MockScope<TData>; |
| /** Persist the defined mock data for the associated reply. It will return the defined mock data indefinitely. */ |
| persist(): MockScope<TData>; |
| /** Define a reply for a set amount of matching requests. */ |
| times(repeatTimes: number): MockScope<TData>; |
| } |
| |
| /** The interceptor for a Mock. */ |
| declare class MockInterceptor { |
| constructor(options: MockInterceptor.Options, mockDispatches: MockInterceptor.MockDispatch[]); |
| /** Mock an undici request with the defined reply. */ |
| reply<TData extends object = object>(replyOptionsCallback: MockInterceptor.MockReplyOptionsCallback<TData>): MockScope<TData>; |
| reply<TData extends object = object>( |
| statusCode: number, |
| data?: TData | Buffer | string | MockInterceptor.MockResponseDataHandler<TData>, |
| responseOptions?: MockInterceptor.MockResponseOptions |
| ): MockScope<TData>; |
| /** Mock an undici request by throwing the defined reply error. */ |
| replyWithError<TError extends Error = Error>(error: TError): MockScope; |
| /** Set default reply headers on the interceptor for subsequent mocked replies. */ |
| defaultReplyHeaders(headers: IncomingHttpHeaders): MockInterceptor; |
| /** Set default reply trailers on the interceptor for subsequent mocked replies. */ |
| defaultReplyTrailers(trailers: Record<string, string>): MockInterceptor; |
| /** Set automatically calculated content-length header on subsequent mocked replies. */ |
| replyContentLength(): MockInterceptor; |
| } |
| |
| declare namespace MockInterceptor { |
| /** MockInterceptor options. */ |
| export interface Options { |
| /** Path to intercept on. */ |
| path: string | RegExp | ((path: string) => boolean); |
| /** Method to intercept on. Defaults to GET. */ |
| method?: string | RegExp | ((method: string) => boolean); |
| /** Body to intercept on. */ |
| body?: string | RegExp | ((body: string) => boolean); |
| /** Headers to intercept on. */ |
| headers?: Record<string, string | RegExp | ((body: string) => boolean)> | ((headers: Record<string, string>) => boolean); |
| /** Query params to intercept on */ |
| query?: Record<string, any>; |
| } |
| export interface MockDispatch<TData extends object = object, TError extends Error = Error> extends Options { |
| times: number | null; |
| persist: boolean; |
| consumed: boolean; |
| data: MockDispatchData<TData, TError>; |
| } |
| export interface MockDispatchData<TData extends object = object, TError extends Error = Error> extends MockResponseOptions { |
| error: TError | null; |
| statusCode?: number; |
| data?: TData | string; |
| } |
| export interface MockResponseOptions { |
| headers?: IncomingHttpHeaders; |
| trailers?: Record<string, string>; |
| } |
| |
| export interface MockResponseCallbackOptions { |
| path: string; |
| origin: string; |
| method: string; |
| body?: BodyInit | Dispatcher.DispatchOptions['body']; |
| headers: Headers | Record<string, string>; |
| maxRedirections: number; |
| } |
| |
| export type MockResponseDataHandler<TData extends object = object> = ( |
| opts: MockResponseCallbackOptions |
| ) => TData | Buffer | string; |
| |
| export type MockReplyOptionsCallback<TData extends object = object> = ( |
| opts: MockResponseCallbackOptions |
| ) => { statusCode: number, data?: TData | Buffer | string, responseOptions?: MockResponseOptions } |
| } |
| |
| interface Interceptable extends Dispatcher { |
| /** Intercepts any matching requests that use the same origin as this mock client. */ |
| intercept(options: MockInterceptor.Options): MockInterceptor; |
| } |