/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠJ oh an ĠF yll ing Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġorg . auth lab . http . echo Ċ Ċ import Ġio . kot lint est . shouldBe Ċ import Ġio . kot lint est . specs . String Spec Ċ import Ġorg . auth lab . http . client . Client Builder Ċ import Ġorg . auth lab . http . client . as Json Ċ Ċ class ĠEcho Server Integration Spec Ġ: ĠString Spec () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ port Ġ= Ġ 9 0 9 0 ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġval Ġ_ echo Server Ġ= Ġauto Close ( Echo Server Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġlisten Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" localhost " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport Ġ= Ġ_ port ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. build (). also Ġ{ Ġit . start () Ġ}) ĊĊĠĠĠ Ġprivate Ġvar Ġ_ client Ġ= Ġauto Close ( Client Builder (" http :// localhost : $_ port "). build ()) ĊĊĠĠĠ Ġoverride Ġfun Ġis Instance Per Test () Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ" A Ġsimple ĠGET Ġrequest Ġis Ġproperly Ġecho ed Ġas ĠJSON " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġ_ client . get ("/ foo / bar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ{ Ġ" 1 3 3 7 " Ġto Ġ" 4 2 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ{ Ġ" Custom - Header " Ġto Ġ" Not Ġa Ġfooter " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . response Line . statusCode ĠshouldBe Ġ 2 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . headers . getHeader (" Content - Type ") !!. getFirst () ĠshouldBe Ġ" application / json " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġresponse . as Json < Map < String , ĠAny >>() ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( json ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson [" url "] ĠshouldBe Ġ" http :// localhost : $_ port / foo / bar ? 1 3 3 7 = 4 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson [" http Version "] ĠshouldBe Ġ" HTTP / 1 . 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson [" body Size "] ĠshouldBe Ġ 0 . 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ( json [" queryString "] Ġas ĠList < *> ). filter Is Instance < Map < String , ĠString >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery . find Ġ{ Ġit [" name "] Ġ== Ġ" 1 3 3 7 " Ġ} !! [" value "] ĠshouldBe Ġ" 4 2 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġ( json [" headers "] Ġas ĠList < *> ). filter Is Instance < Map < String , ĠString >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . find Ġ{ Ġit [" name "] Ġ== Ġ" Host " Ġ} !! [" value "] ĠshouldBe Ġ" localhost : $_ port " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . find Ġ{ Ġit [" name "] Ġ== Ġ" Custom - Header " Ġ} !! [" value "] ĠshouldBe Ġ" Not Ġa Ġfooter " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ