package Ġno . nav . sy fo . p dl . client Ċ Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Feature Ċ import Ġcom . fasterxml . jackson . databind . Serialization Feature Ċ import Ġcom . fasterxml . jackson . datatype . js r 3 1 0 . Java Time Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . register Kotlin Module Ċ import Ġio . ktor . client . HttpClient Ċ import Ġio . ktor . client . engine . mock . Mock Engine Ċ import Ġio . ktor . client . engine . mock . respond Ċ import Ġio . ktor . client . engine . mock . respond Error Ċ import Ġio . ktor . client . features . json . Jack son Serializer Ċ import Ġio . ktor . client . features . json . Json Feature Ċ import Ġio . ktor . client . request . HttpResponse Data Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . http . headers Of Ċ import Ġjava . io . File Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . am sh ove . k lu ent . should NotEqual Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ Ċ class ĠP dl Client Test Ġ: ĠSpe k ({ ĊĠĠĠ Ġvar Ġblock : Ġ() Ġ-> ĠHttpResponse Data Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġrespond Error ( HttpStatusCode . NotFound ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġset ResponseData ( response Data : ĠHttpResponse Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock Ġ= Ġ{ Ġresponse Data Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠhttpClient Ġ= ĠHttpClient ( Mock Engine ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstall ( Json Feature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠJack son Serializer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Kotlin Module () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Module ( Java Time Module ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure ( Serialization Feature . WRITE _ DAT ES _ AS _ TIMESTAMP S , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure ( Deserialization Feature . FAIL _ ON _ UNKNOWN _ PROPERTIES , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġengine Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Handler Ġ{ Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġgraph Ql Query Ġ= ĠFile (" src / main / resources / graphql / get Person . graphql "). read Text (). replace ( Regex ("[ \ n \ t ] "), Ġ"") ĊĠĠĠ Ġval Ġp dl Client Ġ= ĠP dl Client ( httpClient , Ġ" graphql end ", Ġgraph Ql Query ) ĊĊĠĠĠ Ġdescribe (" get Person ĠOK ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" Sk al Ġf Ã¥ Ġh ent et Ġu grad ert Ġperson Ġf ra Ġp dl ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ResponseData ( respond ( get U grad ert TestData (), ĠHttpStatusCode . OK , Ġheaders Of (" Content - Type ", Ġ" application / json "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġp dl Client . get Person (" 1 2 3 4 5 6 7 8 9 0 1 ", Ġ" Bearer Ġtoken ", Ġ" Bearer Ġtoken ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person Ġshould NotEqual Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person ?. nav n ?. size Ġshould Equal Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person ?. nav n ! ![ 0 ]. for nav n Ġshould Equal Ġ" R ASK " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person ?. nav n ! ![ 0 ]. et tern av n Ġshould Equal Ġ" SA KS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person ?. ad resse bes ky tt else ! ![ 0 ]. grader ing Ġshould Equal Ġ" U GRAD ERT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Id enter ?. id enter ! ![ 0 ]. ident Ġshould Equal Ġ" 9 8 7 6 5 4 3 2 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" Sk al Ġf Ã¥ Ġh ent et Ġget St reng t Fort rol ig TestData Ġperson Ġf ra Ġp dl ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ResponseData ( respond ( get St reng t Fort rol ig TestData (), ĠHttpStatusCode . OK , Ġheaders Of (" Content - Type ", Ġ" application / json "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġp dl Client . get Person (" 1 2 3 4 5 6 7 8 9 0 1 ", Ġ" Bearer Ġtoken ", Ġ" Bearer Ġtoken ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person Ġshould NotEqual Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person ?. nav n ?. size Ġshould Equal Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person ?. nav n ! ![ 0 ]. for nav n Ġshould Equal Ġ" R ASK " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person ?. nav n ! ![ 0 ]. et tern av n Ġshould Equal Ġ" SA KS " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person ?. ad resse bes ky tt else ! ![ 0 ]. grader ing Ġshould Equal Ġ" STRE NG T _ F ORT ROL IG " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Id enter ?. id enter ! ![ 0 ]. ident Ġshould Equal Ġ" 9 8 7 6 5 4 3 2 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" Sk al Ġf Ã¥ Ġh ent Person Ġ= Ġnull Ġved Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ResponseData ( respond ( get ErrorResponse (), ĠHttpStatusCode . OK , Ġheaders Of (" Content - Type ", Ġ" application / json "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġp dl Client . get Person (" 1 2 3 4 5 6 7 8 9 0 1 ", Ġ" Bearer Ġtoken ", Ġ" Bearer Ġtoken ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . h ent Person Ġshould Equal Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ