11package co .rsk .peg ;
22
3+ import static co .rsk .core .RskAddress .ZERO_ADDRESS ;
34import static co .rsk .peg .PegTestUtils .createHash3 ;
45import static org .ethereum .vm .PrecompiledContracts .BRIDGE_ADDR ;
56import static org .junit .jupiter .api .Assertions .*;
@@ -3414,10 +3415,13 @@ class UnionBridgeTest {
34143415
34153416 private static final RskAddress unionBridgeAddress = unionBridgeMainNetConstants .getAddress ();
34163417
3417- private static final RskAddress changeTestnetUnionAddressAuthorizer = new RskAddress ("c38c7f0bcdf679dd360dee652d83be7d5b386956 " );
3418+ private static final RskAddress changeTestnetUnionAddressAuthorizer = new RskAddress ("54fdb399cf235c9b0d464ab4055af9251883bbfe " );
34183419
3419- private static final RskAddress increaseLockingCapAuthorizer = RskAddress .ZERO_ADDRESS ;
3420- private static final RskAddress setTransferPermissionsAuthorizer = RskAddress .ZERO_ADDRESS ;
3420+ private static final RskAddress increaseLockingCapAuthorizerMainnet = ZERO_ADDRESS ;
3421+ private static final RskAddress setTransferPermissionsAuthorizerMainnet = ZERO_ADDRESS ;
3422+
3423+ private static final RskAddress increaseLockingCapAuthorizerTestnet = new RskAddress ("1a8109af0f019ED3045Fbcdf45E5e90d6b6AAfaF" );
3424+ private static final RskAddress setTransferPermissionsAuthorizerTestnet = new RskAddress ("8db1F83E8119E4Dce5bC708ec2f4390FFd910B19" );
34213425
34223426 private static final RskAddress unauthorizedCaller = new RskAddress ("0000000000000000000000000000000000000001" );
34233427 private static final byte [] superEvent = new byte []{(byte ) 0x123456 };
@@ -3691,6 +3695,13 @@ private static Stream<Arguments> constantsProvider() {
36913695 );
36923696 }
36933697
3698+ private static Stream <Arguments > testnetAndMainnetConstantsProvider () {
3699+ return Stream .of (
3700+ Arguments .of (Constants .testnet2 (ActivationConfigsForTest .all ())),
3701+ Arguments .of (Constants .mainnet ())
3702+ );
3703+ }
3704+
36943705 @ ParameterizedTest ()
36953706 @ MethodSource ("constantsProvider" )
36963707 void getUnionBridgeContractAddress_afterRSKIP502_shouldReturnAddress (Constants constants ) throws VMException {
@@ -3740,23 +3751,30 @@ void getUnionBridgeLockingCap_afterRSKIP502_shouldReturnLockingCap(Constants con
37403751 assertEquals (expectedLockingCap , actualLockingCap );
37413752 }
37423753
3743- @ Test
3744- void increaseUnionBridgeLockingCap_beforeRSKIP502_shouldFail () {
3754+ @ ParameterizedTest ()
3755+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
3756+ void increaseUnionBridgeLockingCap_beforeRSKIP502_shouldFail (Constants constants ) {
37453757 bridge = bridgeBuilder
37463758 .activationConfig (ActivationConfigsForTest .lovell700 ())
3759+ .constants (constants )
37473760 .build ();
3748- when ( rskTx . getSender ( any ())). thenReturn ( increaseLockingCapAuthorizer );
3761+ setupIncreaseLockingCapAuthorizer ( constants );
37493762
37503763 byte [] data = Bridge .INCREASE_UNION_BRIDGE_LOCKING_CAP .encode (newLockingCap .asBigInteger ());
37513764
37523765 assertThrows (VMException .class , () -> bridge .execute (data ));
37533766 }
37543767
3755- @ Test
3756- void increaseUnionBridgeLockingCap_afterRSKIP502_whenMeetRequirements_shouldReturnSuccess ()
3768+ @ ParameterizedTest ()
3769+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
3770+ void increaseUnionBridgeLockingCap_afterRSKIP502_whenMeetRequirements_shouldReturnSuccess (Constants constants )
37573771 throws VMException {
37583772 // Arrange
3759- when (rskTx .getSender (any ())).thenReturn (increaseLockingCapAuthorizer );
3773+ bridge = bridgeBuilder
3774+ .constants (constants )
3775+ .build ();
3776+ setupIncreaseLockingCapAuthorizer (constants );
3777+
37603778 UnionResponseCode expectedResponseCode = UnionResponseCode .SUCCESS ;
37613779 when (bridgeSupport .increaseUnionBridgeLockingCap (any (), any ())).thenReturn (expectedResponseCode );
37623780
@@ -3772,11 +3790,22 @@ void increaseUnionBridgeLockingCap_afterRSKIP502_whenMeetRequirements_shouldRetu
37723790 assertEquals (UnionResponseCode .SUCCESS .getCode (), actualUnionResponseCode );
37733791 }
37743792
3775- @ Test
3776- void increaseUnionBridgeLockingCap_afterRSKIP502_whenNewLockingCapSurpassingMaxIncrement_shouldReturnInvalidLockingCapCode ()
3793+ private void setupIncreaseLockingCapAuthorizer (Constants constants ) {
3794+ boolean isMainnet = constants .getChainId () == Constants .MAINNET_CHAIN_ID ;
3795+ RskAddress increaseLockingCapAuthorizer = isMainnet ? increaseLockingCapAuthorizerMainnet : increaseLockingCapAuthorizerTestnet ;
3796+ when (rskTx .getSender (any ())).thenReturn (increaseLockingCapAuthorizer );
3797+ }
3798+
3799+ @ ParameterizedTest ()
3800+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
3801+ void increaseUnionBridgeLockingCap_afterRSKIP502_whenNewLockingCapSurpassingMaxIncrement_shouldReturnInvalidLockingCapCode (Constants constants )
37773802 throws VMException {
37783803 // Arrange
3779- when (rskTx .getSender (any ())).thenReturn (increaseLockingCapAuthorizer );
3804+ bridge = bridgeBuilder
3805+ .constants (constants )
3806+ .build ();
3807+ setupIncreaseLockingCapAuthorizer (constants );
3808+
37803809 UnionResponseCode expectedResponseCode = UnionResponseCode .INVALID_VALUE ;
37813810 when (bridgeSupport .increaseUnionBridgeLockingCap (any (), any ())).thenReturn (
37823811 expectedResponseCode );
@@ -3794,11 +3823,16 @@ void increaseUnionBridgeLockingCap_afterRSKIP502_whenNewLockingCapSurpassingMaxI
37943823 assertEquals (expectedResponseCode .getCode (), actualUnionResponseCode );
37953824 }
37963825
3797- @ Test
3798- void increaseUnionBridgeLockingCap_afterRSKIP502_whenSendingZero_shouldReturnInvalidLockingCapCode ()
3826+ @ ParameterizedTest ()
3827+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
3828+ void increaseUnionBridgeLockingCap_afterRSKIP502_whenSendingZero_shouldReturnInvalidLockingCapCode (Constants constants )
37993829 throws VMException {
38003830 // Arrange
3801- when (rskTx .getSender (any ())).thenReturn (increaseLockingCapAuthorizer );
3831+ bridge = bridgeBuilder
3832+ .constants (constants )
3833+ .build ();
3834+ setupIncreaseLockingCapAuthorizer (constants );
3835+
38023836 UnionResponseCode expectedResponseCode = UnionResponseCode .INVALID_VALUE ;
38033837 when (bridgeSupport .increaseUnionBridgeLockingCap (any (), any ())).thenReturn (
38043838 expectedResponseCode );
@@ -3831,11 +3865,16 @@ void increaseUnionBridgeLockingCap_afterRSKIP502_whenUnauthorized_shouldThrowVmE
38313865 verify (unionBridgeSupport , never ()).increaseLockingCap (any (), any ());
38323866 }
38333867
3834- @ Test
3835- void increaseUnionBridgeLockingCap_afterRSKIP502_emptyArgument_shouldFail () throws VMException {
3868+ @ ParameterizedTest ()
3869+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
3870+ void increaseUnionBridgeLockingCap_afterRSKIP502_emptyArgument_shouldFail (Constants constants ) throws VMException {
38363871 // Arrange
3872+ bridge = bridgeBuilder
3873+ .constants (constants )
3874+ .build ();
3875+ setupIncreaseLockingCapAuthorizer (constants );
3876+
38373877 UnionResponseCode expectedResponseCode = UnionResponseCode .INVALID_VALUE ;
3838- when (rskTx .getSender (any ())).thenReturn (increaseLockingCapAuthorizer );
38393878
38403879 // when no argument is passed, the default value assigned to the arg is a big integer of zero
38413880 when (bridgeSupport .increaseUnionBridgeLockingCap (any (), eq (co .rsk .core .Coin .ZERO ))).thenReturn (expectedResponseCode );
@@ -4008,13 +4047,15 @@ void releaseUnionBridgeRbtc_afterRSKIP502_whenFail_shouldReturnErrorResponseCode
40084047 verify (unionBridgeSupport , times (1 )).releaseUnionRbtc (rskTx );
40094048 verify (repository , times (1 )).transfer (BRIDGE_ADDR , unionBridgeMainNetConstantsAddress , amountToRelease );
40104049 }
4011-
4012- @ Test
4013- void setUnionBridgeTransferPermissions_beforeRSKIP502_shouldFail () {
4050+
4051+ @ ParameterizedTest ()
4052+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
4053+ void setUnionBridgeTransferPermissions_beforeRSKIP502_shouldFail (Constants constants ) {
40144054 bridge = bridgeBuilder
40154055 .activationConfig (ActivationConfigsForTest .lovell700 ())
4056+ .constants (constants )
40164057 .build ();
4017- when ( rskTx . getSender ( any ())). thenReturn ( setTransferPermissionsAuthorizer );
4058+ setupTransferPermissionsAuthorizer ( constants );
40184059
40194060 CallTransaction .Function function = BridgeMethods .SET_UNION_BRIDGE_TRANSFER_PERMISSIONS .getFunction ();
40204061 byte [] data = function .encode (true , true );
@@ -4023,12 +4064,18 @@ void setUnionBridgeTransferPermissions_beforeRSKIP502_shouldFail() {
40234064 assertTrue (actualException .getMessage ().contains (String .format ("Invalid data given: %s" ,
40244065 Bytes .of (data ))));
40254066 }
4026-
4027- @ Test
4028- void setUnionBridgeTransferPermissions_whenValidArgs_shouldSetTransferPermissions () throws VMException {
4067+
4068+ @ ParameterizedTest ()
4069+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
4070+ void setUnionBridgeTransferPermissions_whenValidArgs_shouldSetTransferPermissions (Constants constants ) throws VMException {
40294071 // Arrange
4072+ bridge = bridgeBuilder
4073+ .constants (constants )
4074+ .build ();
4075+ setupTransferPermissionsAuthorizer (constants );
4076+
40304077 UnionResponseCode expectedResponseCode = UnionResponseCode .SUCCESS ;
4031- when ( rskTx . getSender ( any ())). thenReturn ( setTransferPermissionsAuthorizer );
4078+
40324079 when (unionBridgeSupport .setTransferPermissions (any (), anyBoolean (),
40334080 anyBoolean ())).thenReturn (expectedResponseCode );
40344081 CallTransaction .Function function = BridgeMethods .SET_UNION_BRIDGE_TRANSFER_PERMISSIONS .getFunction ();
@@ -4045,11 +4092,22 @@ void setUnionBridgeTransferPermissions_whenValidArgs_shouldSetTransferPermission
40454092 verify (unionBridgeSupport , times (1 )).setTransferPermissions (any (Transaction .class ), eq (true ), eq (false ));
40464093 }
40474094
4048- @ Test
4049- void setUnionBridgeTransferPermissions_whenEmptyArguments_shouldAssumeArgAsFalseAndProcessed () throws VMException {
4095+ private void setupTransferPermissionsAuthorizer (Constants constants ) {
4096+ boolean isMainnet = constants .getChainId () == Constants .MAINNET_CHAIN_ID ;
4097+ RskAddress setTransferPermissionsAuthorizer = isMainnet ? setTransferPermissionsAuthorizerMainnet : setTransferPermissionsAuthorizerTestnet ;
4098+ when (rskTx .getSender (any ())).thenReturn (setTransferPermissionsAuthorizer );
4099+ }
4100+
4101+ @ ParameterizedTest ()
4102+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
4103+ void setUnionBridgeTransferPermissions_whenEmptyArguments_shouldAssumeArgAsFalseAndProcessed (Constants constants ) throws VMException {
40504104 // Arrange
4105+ bridge = bridgeBuilder
4106+ .constants (constants )
4107+ .build ();
4108+ setupTransferPermissionsAuthorizer (constants );
4109+
40514110 UnionResponseCode expectedResponseCode = UnionResponseCode .SUCCESS ;
4052- when (rskTx .getSender (any ())).thenReturn (setTransferPermissionsAuthorizer );
40534111 // when no argument is passed, the default value assigned to the arg is false
40544112 when (unionBridgeSupport .setTransferPermissions (any (), eq (false ), eq (false ))).thenReturn (expectedResponseCode );
40554113
@@ -4067,9 +4125,14 @@ void setUnionBridgeTransferPermissions_whenEmptyArguments_shouldAssumeArgAsFalse
40674125 verify (unionBridgeSupport , times (1 )).setTransferPermissions (any (Transaction .class ), eq (false ), eq (false ));
40684126 }
40694127
4070- @ Test
4071- void setUnionBridgeTransferPermissions_whenNotAuthorized_shouldReturnUnauthorizedCode () {
4128+ @ ParameterizedTest ()
4129+ @ MethodSource ("testnetAndMainnetConstantsProvider" )
4130+ void setUnionBridgeTransferPermissions_whenNotAuthorized_shouldReturnUnauthorizedCode (Constants constants ) {
40724131 // Arrange
4132+ bridge = bridgeBuilder
4133+ .constants (constants )
4134+ .build ();
4135+
40734136 when (rskTx .getSender (any ())).thenReturn (unauthorizedCaller );
40744137
40754138 CallTransaction .Function function = BridgeMethods .SET_UNION_BRIDGE_TRANSFER_PERMISSIONS .getFunction ();
0 commit comments