package Ġcom . run et op ic . tools . obj čĊč Ċ import Ġcom . run et op ic . Test Environment č Ċ import Ġcom . run et op ic . Test Environment . JWT _ TOKEN č Ċ import Ġcom . run et op ic . api . tools . obj . Obj č Ċ import Ġcom . run et op ic . api . tools . obj . Obj Service č Ċ import Ġcom . run et op ic . plugins . login Token č Ċ import Ġcom . run et op ic . test Jack son ObjectMapper č Ċ import Ġio . ktor . application .* č Ċ import Ġio . ktor . config .* č Ċ import Ġio . ktor . http .* č Ċ import Ġio . ktor . server . testing .* č Ċ import Ġio . mock k .* č Ċ import Ġkotlinx . coroutines . run Blocking č Ċ import Ġorg . k oin . ktor . ext . inject č Ċ import Ġorg . lit ote . km ongo . new Id č Ċ import Ġkotlin . test . Before Test č Ċ import Ġkotlin . test . Test č Ċ import Ġkotlin . test . assertEquals č Ċ import Ġkotlin . time . measure Time čĊč Ċ /** čĊ Ġ* Ġ@ author ĠJ ordan ĠA br ah am čĊ Ġ*/ č Ċ class ĠObj Controller Test Ġ{ čĊčĊĠĠĠ Ġ@ Before Test čĊĠĠĠ Ġfun Ġ` clear Ġobj Ġstorage `() Ġ= Ġwith Test Application ( Test Environment ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġmeasure Time Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( application . inject < Obj Service >()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . value . count < Obj >() Ġ!= Ġ 0 L ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value . drop < Obj >() čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġapplication . log . info (" Test Ġtook Ġ$ time ") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġ` test Ġnot Ġauthorized `() Ġ= Ġwith Test Application ( Test Environment ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġmeasure Time Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( handle Request ( HttpMethod . Get , Ġ"/ api / tools / objs ")) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatusCode . Unauthorized , Ġresponse . status ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġapplication . log . info (" Test Ġtook Ġ$ time ") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġ` test Ġget Ġobjs Ġempty `() Ġ= Ġwith Test Application ( Test Environment ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġmeasure Time Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Request ( HttpMethod . Get , Ġ"/ api / tools / objs ") Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header (" Authorization ", Ġ" Bearer Ġ${ login Token (" test ", ĠJWT _ TOKEN )} ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatusCode . OK , Ġresponse . status ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ("[ Ġ] ", Ġresponse . content ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġapplication . log . info (" Test Ġtook Ġ$ time ") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġ` test Ġpost Ġobj `() Ġ= Ġwith Test Application ( Test Environment ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġmeasure Time Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġmock k < Obj >() čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġobj . uuid Ġ} Ġreturns Ġnew Id () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġobj . id Ġ} Ġreturns Ġ 4 1 5 1 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġobj . name Ġ} Ġreturns Ġ" A by ss al ĠWh ip " čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Request ( HttpMethod . Post , Ġ"/ api / tools / objs ") Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header (" Authorization ", Ġ" Bearer Ġ${ login Token (" test ", ĠJWT _ TOKEN )} ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( HttpHeaders . ContentType , Ġ" application / json ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Body ( test Jack son ObjectMapper (). writeValue AsString ( obj )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatusCode . Created , Ġresponse . status ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Verified () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġapplication . log . info (" Test Ġtook Ġ$ time ") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġ` test Ġget Ġobjs `() Ġ= Ġwith Test Application ( Test Environment ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġmeasure Time Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġmock k < Obj >() čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġobj . uuid Ġ} Ġreturns Ġnew Id () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġobj . id Ġ} Ġreturns Ġ 4 1 5 1 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġobj . name Ġ} Ġreturns Ġ" A by ss al ĠWh ip " čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Request ( HttpMethod . Post , Ġ"/ api / tools / objs ") Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header (" Authorization ", Ġ" Bearer Ġ${ login Token (" test ", ĠJWT _ TOKEN )} ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( HttpHeaders . ContentType , Ġ" application / json ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Body ( test Jack son ObjectMapper (). writeValue AsString ( obj )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatusCode . Created , Ġresponse . status ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Request ( HttpMethod . Get , Ġ"/ api / tools / objs ") Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header (" Authorization ", Ġ" Bearer Ġ${ login Token (" test ", ĠJWT _ TOKEN )} ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( test Jack son ObjectMapper (). readValue ( response . content , ĠArray < Obj >:: class . java ). first ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( obj . id , Ġid ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( obj . name , Ġname ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatusCode . OK , Ġresponse . status ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġobj . id Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġobj . name Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Verified () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġapplication . log . info (" Test Ġtook Ġ$ time ") čĊĠĠĠ Ġ} č Ċ } čĊ