package Ġcom . gl ance bar . api boilerplate . controller Ċ Ċ import Ġcom . gl ance bar . api boilerplate . entity . Role Entity Ċ import Ġcom . gl ance bar . api boilerplate . entity . User Entity Ċ import Ġcom . gl ance bar . api boilerplate . repository . UserRepository Ċ import Ġcom . gl ance bar . api boilerplate . utils . Auth Result Ċ import Ġcom . gl ance bar . api boilerplate . utils . create Request Entity Ċ import Ġio . json web token . lang . Assert Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . autoconfigure . web . servlet . Auto Configure MockMvc Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . boot . test . mock . mockito . Mock Bean Ċ import Ġorg . springframework . boot . test . web . client . Test Rest Template Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . security . crypto . password . Password Encoder Ċ import Ġorg . springframework . test . web . servlet . MockMvc Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers Ċ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ @ SpringBootTest ( web Environment Ġ= ĠSpring Boot Test . Web Environment . RANDOM _ PORT ) Ċ @ Auto Configure MockMvc Ċ internal Ġclass ĠHello Controller Test Ġ{ ĊĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġrest Template : ĠTest Rest Template ĊĊĠĠĠ Ġ@ Mock Bean ĊĠĠĠ Ġlateinit Ġvar Ġuser Repository : ĠUser Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġmock Mvc : ĠMock Mvc ĊĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġpassword Encoder : ĠPassword Encoder ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠaccessToken : ĠString ĊĊĠĠĠ Ġval Ġusername Ġ= Ġ" username " ĊĠĠĠ Ġval Ġorigin Password Ġ= Ġ" password " ĊĊĠĠĠ Ġlateinit Ġvar Ġpassword : ĠString ĊĊĠĠĠ Ġlateinit Ġvar Ġuser Entity : ĠUser Entity ĊĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword Encoder . encode ( origin Password ) ĊĠĠĠĠĠĠĠ Ġuser Entity Ġ= ĠUser Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġusername , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroles Ġ= Ġmutable Set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRole Entity ( name Ġ= Ġ" ROLE _ USER ", Ġdescription Ġ= Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHttp Headers () ĊĠĠĠĠĠĠĠ Ġheaders [" Authorization "] Ġ= Ġ" Basic Ġa GV sb G 8 x Oj Ey Mz Q 1 Ng ==" ĊĠĠĠĠĠĠĠ ĠMockito .` when `( user Repository . find Top By Username Equals ( username )). thenReturn ( user Entity ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Entity : ĠResponseEntity < Auth Result > Ġ= Ġrest Template . exchange ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ auth / login ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpMethod . POST , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Request Entity ( username , Ġorigin Password ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuth Result :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠAssert . notNull ( response Entity . body !!. accessToken ) ĊĠĠĠĠĠĠĠ Ġthis . accessToken Ġ= Ġresponse Entity . body !!. accessToken ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġhello () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( user Repository . find Top By Username Equals ( username )). thenReturn ( user Entity ) ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHttp Headers () ĊĠĠĠĠĠĠĠ Ġheaders [" Authorization "] Ġ= Ġ" Bearer Ġ$ accessToken " ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock Mvc Request Builders . get ("/ hello ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers ( headers ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock Mvc Result Matchers . status (). is 2 xx Successful ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock Mvc Result Matchers . content () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMock Mvc Result Matchers . json Path (" $. msg "). exists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }