/* ĊĠĠ ĠCopyright Ġ 2 0 1 7 - 2 0 1 9 ĠChar les ĠK orn . ĊĊĠĠ Ġ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 ĊĊĠĠĠĠĠĠ Ġhttp :// 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 Ġb ate ct . test utils Ċ Ċ import Ġcom . nat pr y ce . ham k rest . Match Result Ċ import Ġcom . nat pr y ce . ham k rest . Matcher Ċ import Ġcom . nat pr y ce . ham k rest . assertion . assertThat Ċ import Ġcom . nat pr y ce . ham k rest . has Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . arg That Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Headers Ċ import Ġokhttp 3 . Http Url Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Protocol Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġokhttp 3 . ResponseBody Ċ Ċ fun ĠOk HttpClient . mock Get ( url : ĠString , Ġresponse Body : ĠString , ĠstatusCode : ĠInt Ġ= Ġ 2 0 0 , Ġheaders : ĠHeaders Ġ= ĠHeaders . Builder (). build ()): ĠCall Ġ= Ġmock (" GET ", Ġurl , Ġresponse Body , ĠstatusCode , Ġheaders ) Ċ fun ĠOk HttpClient . mock Post ( url : ĠString , Ġresponse Body : ĠString , ĠstatusCode : ĠInt Ġ= Ġ 2 0 0 , Ġheaders : ĠHeaders Ġ= ĠHeaders . Builder (). build ()): ĠCall Ġ= Ġmock (" POST ", Ġurl , Ġresponse Body , ĠstatusCode , Ġheaders ) Ċ fun ĠOk HttpClient . mock Delete ( url : ĠString , Ġresponse Body : ĠString , ĠstatusCode : ĠInt Ġ= Ġ 2 0 0 , Ġheaders : ĠHeaders Ġ= ĠHeaders . Builder (). build ()): ĠCall Ġ= Ġmock (" DELETE ", Ġurl , Ġresponse Body , ĠstatusCode , Ġheaders ) Ċ Ċ fun ĠOk HttpClient . mock ( method : ĠString , Ġurl : ĠString , Ġresponse Body : ĠString , ĠstatusCode : ĠInt Ġ= Ġ 2 0 0 , Ġheaders : ĠHeaders Ġ= ĠHeaders . Builder (). build ()): ĠCall Ġ{ ĊĠĠĠ Ġval Ġparsed Url Ġ= ĠHttp Url . get ( url ) ĊĊĠĠĠ Ġreturn Ġthis . mock ( method , ĠequalTo ( parsed Url ), Ġresponse Body , ĠstatusCode , Ġheaders ) Ċ } Ċ Ċ fun ĠOk HttpClient . mock ( method : ĠString , Ġurl Matcher : ĠMatcher < Http Url >, Ġresponse Body : ĠString , ĠstatusCode : ĠInt Ġ= Ġ 2 0 0 , Ġheaders : ĠHeaders Ġ= ĠHeaders . Builder (). build ()): ĠCall Ġ{ ĊĠĠĠ Ġval Ġjson MediaType Ġ= ĠMediaType . get (" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠ Ġval Ġparsed ResponseBody Ġ= ĠResponse Body . create ( json MediaType , Ġresponse Body ) ĊĠĠĠ Ġval Ġcall Ġ= Ġmock < Call >() ĊĊĠĠĠ Ġwhenever ( this . new Call ( arg That Ġ{ Ġurl Matcher . invoke ( url ()) Ġ== ĠMatch Result . Match Ġ})). then Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġinvocation . get Argument < Request >( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( request , Ġhas ( Request :: method , ĠequalTo ( method ))) ĊĠĠĠĠĠĠĠ ĠassertThat ( request , Ġhas ( Request :: url , Ġurl Matcher )) ĊĠĠĠĠĠĠĠ ĠassertThat ( request , Ġhas ( Request :: header Set , ĠequalTo ( headers ))) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( call . execute ()). do Return ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. request ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( parsed ResponseBody ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. protocol ( Protocol . HTTP _ 1 _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. code ( statusCode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. message (" Something Ġhappened ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcall ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġcall Ċ } Ċ Ċ fun ĠOk HttpClient . mock ( method : ĠString , Ġurl : ĠString , Ġresponse : ĠResponse , Ġheaders : ĠHeaders Ġ= ĠHeaders . Builder (). build ()): ĠCall Ġ{ ĊĠĠĠ Ġval Ġparsed Url Ġ= ĠHttp Url . get ( url ) ĊĠĠĠ Ġval Ġcall Ġ= Ġmock < Call >() ĊĊĠĠĠ Ġwhenever ( this . new Call ( arg That Ġ{ Ġurl (). toString () Ġ== Ġurl Ġ})). then Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġinvocation . get Argument < Request >( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( request , Ġhas ( Request :: method , ĠequalTo ( method ))) ĊĠĠĠĠĠĠĠ ĠassertThat ( request , Ġhas ( Request :: url , ĠequalTo ( parsed Url ))) ĊĠĠĠĠĠĠĠ ĠassertThat ( request , Ġhas ( Request :: header Set , ĠequalTo ( headers ))) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( call . execute ()). do Return ( response ) ĊĊĠĠĠĠĠĠĠ Ġcall ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġcall Ċ } Ċ Ċ // ĠThis Ġis Ġto Ġresolve Ġthe Ġamb iguity Ġwhen Ġreferring Ġto ĠRequest :: headers () Ġabove Ġin Ġthe Ġhas () Ġcall . Ċ private Ġfun ĠRequest . header Set () Ġ= Ġthis . headers () Ċ