package Ġch . max ant . k dc . mf . partners Ċ Ċ import Ġch . max ant . k dc . mf . partners . entity . Person Type Ċ import Ġio . rest ass ured . Rest Ass ured . given Ċ import Ġio . rest ass ured . builder . Request Spec Builder Ċ import Ġio . rest ass ured . http . ContentType Ċ import Ġorg . hamcrest . Core Matchers . equalTo Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠPart ners SV T Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create AndGet And Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspec Ġ= ĠRequest Spec Builder (). set Port ( 8 0 8 3 ). build () ĊĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dob ": Ġ" 1 9 8 0 - 1 0 - 3 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" email ": Ġ" john @ smith . com ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" firstName ": Ġ" John ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lastName ": Ġ" Sm ith ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" phone ": Ġ" 0 7 8 1 2 3 1 2 3 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ"${ Person Type . PERSON }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate ĊĠĠĠĠĠĠĠ Ġval Ġid : ĠString Ġ= Ġgiven ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ partners ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. extract () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. asString () ĊĊĠĠĠĠĠĠĠ Ġ// Ġread ĊĠĠĠĠĠĠĠ Ġgiven ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ partners /$ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" id ", ĠequalTo ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" firstName ", ĠequalTo (" John ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" lastName ", ĠequalTo (" Sm ith ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" type ", ĠequalTo ( Person Type . PERSON . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" dob ", ĠequalTo (" 1 9 8 0 - 1 0 - 3 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" email ", ĠequalTo (" john @ smith . com ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (" phone ", ĠequalTo (" 0 7 8 1 2 3 1 2 3 4 ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsearch Ġby Ġfirst name ĊĠĠĠĠĠĠĠ Ġgiven ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ partners / search ? firstName = john ") Ġ// Ġlower Ġcase ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. firstName ", ĠequalTo (" John ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. lastName ", ĠequalTo (" Sm ith ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. type ", ĠequalTo ( Person Type . PERSON . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. dob ", ĠequalTo (" 1 9 8 0 - 1 0 - 3 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. email ", ĠequalTo (" john @ smith . com ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. phone ", ĠequalTo (" 0 7 8 1 2 3 1 2 3 4 ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsearch Ġby Ġemail ĊĠĠĠĠĠĠĠ Ġgiven ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ partners / search ? email = smith ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. firstName ", ĠequalTo (" John ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. lastName ", ĠequalTo (" Sm ith ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. type ", ĠequalTo ( Person Type . PERSON . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. dob ", ĠequalTo (" 1 9 8 0 - 1 0 - 3 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. email ", ĠequalTo (" john @ smith . com ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. phone ", ĠequalTo (" 0 7 8 1 2 3 1 2 3 4 ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsearch Ġby Ġphone ĊĠĠĠĠĠĠĠ Ġgiven ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ partners / search ? phone = 0 7 8 1 2 3 1 2 3 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. firstName ", ĠequalTo (" John ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. lastName ", ĠequalTo (" Sm ith ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. type ", ĠequalTo ( Person Type . PERSON . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. dob ", ĠequalTo (" 1 9 8 0 - 1 0 - 3 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. email ", ĠequalTo (" john @ smith . com ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. phone ", ĠequalTo (" 0 7 8 1 2 3 1 2 3 4 ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsearch Ġby Ġdo b ĊĠĠĠĠĠĠĠ Ġgiven ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ partners / search ? dob = 1 9 8 0 - 1 0 - 3 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. firstName ", ĠequalTo (" John ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. lastName ", ĠequalTo (" Sm ith ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. type ", ĠequalTo ( Person Type . PERSON . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. dob ", ĠequalTo (" 1 9 8 0 - 1 0 - 3 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. email ", ĠequalTo (" john @ smith . com ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. phone ", ĠequalTo (" 0 7 8 1 2 3 1 2 3 4 ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsearch Ġby Ġall ĊĠĠĠĠĠĠĠ Ġgiven ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( ContentType . JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ partners / search ? firstName = j & lastName = sm & dob = 1 9 8 0 - 1 0 - 3 1 & email = com & phone = 1 2 3 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. log (). all () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. firstName ", ĠequalTo (" John ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. lastName ", ĠequalTo (" Sm ith ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. type ", ĠequalTo ( Person Type . PERSON . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. dob ", ĠequalTo (" 1 9 8 0 - 1 0 - 3 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. email ", ĠequalTo (" john @ smith . com ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. phone ", ĠequalTo (" 0 7 8 1 2 3 1 2 3 4 ")) ĊĠĠĠ Ġ} Ċ }