package Ġcom . github . dan zx . x of . entrypoint . rest . controller Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ Ċ import Ġcom . github . dan zx . x of . core . use case . UseCase Executor Ċ import Ġcom . github . dan zx . x of . entrypoint . rest . response . ErrorResponse Ċ Ċ import Ġcom . nin jas quad . spring mock k . Spy k Bean Ċ Ċ import Ġio . kot lint est . matchers . date . be In Today Ċ import Ġio . kot lint est . should Ċ import Ġio . kot lint est . shouldBe Ċ Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . test . context . Test Property Source Ċ import Ġorg . springframework . test . context . junit . jupiter . Spring Extension Ċ import Ġorg . springframework . test . web . servlet . MockMvc Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders . get Ċ Ċ @ Extend With ( Spring Extension :: class ) Ċ @ Test Property Source ( properties =[" spring . main . banner - mode = off "]) Ċ abstract Ġclass ĠSpring RestController Test Ġ{ ĊĊĠĠĠ Ġobject ĠTest UseCase Executor Ġ: ĠUse Case Executor ĊĊĠĠĠ Ġ@ Autowired Ġprotected Ġlateinit Ġvar Ġm vc : ĠMock Mvc ĊĠĠĠ Ġ@ Autowired Ġprotected Ġlateinit Ġvar Ġjson Mapper : ĠObjectMapper ĊĠĠĠ Ġ@ Spy k Bean Ġ Ġprotected Ġlateinit Ġvar Ġuse Case Executor : ĠTest UseCase Executor ĊĊĠĠĠ Ġprotected Ġval Ġservlet Uri : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġm vc . perform ( get ("/ ")). andReturn (). request ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġport Ġ= Ġif Ġ( request . server Port Ġ== Ġ 8 0 ) Ġ"" Ġelse Ġ": ${ request . server Port }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"${ request . scheme } ://${ request . server Name }$ port " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġinline Ġfun Ġ< re ified ĠT > ĠString . parse As () Ġ= Ġjson Mapper . readValue < T >( this ) ĊĊĠĠĠ Ġprotected Ġfun Ġ< T : ĠAny > ĠT . toJson () Ġ= Ġjson Mapper . writeValue AsString ( this ) ĊĊĠĠĠ Ġprotected Ġin fix Ġfun ĠError Response . shouldBe ( expected : ĠError Response ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . error ĠshouldBe Ġexpected . error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . status ĠshouldBe Ġexpected . status ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . message ĠshouldBe Ġexpected . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . field Errors ĠshouldBe Ġexpected . field Errors ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . path ĠshouldBe Ġexpected . path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . timestamp Ġshould Ġbe In Today () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ