package Ġes . ur jc . real food . clients . integration Ċ Ċ import Ġes . ur jc . real food . clients . infrastructure . api . rest . Client RestController Test Ċ import Ġes . ur jc . real food . clients . application . Find ById ClientResponse Ċ import Ġes . ur jc . real food . clients . application . Login ClientResponse Ċ import Ġes . ur jc . real food . clients . domain . exception . Entity NotFoundException Ċ import Ġio . rest ass ured . Rest Ass ured Ċ import Ġio . rest ass ured . http . ContentType Ċ import Ġorg . hamcrest . Matchers Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . mockito . Mockito . any Map Ċ Ċ class ĠClient RestController IntegrationTest Ġ: ĠClient RestController Test () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġprofile Ġendpoint Ġwhen Ġfind Ġme Ġthen Ġreturn Ġstatus Ġok `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( jwt Validator Service . get Subject From Headers ( any Map ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( valid UserId ()) ĊĠĠĠĠĠĠĠ Ġ` when `( findById Client ( valid Find ById Client Request ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( valid Find ById ClientResponse ()) ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured . given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Authorization ", Ġ" Bearer Ġ${ valid Jwt () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( valid Find ById Client Request Json ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ api / clients / me ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" id ", ĠMatch ers . equalTo ( valid UserId ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" name ", ĠMatch ers . equalTo (" C rist o fer ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" lastName ", ĠMatch ers . equalTo (" Lo pe z ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" email ", ĠMatch ers . equalTo (" cri sto fer @ cri sto fer . es ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. extract (). ` as `( Find ById ClientResponse :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġprofile Ġendpoint Ġwhen Ġclient Ġnot Ġfound Ġexception Ġthen Ġreturn Ġ 4 0 4 Ġstatus Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( jwt Validator Service . get Subject From Headers ( any Map ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( valid UserId ()) ĊĠĠĠĠĠĠĠ Ġ` when `( findById Client ( valid Find ById Client Request ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Throw ( Entity NotFoundException (" Client Ġnot Ġfound ")) ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured . given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Authorization ", Ġ" Bearer Ġ${ valid Jwt () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( valid Find ById Client Request Json ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ api / clients / me ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 4 0 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" reason ", ĠMatch ers . equalTo (" Client Ġnot Ġfound ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġunsubscribe Ġendpoint Ġwhen Ġdelete Ġme Ġthen Ġreturn Ġstatus Ġok `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( jwt Validator Service . get Subject From Headers ( any Map ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( valid UserId ()) ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured . given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Authorization ", Ġ" Bearer Ġ${ valid Jwt () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( valid Delete Client Request Json ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete ("/ api / clients / me ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġunsubscribe Ġendpoint Ġwhen Ġclient Ġnot Ġfound Ġexception Ġthen Ġreturn Ġ 4 0 4 Ġstatus Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( jwt Validator Service . get Subject From Headers ( any Map ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( valid UserId ()) ĊĠĠĠĠĠĠĠ Ġ` when `( delete Client ( valid Delete Client Request ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Throw ( Entity NotFoundException (" Client Ġnot Ġfound ")) ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured . given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Authorization ", Ġ" Bearer Ġ${ valid Jwt () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( valid Delete Client Request Json ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete ("/ api / clients / me ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 4 0 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" reason ", ĠMatch ers . equalTo (" Client Ġnot Ġfound ")) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġlogin Ġendpoint Ġwhen Ġlogin Ġthen Ġreturn Ġstatus Ġok `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( login Client ( valid Login Client Request ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( valid Login ClientResponse ()) ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured . given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( valid Login Client Request Json ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / sign - in ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" clientId ", ĠMatch ers . equalTo ( valid UserId ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. extract (). ` as `( Login ClientResponse :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġlogin Ġendpoint Ġwhen Ġclient Ġnot Ġfound Ġexception Ġthen Ġreturn Ġ 4 0 4 Ġstatus Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( login Client ( valid Login Client Request ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Throw ( Entity NotFoundException (" Client Ġnot Ġfound ")) ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured . given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( valid Login Client Request Json ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / sign - in ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 4 0 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" reason ", ĠMatch ers . equalTo (" Client Ġnot Ġfound ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġlogin Ġendpoint Ġwhen Ġillegal Ġargument Ġexception Ġthen Ġreturn Ġ 4 0 0 Ġstatus Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( login Client ( valid Login Client Request ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Throw ( IllegalArgumentException (" Illegal ")) ĊĊĠĠĠĠĠĠĠ ĠRest Ass ured . given () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( valid Login Client Request Json ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` when `() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / sign - in ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertThat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" reason ", ĠMatch ers . equalTo (" Illegal ")) ĊĠĠĠ Ġ} Ċ Ċ }