Commit Graph

55 Commits

Author SHA1 Message Date
rstoyanchev
78f7df2736 Consistently check errors in GraphQlTester
Closes gh-891
2024-01-30 09:24:26 +00:00
rstoyanchev
21f4520a37 Support nested paths in GraphQlTester
Closes gh-457
2023-05-07 21:19:03 +01:00
rstoyanchev
dc90558d9a Configure ExecutionInput in ExecutionGraphQlServiceTester
Closes gh-615
2023-02-16 18:20:45 +00:00
rstoyanchev
560c2b53f2 Polishing contribution
Closes gh-507
2022-10-17 16:58:56 +01:00
Koen Punt
da21f7438c Print actual elements in GraphQlTester
See gh-507
2022-10-17 16:32:42 +01:00
rstoyanchev
ed8c27923f Fix cyclic dependencies and polishing 2022-05-16 11:58:36 +01:00
Brian Clozel
c2c6ae6547 Expose map of "extensions" in GraphQlRequest
This commit adds support for protocol, vendor specific protocol
extensions in the GraphQL client requests.

Closes gh-371
2022-05-16 11:32:32 +02:00
rstoyanchev
b07e4fdd64 Avoid using JSONPath#getPath()
It does not return the original path and omits expressions.

Closes gh-377
2022-05-13 02:24:04 +01:00
rstoyanchev
218b16e022 JSON config in ExecutionGraphQlServiceTester builder
See gh-345
2022-04-12 15:15:07 +01:00
rstoyanchev
696f2cd02f Refine documentSource locations
Closes gh-338
2022-04-01 21:39:42 +01:00
rstoyanchev
9289f0a1b5 Add MockExecutionGraphQlService in testFixtures 2022-04-01 06:23:39 +01:00
rstoyanchev
b3f13b978a Refactoring in Client and Tester builder implementations
The default transport-specific client and tester extensions contained
their builder implementations, but it makes more sense the other way
around since the extensions are mainly about the builders they provide.
2022-03-29 14:47:35 +01:00
rstoyanchev
d41ced23c4 Add RSocketGraphQlTester
See gh-339
2022-03-29 11:49:54 +01:00
rstoyanchev
eb9a369f00 Rename ~.web package to ~.server
Now that RSocket is included, it's more obvious it's not just web.

See gh-339
2022-03-28 09:07:47 +01:00
rstoyanchev
6584b88301 Shorten names of [Web|RSocket]GraphQlHandlerInterceptor
See gh-339
2022-03-28 09:07:11 +01:00
rstoyanchev
4d50ecd6f1 Revise JSON path options in GraphQlTester
Closes gh-278
2022-03-21 11:34:04 +00:00
rstoyanchev
3d638918f4 Polishing
Closes gh-327
2022-03-21 10:05:28 +00:00
rstoyanchev
dfff40085c Rename [Web|Socket]Interceptor
Use more qualified names [Web|Socket]GraphQlHandlerInterceptor to
differentiate with ClientGraphQlInterceptor and to align with other
types in the same package.
2022-03-21 09:04:52 +00:00
rstoyanchev
91e7f285fa Shorten GraphQlResponse[Field|Error] and rename GraphQlService
Rename GraphQlService to ExecutionGraphQlService following the renaming
of the request and response to ExecutionGraphQl[Request|Response].

See gh-332
2022-03-21 04:23:59 +00:00
rstoyanchev
67711f7331 Rename Web[Input|Output] to WebGraphQl[Request|Response]
See gh-332
2022-03-21 04:23:34 +00:00
rstoyanchev
182e9e66f0 Extract ExecutionGraphQl[Request|Response] interfaces
Rename the implementation classes Request[Input|Output] accordingly to
match the interfaces, and move them into the support package.

Create AbstractGraphQlResponse in the support package that
pre-implements response field access.

This leaves mainly contracts in the top-level package.

See gh-332
2022-03-21 04:22:01 +00:00
rstoyanchev
f6b9fdfe7c Fix issue with matchesJson when JSONPath is a String
GraphQlTransport returns ExecutionResult with parsed JSON so for the
most part having MappingProvider is enough. However, when a JSONPath
evaluates to String (vs Map or List), the JsonSmartJsonProvider used by
default, throws UnsupportedOperationException from toJson.
2022-03-09 12:47:26 +00:00
Brian Clozel
c6d10d3ab8 Check for missing errors in GraphQlTester#executeAndVerify
Prior to this commit, the `GraphQlTester#executeAndVerify` method would
check that an `"$.errors"` JSON path exists within the response and
contains no value.

This should fail with valid GraphQL responses, as the spec says that a
response with no error should not contain the errors map at all:
http://spec.graphql.org/draft/#sec-Errors

This commit changes the assertion and instead checks for the absence of
the errors map in the response.

Fixes gh-318
2022-03-07 22:42:36 +01:00
rstoyanchev
1559c5989e Adapt CodecConfigurer to JSONPath MappingProvider
The JSON Encoder and Decoder implementations configured via
CodecConfigurer for HTTP and WebSocket are adapted to a JSONPath
MappingProvider and now automatically registered in JSONPath
configuration.

See gh-10, see gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
50c71d03fc Move TestWebSocketClient to testFixtures 2022-03-07 10:39:59 +00:00
rstoyanchev
d063eb760a Simplify filtered error handling in GraphQlTester
See gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
e67cb5885e Rename ~Spec in GraphQlClient and GraphQlTester
As these are expected to be used as local variables, "Spec" reduces
readability and the IDE creates variables called "spec", which
increases that effect. Given those are nested within `GraphQlClient`
and `GraphQlTester`, it makes sense to drop the spec part and local
variable names such as request and response make sense.

See gh-10, see gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
53fb1d4dc0 Update and expand GraphQlTester tests
See gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
b49c63f376 Extract GraphQlRequest and rename "query" to "document"
Extract GraphQlRequest, as a parent of RequestInput, that holds the
actual request inputs sent from the client side. RequestInput then
adds server-side transport details and ExecutionInput support.

Also replace "query" with "document" in GraphQlRequest and in
GraphQlClient.

Closes gh-310
2022-03-07 10:39:59 +00:00
rstoyanchev
2095e1795f Refine valueIsEmpty check 2022-02-08 17:02:30 +00:00
rstoyanchev
22985efe6a Expose ExecutionInput in WebOutput
WebOutput now exposes the ExecutionInput prepared for the request and
no longer provides access to the WebInput which is already available
to a WebInterceptor.

Closes gh-229
2022-01-10 10:10:49 +00:00
rstoyanchev
c84f342daf Extract RequestOutput base class
See gh-229
2022-01-10 10:10:49 +00:00
rstoyanchev
c9d41ce955 WebGraphQlTester allows charset in response MediaType
Closes gh-247
2022-01-10 10:10:49 +00:00
Brian Clozel
2e4158cae8 Set ExecutionId on web requests
Prior to this commit, the `WebInput` would hold an `id` attribute that
correlate the request and response messages on a multiplexed connection.

This commit moves this concept directly to the `RequestInput` so that it
can be used as an `ExecutionId` for all types of transports, if
availble.

This id was already set on the `WebInput` in the WebFlux case with the
id coming from the exchange, but it also creates an id and set it for
the MVC case. This id is then propagated to GraphQL's `ExecutionInput`.

See gh-183
2021-11-23 20:10:53 +01:00
Rossen Stoyanchev
0df1884500 Add option for expected errors to GraphQlTester
Closes: gh-175
2021-11-16 21:43:52 +00:00
Rossen Stoyanchev
5aac81c003 Polishing contribution
Closes gh-176
2021-11-03 17:25:26 +00:00
Koen Punt
a06ebdcd9c Allow variables with null values in GraphQlTester
See gh-176
2021-11-03 17:25:26 +00:00
Rossen Stoyanchev
2c8638dd6a HTTP handlers set Locale in ExecutionInput
See gh-3
2021-11-01 18:17:44 +00:00
Rossen Stoyanchev
20bae75ed8 Add WebSocketInterceptor
See gh-162
2021-10-20 21:21:31 +01:00
Rossen Stoyanchev
21d9791484 Update reference docs for access to HTTP headers
Also rename existing methods for request headers to be consistent with
those for response headers and use "Http" in the name.

Closes gh-74
2021-10-01 17:36:49 +01:00
Rossen Stoyanchev
65b5ff9a7c WebGraphQlTester exposes HTTP response headers
Closes gh-74
2021-10-01 17:36:49 +01:00
Rossen Stoyanchev
69c2d08c71 Remove formatter-on/off comments 2021-07-06 15:51:50 +01:00
Rossen Stoyanchev
04d6a72eec Use RequestInput as the input for GraphQlService 2021-07-02 21:20:09 +01:00
Rossen Stoyanchev
0b71596aa5 Global error filter in GraphQlTester.Builder
See gh-66
2021-06-27 21:50:37 +01:00
Rossen Stoyanchev
5cd1e266b4 Parameterize GraphQlTester.RequestSpec
This ensures that the order in which inputs are provided, i.e. whether
taken from the base RequestSpec or the Web subtype doesn't matter.

See gh-64
2021-06-27 21:50:00 +01:00
Rossen Stoyanchev
56ccaf685b GraphQlTester and WebGraphQlTester builders
Closes gh-66
2021-06-27 21:49:40 +01:00
Rossen Stoyanchev
410948bde3 Undo more auto-formatting changes 2021-06-26 17:48:00 +01:00
Rossen Stoyanchev
de234c94c4 Decouple GraphQlTester from Web details
Closes gh-65
2021-06-26 05:16:35 +01:00
Brian Clozel
39937679e3 Apply Spring JavaFormat to Spring GraphQL Test
See gh-54
2021-06-02 14:30:00 +02:00
Rossen Stoyanchev
484fb932ef Replace QL with Ql for consistency with Spring naming 2021-05-14 21:32:54 +01:00