mockttp
Version:
Mock HTTP server for testing HTTP clients and stubbing webservices
215 lines • 7.93 kB
TypeScript
import { MaybePromise } from '@httptoolkit/util';
import { CompletedRequest, Method, Explainable, OngoingRequest } from "../types";
import { Serializable, ClientServerChannel } from "../serialization/serialization";
import { MockttpDeserializationOptions } from "../rules/rule-deserialization";
export interface RequestMatcher extends Explainable, Serializable {
type: keyof typeof MatcherLookup;
matches(request: OngoingRequest): MaybePromise<boolean>;
}
export interface SerializedCallbackMatcherData {
type: string;
name?: string;
version?: number;
}
export declare class WildcardMatcher extends Serializable implements RequestMatcher {
readonly type = "wildcard";
matches(): boolean;
explain(): string;
}
export declare class MethodMatcher extends Serializable implements RequestMatcher {
method: Method;
readonly type = "method";
constructor(method: Method);
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class ProtocolMatcher extends Serializable implements RequestMatcher {
protocol: "http" | "https" | "ws" | "wss";
readonly type = "protocol";
constructor(protocol: "http" | "https" | "ws" | "wss");
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class HostMatcher extends Serializable implements RequestMatcher {
host: string;
readonly type = "host";
constructor(host: string);
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class HostnameMatcher extends Serializable implements RequestMatcher {
readonly hostname: string;
readonly type = "hostname";
constructor(hostname: string);
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class PortMatcher extends Serializable implements RequestMatcher {
readonly type = "port";
port: string;
constructor(port: number);
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class FlexiblePathMatcher extends Serializable implements RequestMatcher {
path: string;
readonly type = "simple-path";
constructor(path: string);
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class RegexPathMatcher extends Serializable implements RequestMatcher {
readonly type = "regex-path";
readonly regexSource: string;
readonly regexFlags: string;
constructor(regex: RegExp);
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class RegexUrlMatcher extends Serializable implements RequestMatcher {
readonly type = "regex-url";
readonly regexSource: string;
readonly regexFlags: string;
constructor(regex: RegExp);
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class HeaderMatcher extends Serializable implements RequestMatcher {
readonly type = "header";
headers: {
[key: string]: string;
};
constructor(headersInput: {
[key: string]: string;
});
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class ExactQueryMatcher extends Serializable implements RequestMatcher {
query: string;
readonly type = "exact-query-string";
constructor(query: string);
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class QueryMatcher extends Serializable implements RequestMatcher {
readonly type = "query";
queryObject: {
[key: string]: string | string[];
};
constructor(queryObjectInput: {
[key: string]: string | number | (string | number)[];
});
matches(request: OngoingRequest): boolean;
explain(): string;
}
export declare class FormDataMatcher extends Serializable implements RequestMatcher {
formData: {
[key: string]: string;
};
readonly type = "form-data";
constructor(formData: {
[key: string]: string;
});
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
}
export type MultipartFieldMatchCondition = {
name?: string;
filename?: string;
content?: string | Uint8Array;
};
export declare class MultipartFormDataMatcher extends Serializable implements RequestMatcher {
matchConditions: Array<MultipartFieldMatchCondition>;
readonly type = "multipart-form-data";
constructor(matchConditions: Array<MultipartFieldMatchCondition>);
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
}
export declare class RawBodyMatcher extends Serializable implements RequestMatcher {
content: string;
readonly type = "raw-body";
constructor(content: string);
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
}
export declare class RawBodyIncludesMatcher extends Serializable implements RequestMatcher {
content: string;
readonly type = "raw-body-includes";
constructor(content: string);
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
}
export declare class RegexBodyMatcher extends Serializable implements RequestMatcher {
readonly type = "raw-body-regexp";
readonly regexString: string;
constructor(regex: RegExp);
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
}
export declare class JsonBodyMatcher extends Serializable implements RequestMatcher {
body: {};
readonly type = "json-body";
constructor(body: {});
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
}
export declare class JsonBodyFlexibleMatcher extends Serializable implements RequestMatcher {
body: {};
readonly type = "json-body-matching";
constructor(body: {});
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
}
export declare class CookieMatcher extends Serializable implements RequestMatcher {
cookie: {
[key: string]: string;
};
readonly type = "cookie";
constructor(cookie: {
[key: string]: string;
});
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
}
export declare class CallbackMatcher extends Serializable implements RequestMatcher {
callback: (request: CompletedRequest) => MaybePromise<boolean>;
readonly type = "callback";
constructor(callback: (request: CompletedRequest) => MaybePromise<boolean>);
matches(request: OngoingRequest): Promise<boolean>;
explain(): string;
/**
* @internal
*/
serialize(channel: ClientServerChannel): SerializedCallbackMatcherData;
/**
* @internal
*/
static deserialize({ name }: SerializedCallbackMatcherData, channel: ClientServerChannel, { bodySerializer }: MockttpDeserializationOptions): CallbackMatcher;
}
export declare const MatcherLookup: {
wildcard: typeof WildcardMatcher;
method: typeof MethodMatcher;
protocol: typeof ProtocolMatcher;
host: typeof HostMatcher;
hostname: typeof HostnameMatcher;
port: typeof PortMatcher;
'simple-path': typeof FlexiblePathMatcher;
'regex-path': typeof RegexPathMatcher;
'regex-url': typeof RegexUrlMatcher;
header: typeof HeaderMatcher;
query: typeof QueryMatcher;
'exact-query-string': typeof ExactQueryMatcher;
'form-data': typeof FormDataMatcher;
'multipart-form-data': typeof MultipartFormDataMatcher;
'raw-body': typeof RawBodyMatcher;
'raw-body-regexp': typeof RegexBodyMatcher;
'raw-body-includes': typeof RawBodyIncludesMatcher;
'json-body': typeof JsonBodyMatcher;
'json-body-matching': typeof JsonBodyFlexibleMatcher;
cookie: typeof CookieMatcher;
callback: typeof CallbackMatcher;
};
export declare function matchesAll(req: OngoingRequest, matchers: RequestMatcher[]): Promise<boolean>;
export declare function explainMatchers(matchers: RequestMatcher[]): string;
//# sourceMappingURL=matchers.d.ts.map