package Ġcom . ar oph ix . mv vm . example . api Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 . mock webserver . Mock Response Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġok io . buffer Ċ import Ġok io . source Ċ import Ġorg . hamcrest . Core Matchers Ċ import Ġorg . junit .* Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . simp lex ml . Simple Xml Converter Factory Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠA ro ph ix WebService Test Ġ{ ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġinstant Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġservice : ĠA ro ph ix WebService ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock WebServer : ĠMock WebServer ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġcreate Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer Ġ= ĠMock WebServer () ĊĠĠĠĠĠĠĠ Ġservice Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( mock WebServer . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Simple Xml Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( A ro ph ix WebService :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġstop Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer . shutdown () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrequest Dns Server Locations () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenqueue Response (" ar oph ix _ response _ success . xml ", Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Response Ġ= Ġservice . get Dns Server Locations (). body () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġmock WebServer . take Request () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( result Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertThat ( request . path , ĠCore Matchers .` is ` ("/ Ad hoc CP S / dns / express _ dns / list ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget A ro ph ix Dns ApiResponse _ success () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenqueue Response (" ar oph ix _ response _ success . xml ", Ġ 2 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Response Ġ= Ġservice . get Dns Server Locations (). body () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġxml ButtonText Ġ= Ġresult Response !!. button Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġxml Icons Ġ= Ġresult Response . xml Icons ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġxml Locations Ġ= Ġresult Response . xml Locations ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertThat ( xml ButtonText , ĠCore Matchers .` is ` (" Another Ġtext Ġto Ġbe Ġhandled Ġon Ġclient Ġside .")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertThat ( xml Icons !!. xml Icon List !!. size , ĠCore Matchers .` is `( 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertThat ( xml Locations !!. xml Location List !!. size , ĠCore Matchers .` is `( 6 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget A ro ph ix Dns ApiResponse _ error () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenqueue Response (" ar oph ix _ response _ error . xml ", Ġ 4 0 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Response Ġ= Ġservice . get Dns Server Locations () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġresult Response . error Body () !!. string () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertThat ( result Response . is Successful , ĠCore Matchers .` is `( false )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertThat ( result Response . code (), ĠCore Matchers .` is `( 4 0 3 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġjava Class . class Loader . getResource AsStream (" api - response / ar oph ix _ response _ error . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠinputStream . source (). buffer () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" error Body String : Ġ\ n ${ message }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertThat ( message , ĠCore Matchers .` is `( source . readString ( Charsets . UTF _ 8 ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġenqueue Response ( fileName : ĠString , Ġresponse Code : ĠInt , Ġheaders : ĠMap < String , ĠString > Ġ= Ġempty Map ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġjava Class . class Loader . getResource AsStream (" api - response /$ fileName ") ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠinputStream . source (). buffer () ĊĠĠĠĠĠĠĠ Ġval Ġmock Response Ġ= ĠMock Response () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġheaders ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock Response . add Header ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" Error Ġresponse : Ġ$ source . readString ( Charsets . UTF _ 8 )") ĊĠĠĠĠĠĠĠ Ġmock WebServer . enqueue ( mock Response . set Response Code ( response Code ). set Body ( source . readString ( Charsets . UTF _ 8 ))) ĊĠĠĠ Ġ} Ċ }