package Ġcom . jud okit . android . api . interceptor Ċ Ċ import Ġandroid . util . Base 6 4 Ċ import Ġcom . jud okit . android . Build Config Ċ import Ġcom . jud okit . android . api . App MetaData Provider Ċ import Ġcom . jud okit . android . api . model . Basic Authorization Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Static Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . mock webserver . Mock Response Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġokhttp 3 . mock webserver . Re corded Request Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ internal Ġclass ĠApi Headers Interceptor Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġauthorization Ġ= ĊĠĠĠĠĠĠĠ ĠBasic Authorization . Builder (). set Api Token (" token "). set Api Secret (" secret ") ĊĠĠĠ Ġprivate Ġval Ġapp Metadata Provider Ġ= Ġmock k < App MetaData Provider >( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġok HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠ Ġprivate Ġval Ġmock WebServer Ġ= ĠMock WebServer () ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Static (" android . util . Base 6 4 ") ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 . encode ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" token : secret ". toByteArray ( StandardCharsets . UTF _ 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 . NO _ WRAP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġ" credentials " ĊĊĠĠĠĠĠĠĠ Ġmock WebServer . start () ĊĠĠĠĠĠĠĠ Ġmock WebServer . enqueue ( Mock Response ()) ĊĠĠĠĠĠĠĠ Ġval Ġsut Ġ= ĠApi Headers Interceptor ( authorization . build (), Ġapp Metadata Provider ) ĊĠĠĠĠĠĠĠ Ġok HttpClient . add Interceptor ( sut ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġinternal Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer . shutdown () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġthen Ġadd Ġauthorization Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Authorization Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthorization . build (). headers . get (" Authorization "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" Authorization ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Request ( url : ĠString ): ĠRe corded Request Ġ{ ĊĠĠĠĠĠĠĠ Ġok HttpClient . build (). new Call ( Request . Builder (). url ( mock WebServer . url ( url )). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠ Ġreturn Ġmock WebServer . take Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġthen Ġadd Ġcontent Ġtype Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd ContentType Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application / json ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" Content - Type ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġthen Ġadd Ġaccept Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Accept Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" application / json ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" Accept ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġwhen Ġresource Ġis Ġtransactions , Ġthen Ġadd Ġapi Ġversion Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd 5 6 0 ApiVersion Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 . 6 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" Api - Version ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġwhen Ġresource Ġis Ġbank , Ġthen Ġadd Ġapi Ġversion Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd 2 0 0 0 ApiVersion Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/ order / bank / sale ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 . 0 . 0 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" Api - Version ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġthen Ġadd Ġcache Ġcontrol Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Cache Control Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" no - cache ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" Cache - Control ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġthen Ġadd Ġsdk Ġversion Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Sdk Version Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Android -${ Build Config . VERSION _ NAME }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" Sdk - Version ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġthen Ġadd Ġuser Ġagent Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd UserAgent Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġapp Metadata Provider . userAgent Ġ} Ġreturns Ġ" userAgent " ĊĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Metadata Provider . userAgent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" User - Agent ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" Given Ġrequest Ġis Ġintercept ed , Ġthen Ġadd Ġui Ġmode Ġheader ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Ui Mode Header () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecorded Request Ġ= Ġmake Request ("/") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Custom - UI ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorded Request . getHeader (" UI - Client - Mode ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ