package Ġorg . dh is 2 . use sc ases Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroidx . test . espress o . Id ling Registry Ċ import Ġandroidx . test . espress o . intent . Intent s Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġcom . jak ew h art on . espress o . Ok Http 3 Id ling Resource Ċ import Ġorg . dh is 2 . common . di . Testing Injector Ċ import Ġorg . dh is 2 . common . keystore . KeyStore Robot Ċ import Ġorg . dh is 2 . common . keystore . KeyStore Robot . Companion . KEY STORE _ PASSWORD Ċ import Ġorg . dh is 2 . common . keystore . KeyStore Robot . Companion . KEY STORE _ USERNAME Ċ import Ġorg . dh is 2 . common . keystore . KeyStore Robot . Companion . PASSWORD Ċ import Ġorg . dh is 2 . common . keystore . KeyStore Robot . Companion . USERNAME Ċ import Ġorg . dh is 2 . common . mock webserver . Mock WebServer Robot Ċ import Ġorg . dh is 2 . common . preferences . Preferences Robot Ċ import Ġorg . dh is 2 . common . rules . Disable Animations Ċ import Ġorg . dh is 2 . utils . id ling resource . Count ing Id ling Resource Singleton Ċ import Ġorg . h isp . dh is . android . core . D 2 Manager Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Class Rule Ċ Ċ open Ġclass ĠBaseTest Ġ{ ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġprotected Ġvar Ġcontext : ĠContext Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠ Ġprivate Ġvar Ġis Intent s Enable Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġkey Store Robot : ĠKey Store Robot ĊĠĠĠ Ġlateinit Ġvar Ġpreferences Robot : ĠPreferences Robot ĊĠĠĠ Ġlateinit Ġvar Ġmock WebServer Robot : ĠMock WebServer Robot ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġget Permissions ToBe Accepted () Ġ= ĠarrayOf < String >() ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġopen Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġinject Dependencies () ĊĠĠĠĠĠĠĠ Ġallow Permissions () ĊĠĠĠĠĠĠĠ Ġregister Count ing Id ling Resource () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġallow Permissions () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Permissions ToBe Accepted (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ui Automation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute Shell Command (" pm Ġgrant Ġ${ context . packageName } Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinject Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ ĠTesting Injector . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Store Robot Ġ= Ġprovides KeyStore Robot ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences Robot Ġ= Ġprovides Preferences Robot ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock WebServer Robot Ġ= Ġprovides Mock Web server Robot ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Count ing Id ling Resource () Ġ{ ĊĠĠĠĠĠĠĠ ĠId ling Registry . getInstance (). register ( Count ing Id ling Resource Singleton . count ing Id ling Resource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġunregister Count ing Id ling Resource (){ ĊĠĠĠĠĠĠĠ ĠId ling Registry . getInstance (). unregister ( Count ing Id ling Resource Singleton . count ing Id ling Resource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Mock Server () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer Robot . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġopen Ġfun Ġteardown () Ġ{ ĊĠĠĠĠĠĠĠ Ġdisable Intent s () ĊĠĠĠĠĠĠĠ Ġclean Preferences () ĊĠĠĠĠĠĠĠ Ġclean Ke yst ore () ĊĠĠĠĠĠĠĠ Ġstop Mock Server () ĊĠĠĠĠĠĠĠ Ġunregister Count ing Id ling Resource () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenable Intent s () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Intent s Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt ents . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Intent s Enable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Credentials () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Store Robot Ġ= ĠTesting Injector . provides KeyStore Robot ( context ) ĊĠĠĠĠĠĠĠ Ġkey Store Robot . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetData ( KEY STORE _ USERNAME , ĠUSER NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetData ( KEY STORE _ PASSWORD , ĠPASSWORD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisable Intent s () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Intent s Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt ents . release () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Intent s Enable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclean Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġpreferences Robot . clean Preferences () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclean Ke yst ore () Ġ{ ĊĠĠĠĠĠĠĠ Ġkey Store Robot . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Data ( KEY STORE _ USERNAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Data ( KEY STORE _ PASSWORD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Mock Server () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer Robot . shutdown () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Class Rule ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġdisable Animations Test Rule Ġ= ĠDisable Animations () ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMOCK _ SERVER _ URL Ġ= Ġ" http :// 1 2 7 . 0 . 0 . 1 : 8 0 8 0 " ĊĠĠĠ Ġ} Ċ } Ċ