UNPKG

@pact-foundation/pact

Version:
104 lines (103 loc) 5.32 kB
import type { AnyJson, JsonMap } from '../../common/jsonTypes'; import type { Metadata } from '../../dsl/message'; import type { Rules } from '../../v3/types'; export type MessageContents = { content: AnyJson | Buffer; }; export type Comment = string; export type CustomComment = { key: string; value: string; }; export interface SynchronousMessage { Request: MessageContents; Response: MessageContents[]; } export interface AsynchronousMessage { contents: MessageContents; metadata: Metadata; } export interface PluginConfig { plugin: string; version: string; } export interface TransportConfig { port: number; address: string; } export type V4AsynchronousMessageBuilderFunc = (builder: V4AsynchronousMessageBuilder) => void; export type V4MessageRequestBuilderFunc = (builder: V4SynchronousMessageWithRequestBuilder) => void; export type V4MessageResponseBuilderFunc = (builder: V4SynchronousMessageWithResponseBuilder) => void; export interface V4SynchronousPact { addSynchronousMessage(description: string): V4UnconfiguredSynchronousMessage; } export interface V4UnconfiguredSynchronousMessage { given(state: string, parameters?: JsonMap): V4UnconfiguredSynchronousMessage; pending(pending?: boolean): V4UnconfiguredSynchronousMessage; comment(comment: Comment | CustomComment): V4UnconfiguredSynchronousMessage; testName(name: string): V4UnconfiguredSynchronousMessage; reference(group: string, name: string, value: string): V4UnconfiguredSynchronousMessage; usingPlugin(config: PluginConfig): V4SynchronousMessageWithPlugin; withRequest(r: V4MessageRequestBuilderFunc): V4SynchronousMessageWithRequest; } export interface V4SynchronousMessageWithPlugin { usingPlugin(config: PluginConfig): V4SynchronousMessageWithPlugin; withPluginContents(contents: string, contentType: string): V4SynchronousMessageWithPluginContents; } export interface V4Message { withMetadata(metadata: Metadata): V4Message; } export interface V4SynchronousMessageWithRequestBuilder { withContent(contentType: string, body: Buffer): V4SynchronousMessageWithRequestBuilder; withJSONContent(content: unknown): V4SynchronousMessageWithRequestBuilder; withMatchingRules(rules: Rules): V4SynchronousMessageWithRequestBuilder; } export interface V4SynchronousMessageWithRequest { withResponse(builder: V4MessageResponseBuilderFunc): V4SynchronousMessageWithResponse; } export interface V4SynchronousMessageWithResponseBuilder { withMetadata(metadata: Metadata): V4SynchronousMessageWithResponseBuilder; withContent(contentType: string, body: Buffer): V4SynchronousMessageWithResponseBuilder; withJSONContent(content: unknown): V4SynchronousMessageWithResponseBuilder; withMatchingRules(rules: Rules): V4SynchronousMessageWithResponseBuilder; } export interface V4SynchronousMessageWithPluginContents { executeTest<T>(integrationTest: (m: SynchronousMessage) => Promise<T>): Promise<T | undefined>; startTransport(transport: string, address: string, config?: AnyJson): V4SynchronousMessageWithTransport; } export interface V4SynchronousMessageWithTransport { executeTest<T>(integrationTest: (tc: TransportConfig, m: SynchronousMessage) => Promise<T>): Promise<T | undefined>; } export interface V4SynchronousMessageWithResponse { executeTest<T>(integrationTest: (m: SynchronousMessage) => Promise<T>): Promise<T | undefined>; } export interface V4UnconfiguredAsynchronousMessage { given(state: string, parameters?: JsonMap): V4UnconfiguredAsynchronousMessage; pending(pending?: boolean): V4UnconfiguredAsynchronousMessage; comment(comment: Comment | CustomComment): V4UnconfiguredAsynchronousMessage; testName(name: string): V4UnconfiguredAsynchronousMessage; reference(group: string, name: string, value: string): V4UnconfiguredAsynchronousMessage; usingPlugin(config: PluginConfig): V4AsynchronousMessageWithPlugin; expectsToReceive(description: string, contents: V4AsynchronousMessageBuilderFunc): V4AsynchronousMessageWithContent; } export interface V4AsynchronousMessageWithPlugin { usingPlugin(config: PluginConfig): V4AsynchronousMessageWithPlugin; expectsToReceive(description: string): V4AsynchronousMessageWithPlugin; withPluginContents(contents: string, contentType: string): V4AsynchronousMessageWithPluginContents; } export interface V4AsynchronousMessageWithPluginContents { executeTest<T>(integrationTest: (m: AsynchronousMessage) => Promise<T>): Promise<T | undefined>; startTransport(transport: string, address: string, config?: AnyJson): V4AsynchronousMessageWithTransport; } export interface V4AsynchronousMessageWithTransport { executeTest<T>(integrationTest: (tc: TransportConfig, m: AsynchronousMessage) => Promise<T>): Promise<T | undefined>; } export interface V4AsynchronousMessageWithContent { executeTest<T>(integrationTest: (m: AsynchronousMessage) => Promise<T>): Promise<T | undefined>; } export interface V4AsynchronousMessageBuilder { withMetadata(metadata: Metadata): V4AsynchronousMessageBuilder; withContent(contentType: string, body: Buffer): V4AsynchronousMessageBuilder; withJSONContent(content: unknown): V4AsynchronousMessageBuilder; withMatchingRules(rules: Rules): V4AsynchronousMessageBuilder; }