mockttp-mvs
Version:
Mock HTTP server for testing HTTP clients and stubbing webservices
212 lines (176 loc) • 4.98 kB
text/typescript
import gql from "graphql-tag";
export const MockttpSchema = gql`
extend type Query {
mockedEndpoints: [MockedEndpoint!]!
pendingEndpoints: [MockedEndpoint!]!
mockedEndpoint(id: ID!): MockedEndpoint
}
extend type Mutation {
addRule(input: MockRule!): MockedEndpoint!
addRules(input: [MockRule!]!): [MockedEndpoint!]!
setRules(input: [MockRule!]!): [MockedEndpoint!]!
setFallbackRule(input: MockRule!): MockedEndpoint!
addWebSocketRule(input: WebSocketMockRule!): MockedEndpoint!
addWebSocketRules(input: [WebSocketMockRule!]!): [MockedEndpoint!]!
setWebSocketRules(input: [WebSocketMockRule!]!): [MockedEndpoint!]!
}
extend type Subscription {
requestInitiated: InitiatedRequest!
requestReceived: Request!
responseCompleted: Response!
webSocketRequest: Request!
webSocketAccepted: Response!
webSocketMessageReceived: WebSocketMessage!
webSocketMessageSent: WebSocketMessage!
webSocketClose: WebSocketClose!
requestAborted: AbortedRequest!
tlsPassthroughOpened: TlsPassthroughEvent!
tlsPassthroughClosed: TlsPassthroughEvent!
failedTlsRequest: TlsHandshakeFailure!
failedClientRequest: ClientError!
}
type MockedEndpoint {
id: ID!
explanation: String
seenRequests: [Request!]!
isPending: Boolean!
}
input MockRule {
id: String
priority: Int
matchers: [Raw!]!
handler: Raw!
completionChecker: Raw
}
input WebSocketMockRule {
id: String
priority: Int
matchers: [Raw!]!
handler: Raw!
completionChecker: Raw
}
type TlsPassthroughEvent {
id: String!
upstreamPort: Int!
hostname: String
remoteIpAddress: String!
remotePort: Int!
tags: [String!]!
timingEvents: Json!
tlsMetadata: Json!
}
type TlsHandshakeFailure {
failureCause: String!
hostname: String
remoteIpAddress: String!
remotePort: Int!
tags: [String!]!
timingEvents: Json!
tlsMetadata: Json!
}
# Old name for TlsHandshakeFailure, kept for backward compat
type TlsRequest {
failureCause: String!
hostname: String
remoteIpAddress: String!
remotePort: Int!
tags: [String!]!
timingEvents: Json!
}
type ClientError {
errorCode: String
request: ClientErrorRequest!
response: Response
}
type ClientErrorRequest {
id: ID!
timingEvents: Json!
tags: [String!]!
protocol: String
httpVersion: String
method: String
url: String
path: String
headers: Json
rawHeaders: Json
remoteIpAddress: String!
remotePort: Int!
}
type InitiatedRequest {
id: ID!
timingEvents: Json!
tags: [String!]!
matchedRuleId: ID
protocol: String!
httpVersion: String!
method: String!
url: String!
path: String!
remoteIpAddress: String!
remotePort: Int!
hostname: String
headers: Json!
rawHeaders: Json!
}
type Request {
id: ID!
timingEvents: Json!
tags: [String!]!
matchedRuleId: ID
protocol: String!
httpVersion: String!
method: String!
url: String!
path: String!
remoteIpAddress: String!
remotePort: Int!
hostname: String
headers: Json!
rawHeaders: Json!
body: Buffer!
}
type AbortedRequest {
id: ID!
timingEvents: Json!
tags: [String!]!
matchedRuleId: ID
protocol: String!
httpVersion: String!
method: String!
url: String!
path: String!
remoteIpAddress: String!
remotePort: Int!
hostname: String
headers: Json!
rawHeaders: Json!
body: Buffer!
error: Json
}
type Response {
id: ID!
timingEvents: Json!
tags: [String!]!
statusCode: Int!
statusMessage: String!
headers: Json!
rawHeaders: Json!
body: Buffer!
}
type WebSocketMessage {
streamId: ID!
direction: String!
content: Buffer!
isBinary: Boolean!
eventTimestamp: Float!
timingEvents: Json!
tags: [String!]!
}
type WebSocketClose {
streamId: ID!
closeCode: Int
closeReason: String
timingEvents: Json!
tags: [String!]!
}
`;