package Ġorg . w ats i . enrollment . device . managers Ċ Ċ import Ġcom . n ha ar man . mockito _ kotlin . any Ċ import Ġcom . n ha ar man . mockito _ kotlin . verify Ċ import Ġcom . n ha ar man . mockito _ kotlin . wh enever Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . plugins . Rx Java Plugins Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertNull Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ import Ġorg . w ats i . enrollment . device . api . Authentication Token Api Ċ import Ġorg . w ats i . enrollment . device . api . Coverage Api Ċ import Ġorg . w ats i . enrollment . device . api . User Api Ċ import Ġorg . w ats i . enrollment . domain . factories . Authentication Token Factory Ċ import Ġorg . w ats i . enrollment . domain . factories . User Factory Ċ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ class ĠSession ManagerImpl Test Ġ{ ĊĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġmock Preferences Manager : ĠPreferences Manager ĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġmock Coverage Api : ĠCoverage Api ĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġmock Logger : ĠLogger ĊĠĠĠ Ġlateinit Ġvar Ġsession Manager : ĠSession ManagerImpl ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠRx Java Plugins . set Io Scheduler Handler Ġ{ ĠS chedulers . tr amp oline () Ġ} ĊĠĠĠĠĠĠĠ Ġsession Manager Ġ= ĠSession ManagerImpl ( mock Preferences Manager , Ġmock Coverage Api , Ġmock Logger ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlogin _ allowed Role () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġ" foo " ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġ" bar " ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠAuthentication Token Factory . build ( user Ġ= ĠUser Factory . build ( role Ġ= Ġ" enrollment ")) ĊĠĠĠĠĠĠĠ Ġval Ġauthentication Token Api Ġ= ĠAuthentication Token Api ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġtoken . token , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpires At Ġ= Ġtoken . expires At . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= ĠUser Api ( token . user ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Coverage Api . login ( any ())). thenReturn ( Single . just ( authentication Token Api )) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsession Manager . login ( username , Ġpassword ). test () ĊĠĠĠĠĠĠĠ Ġresult . assert Complete () ĊĊĠĠĠĠĠĠĠ Ġval Ġparsed Token Ġ= Ġauthentication Token Api . to Authentication Token () ĊĠĠĠĠĠĠĠ Ġverify ( mock Preferences Manager ). set Authentication Token ( parsed Token ) ĊĠĠĠĠĠĠĠ Ġverify ( mock Logger ). setUser ( parsed Token . user ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( session Manager . current Authentication Token (), Ġparsed Token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlogin _ admin () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġ" foo " ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġ" bar " ĊĠĠĠĠĠĠĠ Ġval Ġdis allowed Roles Ġ= ĠlistOf (" admin ", Ġ" provider ") ĊĠĠĠĠĠĠĠ Ġdis allowed Roles . forEach Ġ{ Ġdis allowed Role Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠAuthentication Token Factory . build ( user Ġ= ĠUser Factory . build ( role Ġ= Ġdis allowed Role )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthentication Token Api Ġ= ĠAuthentication Token Api ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . token , Ġtoken . expires At . toString (), ĠUser Api ( token . user )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( mock Coverage Api . login ( any ())). thenReturn ( Single . just ( authentication Token Api )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsession Manager . login ( username , Ġpassword ). test () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . assert Error ( Session Manager . Permission Exception :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ Ġsession Manager . logout () ĊĊĠĠĠĠĠĠĠ Ġcom . n ha ar man . mockito _ kotlin . verify ( mock Preferences Manager ). set Authentication Token ( null ) ĊĠĠĠĠĠĠĠ Ġcom . n ha ar man . mockito _ kotlin . verify ( mock Logger ). clear User () ĊĠĠĠĠĠĠĠ ĠassertNull ( session Manager . current Authentication Token ()) ĊĠĠĠ Ġ} Ċ } Ċ