package Ġq a . re inal do . tests Ċ Ċ import Ġcom . github . java faker . F aker Ċ import Ġcom . google . gson . Gson Ċ import Ġio . q ame ta . all ure . All ure . step Ċ import Ġio . rest ass ured . builder . Request Spec Builder Ċ import Ġio . rest ass ured . filter . log . Log Detail Ċ import Ġio . rest ass ured . http . ContentType Ċ import Ġio . rest ass ured . module . kotlin . extensions . Extract Ċ import Ġio . rest ass ured . module . kotlin . extensions . Given Ċ import Ġio . rest ass ured . module . kotlin . extensions . Then Ċ import Ġio . rest ass ured . module . kotlin . extensions . When Ċ import Ġio . rest ass ured . module . mock mvc . Rest Ass ured MockMvc Ċ import Ġio . rest ass ured . module . spring . commons . config . Async Config . with Timeout Ċ import Ġio . rest ass ured . response . Response Ċ import Ġio . rest ass ured . specification . Request Specification Ċ import Ġorg . hamcrest . Matchers .* Ċ import Ġorg . junit . jupiter . api . Order Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . status Ċ import Ġq a . re inal do . dados . User Created Ċ import Ġq a . re inal do . dados . UserData Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ class ĠC ad astro Basic o Test Ġ{ ĊĊĠĠĠ Ġ// Ġpe ga Ġo Ġc amin ho Ġdo Ġprojeto ĊĠĠĠ Ġval Ġpath Project Ġ= ĠSystem . getProperty (" user . dir ") ĊĠĠĠ Ġ// Ġl er Ġo Ġarquivo Ġjson ĊĠĠĠ Ġvar Ġcad astro Json Ġ= ĠFile ("$ path Project / src / test / kotlin / resources / userData . json "). read Text ( Charsets . UTF _ 8 ) ĊĠĠĠ Ġvar ĠuserID Json Ġ= ĠFile ("$ path Project / src / test / kotlin / resources / userID . json ") ĊĊĠĠĠ Ġ// Ġpass a Ġos Ġdados Ġde Ġjson Ġpara Ġobjetos Ġpara Ġo Ġkotlin Ġl er . ĊĠĠĠ Ġval Ġcad astro Dados Body Ġ= ĠGson (). fromJson ( cad astro Json , ĠUser Data :: class . java ) ĊĠĠĠ Ġ// Ġusando Ġo ĠFaker Ġpara Ġger ar Ġdados Ġale ator ios . ĊĠĠĠ Ġvar Ġfaker Ġ= ĠFaker () ĊĊĠĠĠ Ġ// Ġpre - requis ito Ġglobal Ġpara Ġos Ġtest es Ġser em Ġexecut ados ĊĠĠĠ Ġfun Ġrequest Specification (): ĠRequest Specification Ġ{ ĊĠĠĠĠĠĠĠ ĠRest Ass ured MockMvc . config Ġ= ĠRest Ass ured MockMvc . config (). async Config ( with Timeout ( 2 0 , ĠTimeUnit . SECONDS )) ĊĠĠĠĠĠĠĠ Ġreturn ĠRequest Spec Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Base Uri (" https :// server est . dev /") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Accept ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ContentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Rel ax ed HTTPS Validation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log ( Log Detail . ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠtoJson File ( value : ĠString ){ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtransform a Ġo Ġjson Ġpara Ġobjeto Ġpara Ġse Ġalter ado Ġo Ġid . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserID : ĠUser Created Ġ= ĠGson (). fromJson ( userID Json . read Text ( Charsets . UTF _ 8 ), ĠUser Created :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserID ._ id Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġes cre ve Ġos Ġdados Ġalter ados Ġpara Ġjson . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Writer ( userID Json ). use Ġ{ Ġwriter Ġ-> ĠGson (). toJson ( userID , Ġwriter ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGiven Ġ> ĠCont Ã©m Ġpre - requis itos Ġdo Ġme u Ġtest e , Ġcomo ĠURL , ĠHeader , ĠContent ĠType , ĠA ce ita Ġcertific ado Ġinvalid o , Ġe Ġo ĠBody . ĊĠĠĠĠ Ġ* ĠWhen Ġ> ĠMet odo ĠHTTP Ġque Ġv ai Ġser Ġutiliz ado Ġe Ġo Ġend Ġpoint . ĊĠĠĠĠ Ġ* ĠThen Ġ> ĠV ai Ġcont er Ġas Ġvalid acoes \ assert ivas Ġcomo Ġret orno Ġ 2 0 1 Ġe Ġmessage Ġig ual Ġao Ġvalor Ġesper ado . ĊĠĠĠĠ Ġ* ĠExtract Ġ> ĠV ai Ġextr air Ġa Ġinform acao Ġda Ġmessage Ġpara Ġser Ġus ada Ġno Ġrel atorio . ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Order ( 0 ) ĊĠĠĠ Ġfun ĠList ar Usuarios C ada str ados (){ ĊĠĠĠĠĠĠĠ Ġstep (" Real iz ando Ġos Ġtest es Ġde Ġcad astro ") ĊĠĠĠĠĠĠĠ Ġcad astro Dados Body . email Ġ= Ġfaker . internet (). email Address () ĊĠĠĠĠĠĠĠ Ġcad astro Dados Body . nome Ġ= Ġfaker . name (). fullName () ĊĠĠĠĠĠĠĠ Ġval Ġdados : ĠResponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspec ( request Specification ()); Ġbody ( cad astro Dados Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ usuarios ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠExtract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ( dados ) ĊĠĠĠĠĠĠĠ Ġstep (" Response : Ġ$ dados ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Order ( 1 ) ĊĠĠĠ Ġfun Ġcad astro De Usuario Test (){ ĊĠĠĠĠĠĠĠ Ġstep (" Real iz ando Ġos Ġtest es Ġde Ġcad astro ") ĊĠĠĠĠĠĠĠ Ġcad astro Dados Body . email Ġ= Ġfaker . internet (). email Address () ĊĠĠĠĠĠĠĠ Ġcad astro Dados Body . nome Ġ= Ġfaker . name (). fullName () ĊĠĠĠĠĠĠĠ Ġval Ġid : ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspec ( request Specification ()); Ġbody ( cad astro Dados Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("/ usuarios ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). statusCode ( 2 0 1 ); Ġstatus (). is 2 xx Successful ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). body (" message ", ĠequalTo (" Cad astro Ġreal izado Ġcom Ġsu cesso ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). body ("_ id ", Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). body ("_ id . length ()", ĠequalTo ( 1 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠExtract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath ("_ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ( id ) ĊĠĠĠĠĠĠĠ Ġstep (" ID : Ġ$ id ") ĊĠĠĠĠĠĠĠ ĠtoJson File ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Order ( 2 ) ĊĠĠĠ Ġfun Ġcad astro De Usuario Message Email Test (){ ĊĠĠĠĠĠĠĠ Ġstep (" Real iz ando Ġos Ġtest es Ġde Ġcad astro ") ĊĠĠĠĠĠĠĠ Ġval Ġ Ġresponse : ĠResponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspec ( request Specification ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ( cad astro Dados Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("/ usuarios ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). statusCode ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). body (" message ", ĠequalTo (" Este Ġemail ĠjÃ¡ ĠestÃ¡ Ġsend o Ġus ado ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). body (" message ", Ġcontains String (" email ĠjÃ¡ ĠestÃ¡ Ġsend o Ġus ado ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat (). body ("_ id ", Ġempty OrNull String ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠExtract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġresponse . path (" message ") Ġas ĠString ĊĠĠĠĠĠĠĠ Ġstep (" message : Ġ$ message "); Ġstep (" response : Ġ${ response . print () }") ĊĠĠĠ Ġ} Ċ Ċ } Ċ