package Ġorg . http 4 k . aws Ċ Ċ import Ġcom . nat pr y ce . ham k rest . assertion . assertThat Ċ import Ġcom . nat pr y ce . ham k rest . contains Substring Ċ import Ġcom . nat pr y ce . ham k rest . equalTo Ċ import Ġorg . http 4 k . client . Apache Client Ċ import Ġorg . http 4 k . core . Http Handler Ċ import Ġorg . http 4 k . core . Method . DELETE Ċ import Ġorg . http 4 k . core . Method . GET Ċ import Ġorg . http 4 k . core . Method . PUT Ċ import Ġorg . http 4 k . core . Request Ċ import Ġorg . http 4 k . core . Status . Companion . NO _ CONTENT Ċ import Ġorg . http 4 k . core . Status . Companion . OK Ċ import Ġorg . http 4 k . core . Uri Ċ import Ġorg . http 4 k . core . then Ċ import Ġorg . http 4 k . filter . Aws Auth Ċ import Ġorg . http 4 k . filter . Client Filters Ċ import Ġorg . http 4 k . filter . Debugging Filters Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Ass ume . assume True Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . BeforeClass Ċ import Ġorg . junit . Test Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . util .* Ċ Ċ class ĠAws Real Test Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġclient : ĠHttp Handler ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbucket Name : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġkey : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbucket Url : ĠUri ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġkey Url : ĠUri ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġs 3 Root : ĠUri ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġcreate Client () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĠĠĠĠĠĠĠ Ġproperties . load ( properties ()) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Developer Ġshould Ġunderstand Ġwhat Ġthis Ġtest Ġdoes - Ġset Ġsign My Life Away Ġproperty Ġto Ġthe Ġexpected Ġvalue .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . getProperty (" sign My Life Away "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo (" I 've Ġchecked Ġthe Ġcode Ġof Ġthis Ġtest Ġand Ġunderstand Ġthat Ġit Ġcreates Ġand Ġdeletes Ġbuckets Ġand Ġkeys Ġusing Ġmy Ġcredentials ")) ĊĊĠĠĠĠĠĠĠ Ġclient Ġ= ĠDebug ging Filters . Print Request And Response () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( Client Filters . Aws Auth ( Aws Credential Scope ( properties . getProperty (" region "), Ġproperties . getProperty (" service ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAws Credentials ( properties . getProperty (" access Key "), Ġproperties . getProperty (" secret Key "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then ( Apache Client ())) ĊĊĠĠĠĠĠĠĠ Ġbucket Name Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġkey Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġbucket Url Ġ= ĠUri . of (" https :// $ bucketName . s 3 . amazonaws . com /") ĊĠĠĠĠĠĠĠ Ġkey Url Ġ= ĠUri . of (" https :// $ bucketName . s 3 . amazonaws . com /$ key ") ĊĠĠĠĠĠĠĠ Ġs 3 Root Ġ= ĠUri . of (" https :// s 3 . amazonaws . com /") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġput Then Get Then Delete () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontents Ġ= ĠUUID . randomUUID (). toString () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bucket Ġshould Ġnot Ġexist Ġin Ġroot Ġlisting ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( GET , Ġs 3 Root !! )). body String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! contains Substring ( bucketName !! )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Put Ġof Ġbucket Ġshould Ġsucceed ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( PUT , Ġbucket Url !! )). status , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( OK )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bucket Ġshould Ġexist Ġin Ġroot Ġlisting ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( GET , Ġs 3 Root !! )). body String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Substring ( bucketName !! )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Key Ġshould Ġnot Ġexist Ġin Ġbucket Ġlisting ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( GET , Ġbucket Url !! )). body String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! contains Substring ( key !! )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Put Ġof Ġkey Ġshould Ġsucceed ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( PUT , Ġkey Url !! ). body ( contents )). status , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( OK )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Key Ġshould Ġappear Ġin Ġbucket Ġlisting ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( GET , Ġbucket Url !! )). body String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Substring ( key !! )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Key Ġcontents Ġshould Ġbe Ġas Ġexpected ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( GET , Ġkey Url !! )). body String (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( contents )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Delete Ġof Ġkey Ġshould Ġsucceed ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( DELETE , Ġkey Url !! )). status , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( NO _ CONTENT )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Key Ġshould Ġno Ġlonger Ġappear Ġin Ġbucket Ġlisting ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( GET , Ġbucket Url !! )). body String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! contains Substring ( key !! )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Delete Ġof Ġbucket Ġshould Ġsucceed ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( DELETE , Ġbucket Url !! )). status , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( NO _ CONTENT )) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bucket Ġshould Ġno Ġlonger Ġexist Ġin Ġroot Ġlisting ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient !! ( Request ( GET , Ġs 3 Root !! )). body String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! contains Substring ( bucketName !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġremove Bucket () Ġ{ ĊĠĠĠĠĠĠĠ Ġclient !! ( Request ( DELETE , Ġbucket Url !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ BeforeClass Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcheck Properties Exist () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassume True ( properties () Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġproperties (): ĠInputStream ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAws Real Test :: class . java . getResource AsStream (" aws . properties ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ