diff --git a/Request-Matching-GraphQLMatcher.md b/Request-Matching-GraphQLMatcher.md new file mode 100644 index 0000000..cb6ec84 --- /dev/null +++ b/Request-Matching-GraphQLMatcher.md @@ -0,0 +1,74 @@ +## GraphQL Schema (GraphQLMatcher) +Can be used to match a GraphQL Query or Mutation using GraphQAL Schema. + +#### C# option +```csharp +var TestSchema = @" + input MessageInput { + content: String + author: String + } + + type Message { + id: ID! + content: String + author: String + } + + type Mutation { + createMessage(input: MessageInput): Message + updateMessage(id: ID!, input: MessageInput): Message + } + + type Query { + greeting:String + students:[Student] + studentById(id:ID!):Student + } + + type Student { + id:ID! + firstName:String + lastName:String + fullName:String + }"; + +var server = WireMockServer.Start(); +server + .Given(Request.Create() + .WithPath("/graphql") + .UsingPost() + .WithGraphQLSchema(TestSchema) + ) + .RespondWith(Response.Create() + .WithBody("GraphQL is ok") + ); +``` + +#### JSON Mapping option +``` json +{ + "Guid": "5a36d1c1-11df-4976-90f9-22cae5dadb38", + "UpdatedAt": "2023-07-08T17:02:06.1072879Z", + "Request": { + "Path": { + "Matchers": [ + { + "Name": "WildcardMatcher", + "Pattern": "/graphql", + "IgnoreCase": false + } + ] + }, + "Methods": [ + "POST" + ], + "Body": { + "Matcher": { + "Name": "GraphQLMatcher", + "Pattern": "\r\n input MessageInput {\r\n content: String\r\n author: String\r\n }\r\n\r\n type Message {\r\n id: ID!\r\n content: String\r\n author: String\r\n }\r\n\r\n type Mutation {\r\n createMessage(input: MessageInput): Message\r\n updateMessage(id: ID!, input: MessageInput): Message\r\n }\r\n\r\n type Query {\r\n greeting:String\r\n students:[Student]\r\n studentById(id:ID!):Student\r\n }\r\n\r\n type Student {\r\n id:ID!\r\n firstName:String\r\n lastName:String\r\n fullName:String \r\n }" + } + } + } +} +``` \ No newline at end of file