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
This commit is contained in:
@@ -57,7 +57,7 @@ class SampleApplicationTests {
|
||||
@Test
|
||||
void userRoleThenForbidden() {
|
||||
this.graphQlTester.queryName("employeesNamesAndSalaries")
|
||||
.headers(headers -> headers.setBasicAuth("rob", "rob"))
|
||||
.httpHeaders(headers -> headers.setBasicAuth("rob", "rob"))
|
||||
.execute()
|
||||
.errors()
|
||||
.satisfy(errors -> {
|
||||
@@ -87,7 +87,7 @@ class SampleApplicationTests {
|
||||
@Test
|
||||
void canQuerySalaryAsAdmin() {
|
||||
this.graphQlTester.queryName("employeesNamesAndSalaries")
|
||||
.headers(headers -> headers.setBasicAuth("admin", "admin"))
|
||||
.httpHeaders(headers -> headers.setBasicAuth("admin", "admin"))
|
||||
.execute()
|
||||
.path("employees[0].name").entity(String.class).isEqualTo("Andi")
|
||||
.path("employees[0].salary").entity(int.class).isEqualTo(42);
|
||||
@@ -97,7 +97,7 @@ class SampleApplicationTests {
|
||||
void invalidCredentials() {
|
||||
assertThatThrownBy(() ->
|
||||
this.graphQlTester.queryName("employeesNamesAndSalaries")
|
||||
.headers(headers -> headers.setBasicAuth("admin", "INVALID"))
|
||||
.httpHeaders(headers -> headers.setBasicAuth("admin", "INVALID"))
|
||||
.executeAndVerify())
|
||||
.hasMessage("Status expected:<200 OK> but was:<401 UNAUTHORIZED>");
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ class SampleApplicationTests {
|
||||
@Test
|
||||
void userRoleThenForbidden() {
|
||||
this.graphQlTester.queryName("employeesNamesAndSalaries")
|
||||
.headers(headers -> headers.setBasicAuth("rob", "rob"))
|
||||
.httpHeaders(headers -> headers.setBasicAuth("rob", "rob"))
|
||||
.execute()
|
||||
.errors()
|
||||
.satisfy(errors -> {
|
||||
@@ -72,7 +72,7 @@ class SampleApplicationTests {
|
||||
@Test
|
||||
void canQuerySalaryAsAdmin() {
|
||||
this.graphQlTester.queryName("employeesNamesAndSalaries")
|
||||
.headers(headers -> headers.setBasicAuth("admin", "admin"))
|
||||
.httpHeaders(headers -> headers.setBasicAuth("admin", "admin"))
|
||||
.execute()
|
||||
.path("employees[0].name").entity(String.class).isEqualTo("Andi")
|
||||
.path("employees[0].salary").entity(int.class).isEqualTo(42);
|
||||
@@ -82,7 +82,7 @@ class SampleApplicationTests {
|
||||
void invalidCredentials() {
|
||||
assertThatThrownBy(() ->
|
||||
this.graphQlTester.queryName("employeesNamesAndSalaries")
|
||||
.headers(headers -> headers.setBasicAuth("admin", "INVALID"))
|
||||
.httpHeaders(headers -> headers.setBasicAuth("admin", "INVALID"))
|
||||
.executeAndVerify())
|
||||
.hasMessage("Status expected:<200 OK> but was:<401 UNAUTHORIZED>");
|
||||
}
|
||||
|
||||
@@ -88,6 +88,30 @@ For tests against a live, running server:
|
||||
WebGraphQlTester tester = WebGraphQlTester.builder(client).build();
|
||||
----
|
||||
|
||||
`WebGraphQlTester` supports setting HTTP request headers and access to HTTP response
|
||||
headers. This may be useful to inspect or set security related headers.
|
||||
|
||||
[source,java,indent=0,subs="verbatim,quotes"]
|
||||
----
|
||||
this.graphQlTester.queryName("{ myQuery }")
|
||||
.httpHeaders(headers -> headers.setBasicAuth("rob", "..."))
|
||||
.execute()
|
||||
.httpHeadersSatisfy(headers -> {
|
||||
// check response headers
|
||||
})
|
||||
.path("myQuery.field1").entity(String.class).isEqualTo("value1")
|
||||
.path("myQuery.field2").entity(String.class).isEqualTo("value2");
|
||||
----
|
||||
|
||||
You can also set default request headers at the builder level:
|
||||
|
||||
[source,java,indent=0,subs="verbatim,quotes"]
|
||||
----
|
||||
WebGraphQlTester tester = WebGraphQlTester.builder(client)
|
||||
.defaultHttpHeaders(headers -> headers.setBasicAuth("rob", "..."))
|
||||
.build();
|
||||
----
|
||||
|
||||
|
||||
|
||||
[[testing-queries]]
|
||||
|
||||
@@ -123,7 +123,7 @@ class DefaultWebGraphQlTester implements WebGraphQlTester {
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebRequestSpec header(String headerName, String... headerValues) {
|
||||
public WebRequestSpec httpHeader(String headerName, String... headerValues) {
|
||||
for (String headerValue : headerValues) {
|
||||
this.headers.add(headerName, headerValue);
|
||||
}
|
||||
@@ -131,7 +131,7 @@ class DefaultWebGraphQlTester implements WebGraphQlTester {
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebRequestSpec headers(Consumer<HttpHeaders> headersConsumer) {
|
||||
public WebRequestSpec httpHeaders(Consumer<HttpHeaders> headersConsumer) {
|
||||
headersConsumer.accept(this.headers);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ final class DefaultWebGraphQlTesterBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultWebGraphQlTesterBuilder defaultHeader(String headerName, String... headerValues) {
|
||||
public DefaultWebGraphQlTesterBuilder defaultHttpHeader(String headerName, String... headerValues) {
|
||||
this.headers = (this.headers != null ? this.headers : new HttpHeaders());
|
||||
for (String headerValue : headerValues) {
|
||||
this.headers.add(headerName, headerValue);
|
||||
@@ -88,7 +88,7 @@ final class DefaultWebGraphQlTesterBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebGraphQlTester.Builder defaultHeaders(Consumer<HttpHeaders> headersConsumer) {
|
||||
public WebGraphQlTester.Builder defaultHttpHeaders(Consumer<HttpHeaders> headersConsumer) {
|
||||
this.headers = (this.headers != null ? this.headers : new HttpHeaders());
|
||||
headersConsumer.accept(this.headers);
|
||||
return this;
|
||||
|
||||
@@ -147,14 +147,14 @@ public interface WebGraphQlTester extends GraphQlTester {
|
||||
* @param headerName the header name
|
||||
* @param headerValues the header values
|
||||
*/
|
||||
Builder defaultHeader(String headerName, String... headerValues);
|
||||
Builder defaultHttpHeader(String headerName, String... headerValues);
|
||||
|
||||
/**
|
||||
* Variant of {@link #defaultHeader(String, String...)} that provides
|
||||
* Variant of {@link #defaultHttpHeader(String, String...)} that provides
|
||||
* access to the underlying headers to inspect or modify directly.
|
||||
* @param headersConsumer a function that consumes the {@code HttpHeaders}
|
||||
*/
|
||||
Builder defaultHeaders(Consumer<HttpHeaders> headersConsumer);
|
||||
Builder defaultHttpHeaders(Consumer<HttpHeaders> headersConsumer);
|
||||
|
||||
/**
|
||||
* Build the {@code WebGraphQlTester}.
|
||||
@@ -177,7 +177,7 @@ public interface WebGraphQlTester extends GraphQlTester {
|
||||
* @param headerValues the header value(s)
|
||||
* @return the same instance
|
||||
*/
|
||||
WebRequestSpec header(String headerName, String... headerValues);
|
||||
WebRequestSpec httpHeader(String headerName, String... headerValues);
|
||||
|
||||
/**
|
||||
* Manipulate the request's headers with the given consumer. The
|
||||
@@ -188,7 +188,7 @@ public interface WebGraphQlTester extends GraphQlTester {
|
||||
* @param headersConsumer a function that consumes the {@code HttpHeaders}
|
||||
* @return this builder
|
||||
*/
|
||||
WebRequestSpec headers(Consumer<HttpHeaders> headersConsumer);
|
||||
WebRequestSpec httpHeaders(Consumer<HttpHeaders> headersConsumer);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -80,9 +80,9 @@ public class WebGraphQlTesterTests {
|
||||
setup.response("{\"me\": {\"name\":\"Luke Skywalker\", \"friends\":[]}}");
|
||||
|
||||
GraphQlTester.ResponseSpec spec = setup.graphQlTester().query(query)
|
||||
.header("myHeader1", "myValue1a")
|
||||
.header("myHeader1", "myValue1b")
|
||||
.headers(headers -> headers.add("myHeader2", "myValue2"))
|
||||
.httpHeader("myHeader1", "myValue1a")
|
||||
.httpHeader("myHeader1", "myValue1b")
|
||||
.httpHeaders(headers -> headers.add("myHeader2", "myValue2"))
|
||||
.execute();
|
||||
|
||||
spec.path("me.name").entity(String.class).isEqualTo("Luke Skywalker");
|
||||
@@ -103,9 +103,9 @@ public class WebGraphQlTesterTests {
|
||||
setup.response("{\"me\": {\"name\":\"Luke Skywalker\", \"friends\":[]}}");
|
||||
|
||||
GraphQlTester.ResponseSpec spec = setup.graphQlTesterBuilder()
|
||||
.defaultHeader("myHeader1", "myValue1a")
|
||||
.defaultHeader("myHeader1", "myValue1b")
|
||||
.defaultHeaders(headers -> headers.add("myHeader2", "myValue2"))
|
||||
.defaultHttpHeader("myHeader1", "myValue1a")
|
||||
.defaultHttpHeader("myHeader1", "myValue1b")
|
||||
.defaultHttpHeaders(headers -> headers.add("myHeader2", "myValue2"))
|
||||
.build()
|
||||
.query(query)
|
||||
.execute();
|
||||
|
||||
Reference in New Issue
Block a user