@@ -169,6 +169,20 @@ class GraphQLServletSpec extends Specification {
169169 getResponseContent(). data. echo == " test"
170170 }
171171
172+ def " query over HTTP GET with unknown property 'test' returns data" () {
173+ setup :
174+ request. addParameter(' query' , ' query { echo(arg:"test") }' )
175+ request. addParameter(' test' , ' test' )
176+
177+ when :
178+ servlet. doGet(request, response)
179+
180+ then :
181+ response. getStatus() == STATUS_OK
182+ response. getContentType() == CONTENT_TYPE_JSON_UTF8
183+ getResponseContent(). data. echo == " test"
184+ }
185+
172186 def " batched query over HTTP GET returns data" () {
173187 setup :
174188 request. addParameter(' query' , ' [{ "query": "query { echo(arg:\\ "test\\ ") }" }, { "query": "query { echo(arg:\\ "test\\ ") }" }]' )
@@ -239,6 +253,20 @@ class GraphQLServletSpec extends Specification {
239253 getBatchedResponseContent()[1 ]. data. echo == " test"
240254 }
241255
256+ def " batched query over HTTP GET with unknown property 'test' returns data" () {
257+ setup :
258+ request. addParameter(' query' , ' [{ "query": "query { echo(arg:\\ "test\\ ") }", "test": "test" }, { "query": "query { echo(arg:\\ "test\\ ") }", "test": "test" }]' )
259+
260+ when :
261+ servlet. doGet(request, response)
262+
263+ then :
264+ response. getStatus() == STATUS_OK
265+ response. getContentType() == CONTENT_TYPE_JSON_UTF8
266+ getBatchedResponseContent()[0 ]. data. echo == " test"
267+ getBatchedResponseContent()[1 ]. data. echo == " test"
268+ }
269+
242270 def " mutation over HTTP GET returns errors" () {
243271 setup :
244272 request. addParameter(' query' , ' mutation { echo(arg:"test") }' )
@@ -338,6 +366,22 @@ class GraphQLServletSpec extends Specification {
338366 getResponseContent(). data. echo == " test"
339367 }
340368
369+ def " query over HTTP POST body with unknown property 'test' returns data" () {
370+ setup :
371+ request. setContent(mapper. writeValueAsBytes([
372+ query : ' query { echo(arg:"test") }' ,
373+ test : ' test'
374+ ]))
375+
376+ when :
377+ servlet. doPost(request, response)
378+
379+ then :
380+ response. getStatus() == STATUS_OK
381+ response. getContentType() == CONTENT_TYPE_JSON_UTF8
382+ getResponseContent(). data. echo == " test"
383+ }
384+
341385 def " query over HTTP POST multipart named 'graphql' returns data" () {
342386 setup :
343387 request. setContentType(" multipart/form-data, boundary=test" )
@@ -428,6 +472,24 @@ class GraphQLServletSpec extends Specification {
428472 getResponseContent(). data. echo == " test"
429473 }
430474
475+ def " query over HTTP POST multipart named 'query' with unknown property 'test' returns data" () {
476+ setup :
477+ request. setContentType(" multipart/form-data, boundary=test" )
478+ request. setMethod(" POST" )
479+ request. setContent(new TestMultipartContentBuilder ()
480+ .addPart(' query' , ' query { echo(arg:"test") }' )
481+ .addPart(' test' , ' test' )
482+ .build())
483+
484+ when :
485+ servlet. doPost(request, response)
486+
487+ then :
488+ response. getStatus() == STATUS_OK
489+ response. getContentType() == CONTENT_TYPE_JSON_UTF8
490+ getResponseContent(). data. echo == " test"
491+ }
492+
431493 def " batched query over HTTP POST body returns data" () {
432494 setup :
433495 request. setContent(' [{ "query": "query { echo(arg:\\ "test\\ ") }" }, { "query": "query { echo(arg:\\ "test\\ ") }" }]' . bytes)
@@ -486,6 +548,20 @@ class GraphQLServletSpec extends Specification {
486548 getBatchedResponseContent()[1 ]. data. echo == " test"
487549 }
488550
551+ def " batched query over HTTP POST body with unknown property 'test' returns data" () {
552+ setup :
553+ request. setContent(' [{ "query": "query { echo(arg:\\ "test\\ ") }", "test": "test" }, { "query": "query { echo(arg:\\ "test\\ ") }", "test": "test" }]' . bytes)
554+
555+ when :
556+ servlet. doPost(request, response)
557+
558+ then :
559+ response. getStatus() == STATUS_OK
560+ response. getContentType() == CONTENT_TYPE_JSON_UTF8
561+ getBatchedResponseContent()[0 ]. data. echo == " test"
562+ getBatchedResponseContent()[1 ]. data. echo == " test"
563+ }
564+
489565 def " batched query over HTTP POST multipart named 'graphql' returns data" () {
490566 setup :
491567 request. setContentType(" multipart/form-data, boundary=test" )
@@ -505,6 +581,25 @@ class GraphQLServletSpec extends Specification {
505581 getBatchedResponseContent()[1 ]. data. echo == " test"
506582 }
507583
584+ def " batched query over HTTP POST multipart named 'graphql' with unknown property 'test' returns data" () {
585+ setup :
586+ request. setContentType(" multipart/form-data, boundary=test" )
587+ request. setMethod(" POST" )
588+
589+ request. setContent(new TestMultipartContentBuilder ()
590+ .addPart(' graphql' , ' [{ "query": "query { echo(arg:\\ "test\\ ") }", "test": "test" }, { "query": "query { echo(arg:\\ "test\\ ") }", "test": "test" }]' )
591+ .build())
592+
593+ when :
594+ servlet. doPost(request, response)
595+
596+ then :
597+ response. getStatus() == STATUS_OK
598+ response. getContentType() == CONTENT_TYPE_JSON_UTF8
599+ getBatchedResponseContent()[0 ]. data. echo == " test"
600+ getBatchedResponseContent()[1 ]. data. echo == " test"
601+ }
602+
508603 def " batched query over HTTP POST multipart named 'query' returns data" () {
509604 setup :
510605 request. setContentType(" multipart/form-data, boundary=test" )
@@ -579,6 +674,24 @@ class GraphQLServletSpec extends Specification {
579674 getBatchedResponseContent()[1 ]. data. echo == " test"
580675 }
581676
677+ def " batched query over HTTP POST multipart named 'query' with unknown property 'test' returns data" () {
678+ setup :
679+ request. setContentType(" multipart/form-data, boundary=test" )
680+ request. setMethod(" POST" )
681+ request. setContent(new TestMultipartContentBuilder ()
682+ .addPart(' query' , ' [{ "query": "query { echo(arg:\\ "test\\ ") }", "test": "test" }, { "query": "query { echo(arg:\\ "test\\ ") }", "test": "test" }]' )
683+ .build())
684+
685+ when :
686+ servlet. doPost(request, response)
687+
688+ then :
689+ response. getStatus() == STATUS_OK
690+ response. getContentType() == CONTENT_TYPE_JSON_UTF8
691+ getBatchedResponseContent()[0 ]. data. echo == " test"
692+ getBatchedResponseContent()[1 ]. data. echo == " test"
693+ }
694+
582695 def " mutation over HTTP POST body returns data" () {
583696 setup :
584697 request. setContent(mapper. writeValueAsBytes([
@@ -608,6 +721,20 @@ class GraphQLServletSpec extends Specification {
608721 getBatchedResponseContent()[1 ]. data. echo == " test"
609722 }
610723
724+ def " batched mutation over HTTP POST body with unknown property 'test' returns data" () {
725+ setup :
726+ request. setContent(' [{ "query": "mutation { echo(arg:\\ "test\\ ") }", "test": "test" }, { "query": "mutation { echo(arg:\\ "test\\ ") }", "test": "test" }]' . bytes)
727+
728+ when :
729+ servlet. doPost(request, response)
730+
731+ then :
732+ response. getStatus() == STATUS_OK
733+ response. getContentType() == CONTENT_TYPE_JSON_UTF8
734+ getBatchedResponseContent()[0 ]. data. echo == " test"
735+ getBatchedResponseContent()[1 ]. data. echo == " test"
736+ }
737+
611738 def " errors before graphql schema execution return internal server error" () {
612739 setup :
613740 servlet = new SimpleGraphQLServlet (servlet. getSchemaProvider(). getSchema()) {
0 commit comments