package Ġcom . invent iv . g ast rop ays dk . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġokhttp 3 . mock webserver . Dispatcher Ċ import Ġokhttp 3 . mock webserver . Mock Response Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġokhttp 3 . mock webserver . Re corded Request Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ internal Ġfun ĠMock WebServer . enqueue Response ( fileName : ĠString , Ġcode : ĠInt ) Ġ{ ĊĠĠĠ Ġenqueue ( ĊĠĠĠĠĠĠĠ ĠMock Response () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Response Code ( code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Body ( read Test Resource File ( fileName )) ĊĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġfun Ġread Test Resource File ( fileName : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġval Ġtest Context : ĠContext Ġ= ĠInstrument ation Registry . get Instrumentation (). context ĊĠĠĠ Ġval ĠinputStream Ġ= Ġtest Context . assets . open (" api - response /$ fileName ") ĊĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠ ĠInputStreamReader ( inputStream , ĠStandard Charsets . UTF _ 8 ). read Lines (). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ( it ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbuilder . toString () Ċ } Ċ Ċ internal Ġfun Ġdispatcher With Custom Body () Ġ= Ġobject Ġ: ĠDispatcher () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdispatch ( request : ĠRe corded Request ): ĠMock Response Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( request . path !!. replace (" http :// localhost : 8 0 8 0 ", Ġ"")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠMock Response (). set Response Code ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ auth / login " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . set Body ( read Test Resource File (" login - 2 0 0 . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠgetResource String ( id : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġval Ġapp Context Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠ Ġreturn Ġapp Context . resources . getString ( id ) Ċ }