package Ġcom . example . api . integration Ċ Ċ import Ġcom . example . api . controller . model . Employee Dto Ċ import Ġcom . example . api . service . Employee Service Ċ import Ġcom . example . api . utils . faker . Employee F aker Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġorg . junit . Assert . assertNotNull Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ 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 . boot . web . server . Local Server Port Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . Http Entity Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . test . context . Active Profiles Ċ import Ġjava . net . URI Ċ Ċ /** Ċ Ġ* ĠTODO : ĠAdd Ġtests Ġfor ĠPOST , ĠPUT Ġand ĠDELETE Ġcontrollers Ċ Ġ*/ Ċ @ Active Profiles (" test ") Ċ @ SpringBootTest ( web Environment Ġ= ĠSpring Boot Test . Web Environment . RANDOM _ PORT ) Ċ class ĠEmployee HttpRequest Test Ġ{ ĊĠĠĠ Ġ@ Local Server Port ĊĠĠĠ Ġprivate Ġval Ġapplication Port : ĠInt Ġ= Ġ 8 0 8 2 ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtest Rest Template : ĠTest Rest Template ĊĊĠĠĠ Ġ@ Mock Bean ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġemployee Service : ĠEmployee Service ĊĊĠĠĠ Ġprivate Ġval Ġid Ġ= ĠMath . random (). to Long () ĊĊĠĠĠ Ġprivate Ġfun Ġapplication Url () Ġ= Ġ" http :// localhost :$ application Port " ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Given Ġvalid Ġurl , Ġwhen ĠGET Ġemployee Ġis Ġcalled , Ġthen Ġreturns Ġemployee Ġlist Ġwith Ġstatus Ġ 2 0 0 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemployee List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmployee F aker . fake Employee (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmployee F aker . fake Employee (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmployee F aker . fake Employee (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmployee F aker . fake Employee () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( employee Service . getAll Employees ()). do Return ( employee List ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġtest Rest Template . with Basic Auth (" user ", Ġ" user ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠURI ( application Url () Ġ+ Ġ"/ employees "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpMethod . GET , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Entity (""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( response ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . OK , Ġresponse . statusCode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Given Ġvalid Ġurl Ġwith Ġinvalid Ġlogin Ġcredentials , Ġwhen ĠGET Ġemployee Ġis Ġcalled , Ġthen Ġreturns Ġstatus Ġ 4 0 1 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemployee List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmployee F aker . fake Employee (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmployee F aker . fake Employee (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmployee F aker . fake Employee (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmployee F aker . fake Employee () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( employee Service . getAll Employees ()). do Return ( employee List ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġtest Rest Template . with Basic Auth (" user ", Ġ" abc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠURI ( application Url () Ġ+ Ġ"/ employees "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpMethod . GET , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Entity (""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVoid :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . UN AUTHORIZ ED , Ġresponse . statusCode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Given Ġvalid Ġurl , Ġwhen ĠGET Ġemployee Ġby Ġid Ġis Ġcalled , Ġthen Ġreturns Ġemployee Ġwith Ġstatus Ġ 2 0 0 Ġ` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemployee Ġ= ĠEmployee F aker . fake Employee (). copy ( id Ġ= Ġid ) ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( employee Service . get Employees ById ( id )). do Return ( employee ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġtest Rest Template . with Basic Auth (" user ", Ġ" user ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get For Entity ( application Url () Ġ+ Ġ"/ employees /{ id }", ĠEmployee Dto :: class . java , Ġid ) ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( response ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . OK , Ġresponse . statusCode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Given Ġvalid Ġurl Ġwith Ġinvalid Ġlogin Ġcredentials , Ġwhen ĠGET Ġemployee Ġby Ġid Ġis Ġcalled , Ġthen Ġreturns Ġstatus Ġ 4 0 1 Ġ` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemployee Ġ= ĠEmployee F aker . fake Employee (). copy ( id Ġ= Ġid ) ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( employee Service . get Employees ById ( id )). do Return ( employee ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġtest Rest Template . with Basic Auth (" xyz ", Ġ" user ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get For Entity ( application Url () Ġ+ Ġ"/ employees /{ id }", ĠVoid :: class . java , Ġid ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . UN AUTHORIZ ED , Ġresponse . statusCode ) ĊĠĠĠ Ġ} Ċ } Ċ