/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 Ġ- Ġpresent ĠIn structure , Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġ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 Ġcom . in structure . canvas api 2 . p act . canvas . apis Ċ Ċ import Ġau . com . di us . p act . consumer . junit . P act Provider Rule Ċ import Ġau . com . di us . p act . core . model . P act Spec Version Ċ import Ġcom . in structure . canvas api 2 . P act Request Interceptor Ċ import Ġcom . in structure . canvas api 2 . apis . Course API Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Response Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Rule Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ open Ġclass ĠApi P act TestBase Ġ{ ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġprovider Ġ= ĠP act Provider Rule (" Canvas ĠL MS ĠAPI ", ĠP act Spec Version . V 2 , Ġthis ) ĊĊĠĠĠ Ġval ĠDEFAULT _ MOB ILE _ ST UD ENT Ġ= Ġ" Mobile ĠStudent " ĊĠĠĠ Ġval ĠDEFAULT _ PATH _ PREFIX Ġ= Ġ"/ api / v 1 /" ĊĠĠĠ Ġfun ĠgetClient ( path Prefix : ĠString Ġ= ĠDEFAULT _ PATH _ PREFIX , Ġcaller : ĠString Ġ= ĠDEFAULT _ MOB ILE _ ST UD ENT ) Ġ: ĠRet rofit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( P act Request Interceptor ( caller )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġrequest . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Header (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( provider . url Ġ+ Ġpath Prefix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġ// println (" P ACT : ĠProvider ĠURL : Ġ${ provider . url } Ġclient Ġbase Ġurl Ġ= Ġ${ client . baseUrl () }") ĊĠĠĠĠĠĠĠ Ġreturn Ġclient ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġassert QueryParams And Path ( call : ĠCall < T >, Ġexpected Query : ĠString ?, Ġexpected Path : ĠString ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" Call ĠQuery ĠParams ", Ġcall . request (). url (). query (), Ġexpected Query ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Call ĠPath ", Ġcall . request (). url (). url (). path , Ġexpected Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠDEFAULT _ REQUEST _ HEADERS Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Authorization " Ġto Ġ" Bearer Ġsome _ token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Auth - User " Ġto ĠDEFAULT _ MOB ILE _ ST UD ENT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Content - Type " Ġto Ġ" application / json " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval ĠDEFAULT _ RESPONSE _ HEADERS Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Content - Type " Ġto Ġ" application / json ; Ġcharset = utf - 8 " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval ĠMAIN _ PROVIDER _ STATE Ġ= Ġ" a Ġstudent Ġwith Ġ 2 Ġcourses " Ċ }