package Ġno . nav . hel se Ċ Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson ObjectMapper Ċ import Ġio . ktor . http . HttpHeaders Ċ import Ġio . ktor . http . HttpMethod Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . server . testing . Test Application Engine Ċ import Ġio . ktor . server . testing . handle Request Ċ import Ġio . ktor . server . testing . set Body Ċ import Ġno . nav . hel se . d us se ld or f . ktor . jackson . d us se ld or f Configured Ċ import Ġorg . json . JSONObject Ċ import Ġorg . sky sc ream er . json assert . JSON Assert Ċ import Ġorg . slf 4 j . Logger Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ Ċ object ĠRequest Utils Ġ{ ĊĠĠĠ Ġprivate Ġval ĠobjectMapper Ġ= Ġj ack son ObjectMapper (). d us se ld or f Configured () ĊĊĠĠĠ Ġfun Ġrequest And Assert ( ĊĠĠĠĠĠĠĠ Ġs ok nad : ĠString , ĊĠĠĠĠĠĠĠ Ġexpected Response : ĠString ?, ĊĠĠĠĠĠĠĠ Ġexpected Code : ĠHttpStatusCode , ĊĠĠĠĠĠĠĠ Ġle gg Til Correlation Id : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġle gg Til Authorization : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ ĠaccessToken : ĠString , ĊĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠ Ġlogger : ĠLogger , ĊĠĠĠĠĠĠĠ Ġkafka Engine : ĠTest Application Engine ĊĠĠĠ Ġ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( kafka Engine ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Request ( HttpMethod . Post , Ġpath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( leg g Til Authorization ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( HttpHeaders . Authorization , Ġ" Bearer Ġ$ accessToken ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( leg g Til Correlation Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( HttpHeaders . X Correlation Id , Ġ" 1 2 3 1 5 6 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( HttpHeaders . ContentType , Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Entity Ġ= ĠobjectMapper . writeValue AsString ( so kn ad ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Request ĠEntity Ġ= Ġ$ request Entity ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Body ( so kn ad ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Response ĠEntity Ġ= Ġ${ response . content }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Expected ĠEntity Ġ= Ġ$ expected Response ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Code , Ġresponse . status ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Response Ġ!= Ġnull Ġ-> ĠJSON Assert . assertEquals ( expected Response , Ġresponse . content !! , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . Accepted Ġ== Ġresponse . status () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject ( response . content !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġjson . keySet (). size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs ok nad Id Ġ= Ġjson . getString (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( so kn ad Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs ok nad Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠassertEquals ( expected Response , Ġresponse . content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ