Exemple #1
0
        public async Task HttpPost_EnumArgument()
        {
            // arrange
            TestServer server  = CreateTestServer();
            var        request = new ClientQueryRequest
            {
                Query     = "query a($a: TestEnum) { withEnum(test: $a) }",
                Variables = JObject.FromObject(new Dictionary <string, object>
                {
                    { "a", "A" }
                })
            };

            // act
            HttpResponseMessage message = await server
                                          .SendRequestAsync(request)
                                          .ConfigureAwait(false);

            // assert
            Assert.Equal(HttpStatusCode.OK, message.StatusCode);

            string json = await message.Content.ReadAsStringAsync()
                          .ConfigureAwait(false);

            ClientQueryResult result = JsonConvert
                                       .DeserializeObject <ClientQueryResult>(json);

            Assert.Null(result.Errors);
            result.MatchSnapshot();
        }
Exemple #2
0
        public async Task HttpPost_Path(
            string path,
            string requestPath,
            HttpStatusCode httpStatus)
        {
            // arrange
            TestServer server  = CreateStarWarsServer(path);
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    query a {
                        hero {
                            name
                        }
                    }
                "
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request, requestPath);

            // assert
            Assert.Equal(httpStatus, message.StatusCode);

            if (message.StatusCode == HttpStatusCode.OK)
            {
                ClientQueryResult result = await DeserializeAsync(message);

                result.MatchSnapshot(new SnapshotNameExtension(
                                         path?.Replace("/", "_Slash_"),
                                         requestPath?.Replace("/", "_Slash_")));
            }
        }
Exemple #3
0
        public async Task HttpPost_Casing()
        {
            // arrange
            TestServer server  = CreateTestServer();
            var        request = new ClientQueryRequest {
                Query = "{ A:basic { B:a } }"
            };

            // act
            HttpResponseMessage message = await server
                                          .SendRequestAsync(request)
                                          .ConfigureAwait(false);

            // assert
            Assert.Equal(HttpStatusCode.OK, message.StatusCode);

            string json = await message.Content.ReadAsStringAsync()
                          .ConfigureAwait(false);

            ClientQueryResult result = JsonConvert
                                       .DeserializeObject <ClientQueryResult>(json);

            Assert.Null(result.Errors);
            result.MatchSnapshot();
        }
Exemple #4
0
        public async Task HttpPost_Json_QueryAndStringVariable()
        {
            // arrange
            TestServer server  = CreateStarWarsServer();
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    query h($id: String!) {
                        human(id: $id) {
                            name
                        }
                    }
                ",
                Variables = new Dictionary <string, object>
                {
                    { "id", "1000" }
                }
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request);

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot();
        }
Exemple #5
0
        public async Task HttpPost_Json_QueryAndEnumVariable()
        {
            // arrange
            TestServer server  = CreateStarWarsServer();
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    query h($episode: Episode) {
                        hero(episode: $episode) {
                            name
                        }
                    }
                ",
                Variables = new Dictionary <string, object>
                {
                    { "episode", "EMPIRE" }
                }
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request);

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot();
        }
Exemple #6
0
        public async Task HttpPost_Json_CachedQuery_NotFound()
        {
            // arrange
            TestServer server  = CreateStarWarsServer();
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    query a {
                        hero {
                            name
                        }
                    }
                ".Replace("\n", string.Empty).Replace("\r", string.Empty),
                NamedQuery = "abc"
            };

            HttpResponseMessage message =
                await server.SendPostRequestAsync(request);

            // act
            request = new ClientQueryRequest
            {
                NamedQuery = "abc"
            };

            message = await server.SendPostRequestAsync(request);

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot();
        }
Exemple #7
0
        public async Task HttpPost_Json_QueryOnly()
        {
            // arrange
            TestServer server  = CreateStarWarsServer();
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    {
                        hero {
                            name
                        }
                    }
                "
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request);

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot();
        }
Exemple #8
0
        public async Task HttpPost_Json_QueryAndOperationName(
            string operationName)
        {
            // arrange
            TestServer server  = CreateStarWarsServer();
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    query a {
                        a: hero {
                            name
                        }
                    }

                    query b {
                        b: hero {
                            name
                        }
                    }
                ",
                OperationName = operationName
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request);

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot(new SnapshotNameExtension(operationName));
        }
Exemple #9
0
        public async Task HttpPost_Ensure_Response_Casing_Alignes_With_Request()
        {
            // arrange
            TestServer server  = CreateStarWarsServer();
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    {
                        Hero: hero {
                            name
                        }
                    }
                "
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request);

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot();
        }
        public async Task UseGraphQLHttpPost_BuilderServicesOptions()
        {
            // arrange
            TestServer server = ServerFactory.Create(
                services => services.AddStarWars(),
                (app, sp) => app.UseGraphQLHttpPost(
                    sp,
                    new HttpPostMiddlewareOptions
            {
                Path = new PathString("/foo")
            }));

            var request = new ClientQueryRequest
            {
                Query =
                    @"
                    {
                        hero {
                            name
                        }
                    }
                "
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request, "foo");

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot();
        }
Exemple #11
0
        public async Task HttpPost_WithObjectVariables()
        {
            // arrange
            TestServer server  = CreateTestServer();
            var        request = new ClientQueryRequest
            {
                Query     = @"
                query test($a: FooInput!) {
                    withObjectArgument(b: $a) {
                        a
                        b
                        c
                    }
                }",
                Variables = JObject.FromObject(new Dictionary <string, object>
                {
                    { "a", new Dictionary <string, object> {
                          { "a", "44" },
                          { "b", "55" },
                          { "c", 66 }
                      } }
                })
            };

            // act
            HttpResponseMessage message = await server
                                          .SendRequestAsync(request)
                                          .ConfigureAwait(false);

            // assert
            Assert.Equal(HttpStatusCode.OK, message.StatusCode);

            string json = await message.Content.ReadAsStringAsync()
                          .ConfigureAwait(false);

            ClientQueryResult result = JsonConvert
                                       .DeserializeObject <ClientQueryResult>(json);

            Assert.Null(result.Errors);
            result.MatchSnapshot();
        }
Exemple #12
0
        public async Task HttpPost_Json_Unused_Variable()
        {
            // arrange
            TestServer server  = CreateStarWarsServer();
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    mutation CreateReviewForEpisode(
                        $ep: Episode!
                        $stars: Int!
                        $commentary: String!
                        $foo: Float) {
                        createReview(episode: $ep, review: {
                            stars: $stars
                            commentary: $commentary
                        } ) {
                            stars
                            commentary
                        }
                    }
                ",
                Variables = new Dictionary <string, object>
                {
                    { "ep", "EMPIRE" },
                    { "stars", 5 },
                    { "commentary", "This is a great movie!" }
                }
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request);

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot();
        }
Exemple #13
0
        public async Task HttpPost_Json_OnSubPath_PostOnInvalidPath()
        {
            // arrange
            TestServer server  = CreateStarWarsServer("/foo");
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    {
                        hero {
                            name
                        }
                    }
                "
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request, "bar");

            // assert
            Assert.Equal(HttpStatusCode.NotFound, message.StatusCode);
        }
Exemple #14
0
        public async Task HttpPost_Json_Variable_NonNull_Violation()
        {
            // arrange
            TestServer server  = CreateStarWarsServer();
            var        request = new ClientQueryRequest
            {
                Query =
                    @"
                    mutation CreateReviewForEpisode(
                        $ep: Episode!
                        $review: ReviewInput!) {
                        createReview(episode: $ep, review: $review) {
                            stars
                            commentary
                        }
                    }
                ",
                Variables = new Dictionary <string, object>
                {
                    { "review",
                      new Dictionary <string, object>
                      {
                          { "stars", 5 },
                          { "commentary", "This is a great movie!" },
                      } }
                }
            };

            // act
            HttpResponseMessage message =
                await server.SendPostRequestAsync(request);

            // assert
            ClientQueryResult result = await DeserializeAsync(message);

            result.MatchSnapshot();
        }