package Ġorg . d roid wiki . password less . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġorg . d roid wiki . password less . adapter . SQLite Helper . Companion . ACCOUNT _ TABLE _ NAME Ċ import Ġorg . d roid wiki . password less . model . Account Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . net . URL Ċ import Ġjava . security . KeyStore Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠSecret Account Provider Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprovider : ĠSecret Account Provider ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsq Lite Helper : ĠSQLite Helper ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Context Ġ= ĠApplication Provider . getApplicationContext < Context >() ĊĠĠĠĠĠĠĠ Ġsq Lite Helper Ġ= ĠSQLite Helper ( app Context ) ĊĠĠĠĠĠĠĠ Ġprovider Ġ= ĠSecret Account Provider ( sq Lite Helper ) ĊĊĠĠĠĠĠĠĠ Ġclean Up () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġclean Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġsq Lite Helper . writable Database . delete ( ACCOUNT _ TABLE _ NAME , Ġ"", ĠarrayOf ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġkey Store Ġ= ĠKey Store . getInstance (" Android KeyStore "). apply Ġ{ Ġload ( null ) Ġ} ĊĠĠĠĠĠĠĠ Ġkey Store . aliases (). toList (). forEach Ġ{ Ġkey Store . delete Entry ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlist _ no Items _ emptyList () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf < Account >(), Ġprovider . list ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpers ists _ data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Url Ġ= ĠURL (" https :// localhost / w / api . php ") ĊĊĠĠĠĠĠĠĠ Ġprovider . create (" A _ NAME ", Ġapi Url ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġprovider . list (). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreates _ unique _ secret _ key () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Url Ġ= ĠURL (" https :// localhost / w / api . php ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsecret Key Ġ= Ġprovider . create (" A _ NAME ", Ġapi Url ) ĊĠĠĠĠĠĠĠ Ġval Ġanother SecretKey Ġ= Ġprovider . create (" AN OTHER _ NAME ", Ġapi Url ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Equals ( secret Key , Ġanother SecretKey ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremoves _ entry _ by _ name () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Url Ġ= ĠURL (" https :// localhost / w / api . php ") ĊĠĠĠĠĠĠĠ Ġprovider . create (" A _ NAME ", Ġapi Url ) ĊĊĠĠĠĠĠĠĠ Ġprovider . remove (" A _ NAME ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġprovider . list (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġkey Store Size ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremoves _ entry _ by _ id () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Url Ġ= ĠURL (" https :// localhost / w / api . php ") ĊĠĠĠĠĠĠĠ Ġprovider . create (" A _ NAME ", Ġapi Url ) ĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġprovider . findBy Api Url ( api Url ). get () ĊĊĠĠĠĠĠĠĠ Ġprovider . remove ( account . id ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġprovider . list (). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġkey Store Size ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfind sBy Api Url () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Url Ġ= ĠURL (" https :// localhost / w / api . php ") ĊĠĠĠĠĠĠĠ Ġprovider . create (" A _ NAME ", Ġapi Url ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovider . findBy Api Url ( api Url ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" A _ NAME ", Ġresult . get (). name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠfindBy Api Url _ no Entry _ empty Optional () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Url Ġ= ĠURL (" https :// localhost / w / api . php ") ĊĠĠĠĠĠĠĠ Ġprovider . create (" A _ NAME ", Ġapi Url ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovider . findBy Api Url ( URL (" http :// localhost / wiki / api . php ")) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( result . isPresent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġkey Store Size (): ĠInt Ġ Ġ= ĠKey Store . getInstance (" Android KeyStore "). apply Ġ{ Ġload ( null ) Ġ}. aliases (). toList (). size Ċ }