package Ġnet . wu ille min . j ds . common . security . client Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġnet . wu ille min . j ds . common . config . Common Properties Ċ import Ġnet . wu ille min . j ds . common . security . JWT Constant . Companion . HTTP _ HEADER _ AUTHORIZATION Ċ import Ġnet . wu ille min . j ds . common . security . Server Reference Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . springframework . http . Http Entity Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpMethod . GET Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . client . Client HttpRequest Interceptor Ċ import Ġorg . springframework . test . context . junit . jupiter . Spring Extension Ċ import Ġorg . springframework . test . web . client . Expected Count . once Ċ import Ġorg . springframework . test . web . client . Mock Rest ServiceServer Ċ import Ġorg . springframework . test . web . client . match . Mock Rest Request Matchers . method Ċ import Ġorg . springframework . test . web . client . match . Mock Rest Request Matchers . request To Ċ import Ġorg . springframework . test . web . client . response . Mock Rest Response Creators . with Success Ċ import Ġorg . springframework . util . Assert Ċ import Ġorg . springframework . web . client . Rest Template Ċ import Ġjava . net . URI ĊĊ Ċ @ Extend With ( Spring Extension :: class ) Ċ class ĠClient HttpRequest Authenticator No Auth Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` No Auth Ġdoes Ġnot Ġadd Ġan ĠAuthorization Ġheader `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠProperties ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠMockito . mock ( Common Properties :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMockito . mock ( Common Properties . Client :: class . java ) ĊĠĠĠĠĠĠĠ Ġwhenever ( client . no Auth entic ations ). thenReturn ( Common Properties . No Authentication ( listOf ( Server Reference (" localhost ", Ġ 8 0 8 0 )))) ĊĠĠĠĠĠĠĠ Ġwhenever ( properties . client ). thenReturn ( client ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġauth enticator ĊĠĠĠĠĠĠĠ Ġval Ġauth enticator Ġ= ĠClient HttpRequest Authenticator No Auth ( properties ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= ĠClient HttpRequest Interceptor Ġ{ Ġrequest , Ġbody , Ġexecution Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth enticator . add Authentication ( request , Ġbody , Ġexecution ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecution . execute ( request , Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġrest Ġtemplate ĊĠĠĠĠĠĠĠ Ġval Ġrest Template Ġ= ĠRest Template () ĊĠĠĠĠĠĠĠ Ġrest Template . intercept ors . add ( interceptor ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMock Ġthe Ġserver ĊĠĠĠĠĠĠĠ Ġval Ġmock Server Ġ= ĠMock Rest ServiceServer . bind To ( rest Template ). build () ĊĊĠĠĠĠĠĠĠ Ġ// ĠPrepare Ġthe Ġserver ĊĠĠĠĠĠĠĠ Ġmock Server . expect ( once (), Ġrequest To (" http :// localhost : 8 0 8 0 / test ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( method ( GET )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect Ġ{ Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Values Ġ= Ġrequest . headers [ HTTP _ HEADER _ AUTHORIZATION ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . isNull ( header Values , Ġ" Authorization Ġheader Ġis Ġpresent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( with Success (" response ", ĠMediaType . TEXT _ PLAIN )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDo Ġthe Ġquery ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . get For Entity ( URI . create (" http :// localhost : 8 0 8 0 / test "), ĠString :: class . java ). body ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġresponse ĊĠĠĠĠĠĠĠ ĠassertThat ( response ). isNotNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( response ). isEqualTo (" response ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġserver ĊĠĠĠĠĠĠĠ Ġmock Server . verify () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` No Auth Ġover writes Ġan Ġexisting ĠAuthorization Ġheader `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠProperties ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠMockito . mock ( Common Properties :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMockito . mock ( Common Properties . Client :: class . java ) ĊĠĠĠĠĠĠĠ Ġwhenever ( client . no Auth entic ations ). thenReturn ( Common Properties . No Authentication ( listOf ( Server Reference (" localhost ", Ġ 8 0 8 0 )))) ĊĠĠĠĠĠĠĠ Ġwhenever ( properties . client ). thenReturn ( client ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġauth enticator ĊĠĠĠĠĠĠĠ Ġval Ġauth enticator Ġ= ĠClient HttpRequest Authenticator No Auth ( properties ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= ĠClient HttpRequest Interceptor Ġ{ Ġrequest , Ġbody , Ġexecution Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth enticator . add Authentication ( request , Ġbody , Ġexecution ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecution . execute ( request , Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġrest Ġtemplate ĊĠĠĠĠĠĠĠ Ġval Ġrest Template Ġ= ĠRest Template () ĊĠĠĠĠĠĠĠ Ġrest Template . intercept ors . add ( interceptor ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMock Ġthe Ġserver ĊĠĠĠĠĠĠĠ Ġval Ġmock Server Ġ= ĠMock Rest ServiceServer . bind To ( rest Template ). build () ĊĊĠĠĠĠĠĠĠ Ġ// ĠPrepare Ġthe Ġserver ĊĠĠĠĠĠĠĠ Ġmock Server . expect ( once (), Ġrequest To (" http :// localhost : 8 0 8 0 / test ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( method ( GET )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect Ġ{ Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Values Ġ= Ġrequest . headers [ HTTP _ HEADER _ AUTHORIZATION ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . isNull ( header Values , Ġ" Authorization Ġheader Ġis Ġpresent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( with Success (" response ", ĠMediaType . TEXT _ PLAIN )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠPrepare Ġthe Ġquery ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHttp Headers () ĊĠĠĠĠĠĠĠ Ġheaders . set Basic Auth (" user ", Ġ" password ") ĊĠĠĠĠĠĠĠ Ġval Ġhttp Entity Ġ= ĠHttp Entity < Void >( headers ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠURI . create (" http :// localhost : 8 0 8 0 / test "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGET , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Entity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ĊĊĠĠĠĠĠĠĠ ĠassertThat ( response ). isNotNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( response ). isEqualTo (" response ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġserver ĊĠĠĠĠĠĠĠ Ġmock Server . verify () ĊĠĠĠ Ġ} Ċ }