/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠExp edia , ĠInc Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . exp edi ag roup . graphql . spring . routes Ċ Ċ import Ġcom . exp edi ag roup . graphql . annotations . GraphQL Context Ċ import Ġcom . exp edi ag roup . graphql . spring . REQUEST _ PARAM _ OPERATION _ NAME Ċ import Ġcom . exp edi ag roup . graphql . spring . REQUEST _ PARAM _ QUERY Ċ import Ġcom . exp edi ag roup . graphql . spring . REQUEST _ PARAM _ VARIABLE S Ċ import Ġcom . exp edi ag roup . graphql . spring . execution . GraphQL Context Factory Ċ import Ġcom . exp edi ag roup . graphql . spring . graph QL MediaType Ċ import Ġcom . exp edi ag roup . graphql . spring . model . GraphQL Request Ċ import Ġcom . exp edi ag roup . graphql . spring . operations . Query Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson ObjectMapper Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . autoconfigure . Enable Auto Configuration Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . server . reactive . Server HttpRequest Ċ import Ġorg . springframework . http . server . reactive . Server HttpResponse Ċ import Ġorg . springframework . test . web . reactive . server . Web Test Client Ċ import Ġorg . springframework . test . web . reactive . server . expect Body Ċ Ċ @ SpringBootTest ( ĊĠĠĠ Ġweb Environment Ġ= ĠSpring Boot Test . Web Environment . RANDOM _ PORT , ĊĠĠĠ Ġproperties Ġ= Ġ[" graphql . packages = com . exp edi ag roup . graphql . spring . routes "] Ċ ) Ċ @ Enable Auto Configuration Ċ class ĠRoute Configuration IT (@ Autowired Ġprivate Ġval Ġtest Client : ĠWeb Test Client ) Ġ{ ĊĊĠĠĠ Ġ@ Configuration ĊĠĠĠ Ġclass ĠTest Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠ Ġfun Ġquery (): ĠQuery Ġ= ĠSimple Query () ĊĊĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠ Ġfun Ġcustom Context Factory (): ĠGraphQL Context Factory < Custom Context > Ġ= Ġobject Ġ: ĠGraphQL Context Factory < Custom Context > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġgenerate Context ( request : ĠServer HttpRequest , Ġresponse : ĠServer HttpResponse ): ĠCustom Context Ġ= ĠCustom Context ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġrequest . headers . getFirst (" X - Custom - Header ") Ġ?: Ġ" default " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSimple Query Ġ: ĠQuery Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġhello ( name : ĠString ) Ġ= Ġ" Hello Ġ$ name !" ĊĊĠĠĠĠĠĠĠ Ġfun Ġcontext (@ GraphQL Context Ġctx : ĠCustom Context ) Ġ= Ġctx . value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠCustom Context ( val Ġvalue : ĠString ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠSDL Ġroute `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Schema Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery : ĠQuery ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Direct s Ġthe Ġexecutor Ġto Ġinclude Ġthis Ġfield Ġor Ġfragment Ġonly Ġwhen Ġthe Ġ` if ` Ġargument Ġis Ġtrue " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirective Ġ@ include ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Included Ġwhen Ġtrue ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif : ĠBoolean ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġon ĠFIELD Ġ| ĠFR AG MENT _ SP READ Ġ| ĠINLINE _ FRAGMENT ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Direct s Ġthe Ġexecutor Ġto Ġskip Ġthis Ġfield Ġor Ġfragment Ġwhen Ġthe Ġ` if `' argument Ġis Ġtrue ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirective Ġ@ skip ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Skipped Ġwhen Ġtrue ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif : ĠBoolean ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġon ĠFIELD Ġ| ĠFR AG MENT _ SP READ Ġ| ĠINLINE _ FRAGMENT ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Marks Ġthe Ġfield Ġor Ġenum Ġvalue Ġas Ġdeprecated " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirective Ġ@ deprecated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġreason Ġfor Ġthe Ġdeprecation " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreason : ĠString ! Ġ= Ġ" No Ġlonger Ġsupported " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġon ĠFIELD _ DEFINITION Ġ| ĠEN UM _ VALUE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ĠQuery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠString ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhello ( name : ĠString ! ): ĠString ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġtest Client . get (). uri ("/ sdl ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . TEXT _ PLAIN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( expected Schema ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠPOST Ġgraph QL Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠGraphQL Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġ" query Ġhello World Query (\ $ name : ĠString !) Ġ{ Ġhello ( name : Ġ\$ name ) Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Ġ= Ġmap Of (" name " Ġto Ġ" J UNIT Ġroute "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Name Ġ= Ġ" hello World Query " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body Value ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify GraphQL Route (" Hello ĠJ UNIT Ġroute !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠGET Ġgraph QL Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" query Ġ{ Ġhello ( name : Ġ\" J UNIT ĠGET \") Ġ}" ĊĠĠĠĠĠĠĠ Ġtest Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri Ġ{ Ġbuilder Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . path ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. query Param ( REQUEST _ PARAM _ QUERY , Ġ"{ query }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify GraphQL Route (" Hello ĠJ UNIT ĠGET !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠGET Ġgraph QL Ġrequest Ġwith Ġvariables `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" query Ġhello World Query (\ $ name : ĠString !) Ġ{ Ġhello ( name : Ġ\$ name ) Ġ}" ĊĠĠĠĠĠĠĠ Ġval Ġvariables Ġ= Ġmap Of (" name " Ġto Ġ" J UNIT ĠGET Ġwith Ġvariables ") ĊĠĠĠĠĠĠĠ Ġval Ġoperation Name Ġ= Ġ" hello World Query " ĊĠĠĠĠĠĠĠ Ġtest Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri Ġ{ Ġbuilder Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . path ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. query Param ( REQUEST _ PARAM _ QUERY , Ġ"{ query }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. query Param ( REQUEST _ PARAM _ VARIABLE S , Ġ"{ variables }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. query Param ( REQUEST _ PARAM _ OPERATION _ NAME , Ġ"{ operation Name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( query , Ġj ack son ObjectMapper (). writeValue AsString ( variables ), Ġoperation Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify GraphQL Route (" Hello ĠJ UNIT ĠGET Ġwith Ġvariables !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġquery Ġparameter Ġtakes Ġprecedence Ġover ĠPOST Ġbody `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠGraphQL Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġ" query Ġhello World Query (\ $ name : ĠString !) Ġ{ Ġhello ( name : Ġ\$ name ) Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Ġ= Ġmap Of (" name " Ġto Ġ" J UNIT ĠPOST Ġbody "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Name Ġ= Ġ" hello World Query " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri Ġ{ Ġbuilder Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . path ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. query Param ( REQUEST _ PARAM _ QUERY , Ġ"{ query }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ("{ Ġhello ( name : Ġ\" POST Ġquery Ġparam \") Ġ} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body Value ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify GraphQL Route (" Hello ĠPOST Ġquery Ġparam !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠPOST Ġgraph QL Ġrequest Ġwith Ġgraphql Ġcontent Ġtype `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( graph QL MediaType ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body Value (" query Ġ{ Ġhello ( name : Ġ\" POST Ġapplication / graphql \") Ġ} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify GraphQL Route (" Hello ĠPOST Ġapplication / graphql !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠPOST Ġrequest Ġwith ĠXML Ġcontent Ġtype Ġwill Ġresult Ġin ĠHTTP Ġ 4 0 0 Ġbad Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ XML ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is BadRequest ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠGET Ġrequest Ġwithout Ġquery Ġwill Ġresult Ġin ĠHTTP Ġ 4 0 0 Ġbad Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is BadRequest ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠPOST Ġgraph QL Ġrequest Ġwith Ġcontext ual Ġvalue Ġspecified `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" X - Custom - Header ", Ġ" custom Value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body Value ( GraphQL Request ( query Ġ= Ġ" query Ġ{ Ġcontext Ġ} ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. data . context "). isEqualTo (" custom Value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. errors "). does NotExist () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. extensions "). does NotExist () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠPOST Ġgraph QL Ġrequest Ġwith Ġdefault Ġcontext ual Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body Value ( GraphQL Request ( query Ġ= Ġ" query Ġ{ Ġcontext Ġ} ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. data . context "). isEqualTo (" default ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. errors "). does NotExist () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. extensions "). does NotExist () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠPOST Ġgraph QL Ġrequest Ġwith Ġexplicit Ġcharset `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠGraphQL Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġ" query Ġhello World Query (\ $ name : ĠString !) Ġ{ Ġhello ( name : Ġ\$ name ) Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Ġ= Ġmap Of (" name " Ġto Ġ" J UNIT Ġroute Ġwith Ġcharset Ġencoding "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Name Ġ= Ġ" hello World Query " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON _ UTF 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON _ UTF 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body Value ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify GraphQL Route (" Hello ĠJ UNIT Ġroute Ġwith Ġcharset Ġencoding !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠPOST Ġgraph QL Ġrequest Ġwith Ġwebsocket Ġheader Ġfails `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠGraphQL Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġ" query Ġhello World Query (\ $ name : ĠString !) Ġ{ Ġhello ( name : Ġ\$ name ) Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Ġ= Ġmap Of (" name " Ġto Ġ" J UNIT Ġroute "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Name Ġ= Ġ" hello World Query " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Connection ", Ġ" Upgrade ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Upgrade ", Ġ" websocket ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body Value ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is NotFound ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠPOST Ġgraph QL Ġrequest Ġwith Ġpartially Ġmissing Ġwebsocket Ġheader Ġstill Ġpasses `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠGraphQL Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġ" query Ġhello World Query (\ $ name : ĠString !) Ġ{ Ġhello ( name : Ġ\$ name ) Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Ġ= Ġmap Of (" name " Ġto Ġ" J UNIT Ġroute "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Name Ġ= Ġ" hello World Query " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtest Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ graphql ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Connection ", Ġ" upgrade ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body Value ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Ok ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠWeb Test Client . Response Spec . verify GraphQL Route ( expected : ĠString ) Ġ= Ġthis . expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path (" $. data . hello "). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠ Ġ. json Path (" $. errors "). does NotExist () ĊĠĠĠĠĠĠĠ Ġ. json Path (" $. extensions "). does NotExist () Ċ } Ċ