package Ġintegration . eth . contracts Ċ Ċ import Ġcontract . Relay Registry Ċ import Ġintegration . helper . Contract TestHelper Ċ import Ġintegration . helper . I ro ha Config Helper Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . web 3 j . crypto . EC KeyPair Ċ import Ġorg . web 3 j . crypto . Keys Ċ import Ġorg . web 3 j . protocol . exceptions . Transaction Exception Ċ import Ġjava . time . Duration Ċ Ċ class ĠRelay Registry Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġc th : ĠContract TestHelper ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrelay Registry : ĠRelay Registry ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġacc Green : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġkey pair : ĠEC KeyPair ĊĊĠĠĠ Ġprivate Ġval Ġtimeout Duration Ġ= ĠDuration . of Minutes ( I ro ha Config Helper . timeout Minutes ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġc th Ġ= ĠContract TestHelper () ĊĠĠĠĠĠĠĠ Ġrelay Registry Ġ= Ġc th . relay Registry ĊĠĠĠĠĠĠĠ Ġacc Green Ġ= Ġc th . acc Green ĊĠĠĠĠĠĠĠ Ġkey pair Ġ= Ġc th . key pair ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ given Ġdeployed Ġrelay Ġregistry Ġcontract ĊĠĠĠĠ Ġ* Ġ@ when Ġadd Ġnew Ġrelay Ġtwice ĊĠĠĠĠ Ġ* Ġ@ then Ġsecond Ġcall Ġthrows Ġexception ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Same White List Tw ice () Ġ{ ĊĠĠĠĠĠĠĠ ĠAssertions . assert Timeout Pre empt ively ( timeout Duration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc th . add White List To Relay Registry ( Keys . getAddress ( key pair ), ĠlistOf ( acc Green )) Ġ// Ġfirst Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assert Throws ( Transaction Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc th . add White List To Relay Registry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeys . getAddress ( key pair ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( acc Green ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// Ġsecond Ġcall ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ given Ġdeployed Ġrelay Ġregistry Ġcontract ĊĠĠĠĠ Ġ* Ġ@ when Ġadd Ġnew Ġwhite Ġlist Ġand Ġcheck Ġaddress Ġin Ġwhite Ġlist ĊĠĠĠĠ Ġ* Ġ@ then Ġaddress Ġshould Ġbe Ġin Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd White List And Check Address () Ġ{ ĊĠĠĠĠĠĠĠ ĠAssertions . assert Timeout Pre empt ively ( timeout Duration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc th . add White List To Relay Registry ( Keys . getAddress ( key pair ), ĠlistOf ( acc Green )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( relay Registry . is White List ed ( Keys . getAddress ( key pair ), Ġacc Green ). send ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ given Ġrelay Ġregistry Ġcontract ĊĠĠĠĠ Ġ* Ġ@ when Ġadd Ġlist Ġof Ġ 1 0 0 Ġaddresses ĊĠĠĠĠ Ġ* Ġ@ then Ġall Ġaddresses Ġshould Ġbe Ġstored Ġsuccessful ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd One H undred Addresses In White List And Check The m () Ġ{ ĊĠĠĠĠĠĠĠ ĠAssertions . assert Timeout Pre empt ively ( timeout Duration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwhite List Size Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġequal Addresses Size Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwhite List Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġwhite List Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey pair Ġ= ĠKeys . create Ec KeyPair () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhite List . add ( Keys . getAddress ( key pair )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress List : ĠList < String > Ġ= Ġwhite List . toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġc th . add White List To Relay Registry ( Keys . getAddress ( key pair ), Ġaddress List ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġaddress List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( relay Registry . is White List ed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeys . getAddress ( key pair ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress List [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). send () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequal Addresses Size ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( equal Addresses Size , Ġrelay Registry . get White ListBy Relay ( Keys . getAddress ( key pair )). send (). size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO : Ġmake Ġtest Ġfor Ġempty Ġwhitelist Ġin Ġsmart Ġcontract ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ given Ġrelay Ġregistry Ġcontract ĊĠĠĠĠ Ġ* Ġ@ when Ġtry Ġto Ġstore Ġempty Ġlist ĊĠĠĠĠ Ġ* Ġ@ then Ġtransaction Ġshould Ġbe Ġsuccessful ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset Empty List () Ġ{ ĊĠĠĠĠĠĠĠ ĠAssertions . assert Timeout Pre empt ively ( timeout Duration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġc th . add White List To Relay Registry ( Keys . getAddress ( key pair ), ĠlistOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġcall . is StatusOK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ