package Ġsg . ned ig ital . my info . util Ċ Ċ import Ġandroid . net . Uri Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . stub Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġjunit . framework . Assert . assertEquals Ċ import Ġnet . openid . app auth . Auth State Ċ import Ġnet . openid . app auth . Authorization Request Ċ import Ġnet . openid . app auth . Authorization Response Ċ import Ġnet . openid . app auth . Authorization Service Configuration Ċ import Ġnet . openid . app auth . Grant Type Values Ċ import Ġnet . openid . app auth . Token Request Ċ import Ġnet . openid . app auth . Token Response Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġsg . ned ig ital . my info . storage . My Info Storage Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠAuth StateManager Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth StateManager : ĠAuth StateManager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstorage Mock : ĠMy Info Storage ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġstorage Mock Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġstorage Mock . stub Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġread State () Ġ}. thenReturn ( Auth State ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġauth StateManager Ġ= ĠAuth StateManager ( mock (), Ġstorage Mock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠAuth State () ĊĠĠĠĠĠĠĠ Ġauth StateManager . replace ( state ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state , Ġauth StateManager . current ) ĊĠĠĠĠĠĠĠ Ġverify ( storage Mock ). write State ( state ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate After Authorization () Ġ{ ĊĠĠĠĠĠĠĠ Ġauth StateManager . update After Authorization ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuthorization Response . Builder ( get Minimal Auth RequestBuilder (). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set AccessToken (" 1 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), Ġnull ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 1 2 3 ", Ġauth StateManager . current . accessToken ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate After Token Response () Ġ{ ĊĠĠĠĠĠĠĠ Ġauth StateManager . update After Token Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToken Response . Builder ( get Minimal Token RequestBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Redirect Uri ( Uri . parse (" https :// redirect . com ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Authorization Code (" code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set AccessToken (" 2 3 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 2 3 4 ", Ġauth StateManager . current . accessToken ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Minimal Auth RequestBuilder (): ĠAuthorization Request . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAuthorization Request . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuthorization Service Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" https :// auth Endpoint . com "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" https :// token Endpoint . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" client _ id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" code ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" https :// redirect . com ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Minimal Token RequestBuilder (): ĠToken Request . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠToken Request . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuthorization Service Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" https :// auth Endpoint . com "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" https :// token Endpoint . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" client _ id " ĊĠĠĠĠĠĠĠ Ġ). set Grant Type ( Grant Type Values . AUTHORIZATION _ CODE ) ĊĠĠĠ Ġ} Ċ } Ċ