From 1cdfdd29c82d511b33ae8478bbf99d20ac9c8022 Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Fri, 26 Apr 2019 19:20:33 +0200 Subject: [PATCH 1/5] Simplify store_and_verify_deployment_info_raiden() --- raiden_contracts/deploy/contract_verifier.py | 18 +++++++----------- raiden_contracts/tests/test_deploy_script.py | 20 +++++++++----------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/raiden_contracts/deploy/contract_verifier.py b/raiden_contracts/deploy/contract_verifier.py index 4f4984819..330178467 100644 --- a/raiden_contracts/deploy/contract_verifier.py +++ b/raiden_contracts/deploy/contract_verifier.py @@ -50,7 +50,7 @@ def verify_deployed_contracts_in_filesystem(self): if deployment_data is None: raise RuntimeError(f'Deployment data cannot be found at {deployment_file_path}') - if self._verify_deployment_data(deployment_data): + if self.verify_deployment_data(deployment_data): print( f'Deployment info from {deployment_file_path} has been verified' 'and it is CORRECT.', @@ -89,16 +89,12 @@ def verify_deployed_service_contracts_in_filesystem( def store_and_verify_deployment_info_raiden( self, deployed_contracts_info: DeployedContracts, - save_info: bool, ): - if save_info: - self._store_deployment_info( - deployment_info=deployed_contracts_info, - services=False, - ) - self.verify_deployed_contracts_in_filesystem() - else: - self._verify_deployment_data(deployed_contracts_info) + self._store_deployment_info( + deployment_info=deployed_contracts_info, + services=False, + ) + self.verify_deployed_contracts_in_filesystem() def store_and_verify_deployment_info_services( self, @@ -141,7 +137,7 @@ def _store_deployment_info( f' has been updated at {deployment_file_path}.', ) - def _verify_deployment_data( + def verify_deployment_data( self, deployment_data: DeployedContracts, ): diff --git a/raiden_contracts/tests/test_deploy_script.py b/raiden_contracts/tests/test_deploy_script.py index e5083e499..41ac12937 100644 --- a/raiden_contracts/tests/test_deploy_script.py +++ b/raiden_contracts/tests/test_deploy_script.py @@ -132,21 +132,21 @@ def test_deploy_script_raiden( """ deployed_contracts_info = deployed_raiden_info - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployment_data=deployed_contracts_info, ) deployed_contracts_info_fail = deepcopy(deployed_contracts_info) deployed_contracts_info_fail['contracts_version'] = '0.0.0' with pytest.raises(RuntimeError): - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployment_data=deployed_contracts_info_fail, ) deployed_contracts_info_fail = deepcopy(deployed_contracts_info) deployed_contracts_info_fail['chain_id'] = 0 with pytest.raises(RuntimeError): - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployment_data=deployed_contracts_info_fail, ) @@ -155,14 +155,14 @@ def test_deploy_script_raiden( CONTRACT_ENDPOINT_REGISTRY ]['address'] = EMPTY_ADDRESS with pytest.raises(AssertionError): - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployed_contracts_info_fail, ) deployed_contracts_info_fail = deepcopy(deployed_contracts_info) deployed_contracts_info_fail['contracts'][CONTRACT_SECRET_REGISTRY]['address'] = EMPTY_ADDRESS with pytest.raises(AssertionError): - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployed_contracts_info_fail, ) @@ -171,28 +171,28 @@ def test_deploy_script_raiden( CONTRACT_TOKEN_NETWORK_REGISTRY ]['address'] = EMPTY_ADDRESS with pytest.raises(AssertionError): - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployed_contracts_info_fail, ) deployed_contracts_info_fail = deepcopy(deployed_contracts_info) deployed_contracts_info_fail['contracts'][CONTRACT_ENDPOINT_REGISTRY]['block_number'] = 0 with pytest.raises(AssertionError): - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployed_contracts_info_fail, ) deployed_contracts_info_fail = deepcopy(deployed_contracts_info) deployed_contracts_info_fail['contracts'][CONTRACT_SECRET_REGISTRY]['block_number'] = 0 with pytest.raises(AssertionError): - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployed_contracts_info_fail, ) deployed_contracts_info_fail = deepcopy(deployed_contracts_info) deployed_contracts_info_fail['contracts'][CONTRACT_TOKEN_NETWORK_REGISTRY]['block_number'] = 0 with pytest.raises(AssertionError): - deployer._verify_deployment_data( + deployer.verify_deployment_data( deployed_contracts_info_fail, ) @@ -534,11 +534,9 @@ def test_store_and_verify_raiden(fs_reload_deployer, deployed_raiden_info, deplo deployed_contracts_info = deployed_raiden_info deployer.store_and_verify_deployment_info_raiden( deployed_contracts_info=deployed_contracts_info, - save_info=False, ) deployer.store_and_verify_deployment_info_raiden( deployed_contracts_info=deployed_contracts_info, - save_info=True, ) From 73da4d24062176bfe6a28eed674d4ef0a32c2097 Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Fri, 26 Apr 2019 19:43:37 +0200 Subject: [PATCH 2/5] Simplify store_and_verify_deployment_info_services() This closes #895. --- raiden_contracts/deploy/contract_verifier.py | 28 +++++++------------- raiden_contracts/tests/test_deploy_script.py | 16 +++++------ 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/raiden_contracts/deploy/contract_verifier.py b/raiden_contracts/deploy/contract_verifier.py index 330178467..d1b454cf1 100644 --- a/raiden_contracts/deploy/contract_verifier.py +++ b/raiden_contracts/deploy/contract_verifier.py @@ -76,7 +76,7 @@ def verify_deployed_service_contracts_in_filesystem( if deployment_data is None: raise RuntimeError(f'Deployment data cannot be found at {deployment_file_path}') - if self._verify_service_contracts_deployment_data( + if self.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=user_deposit_whole_balance_limit, deployment_data=deployment_data, @@ -99,25 +99,17 @@ def store_and_verify_deployment_info_raiden( def store_and_verify_deployment_info_services( self, deployed_contracts_info: DeployedContracts, - save_info: bool, token_address: str, user_deposit_whole_limit: int, ): - if save_info: - self._store_deployment_info( - services=True, - deployment_info=deployed_contracts_info, - ) - self.verify_deployed_service_contracts_in_filesystem( - token_address=token_address, - user_deposit_whole_balance_limit=user_deposit_whole_limit, - ) - else: - self._verify_service_contracts_deployment_data( - token_address=token_address, - user_deposit_whole_balance_limit=user_deposit_whole_limit, - deployment_data=deployed_contracts_info, - ) + self._store_deployment_info( + services=True, + deployment_info=deployed_contracts_info, + ) + self.verify_deployed_service_contracts_in_filesystem( + token_address=token_address, + user_deposit_whole_balance_limit=user_deposit_whole_limit, + ) def _store_deployment_info( self, @@ -235,7 +227,7 @@ def _verify_deployed_contract( return contract_instance, contracts[contract_name]['constructor_arguments'] - def _verify_service_contracts_deployment_data( + def verify_service_contracts_deployment_data( self, token_address: str, user_deposit_whole_balance_limit: int, diff --git a/raiden_contracts/tests/test_deploy_script.py b/raiden_contracts/tests/test_deploy_script.py index 41ac12937..666af7d05 100644 --- a/raiden_contracts/tests/test_deploy_script.py +++ b/raiden_contracts/tests/test_deploy_script.py @@ -447,7 +447,7 @@ def test_deploy_script_service( deposit_limit = token_supply // 2 deployed_service_contracts = deployed_service_info - deployer._verify_service_contracts_deployment_data( + deployer.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=deposit_limit, deployment_data=deployed_service_contracts, @@ -456,7 +456,7 @@ def test_deploy_script_service( deployed_info_fail = deepcopy(deployed_service_contracts) deployed_info_fail['contracts_version'] = '0.0.0' with pytest.raises(RuntimeError): - deployer._verify_service_contracts_deployment_data( + deployer.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=deposit_limit, deployment_data=deployed_info_fail, @@ -465,7 +465,7 @@ def test_deploy_script_service( deployed_info_fail = deepcopy(deployed_service_contracts) deployed_info_fail['chain_id'] = deployed_service_contracts['chain_id'] + 1 with pytest.raises(RuntimeError): - deployer._verify_service_contracts_deployment_data( + deployer.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=deposit_limit, deployment_data=deployed_info_fail, @@ -477,7 +477,7 @@ def test_missing_deployment(contract_name): contract_name ]['address'] = EMPTY_ADDRESS with pytest.raises(AssertionError): - deployer._verify_service_contracts_deployment_data( + deployer.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=deposit_limit, deployment_data=deployed_info_fail, @@ -552,16 +552,14 @@ def test_store_and_verify_services( version=None, ).parent) deployed_contracts_info = deployed_service_info - deployer.store_and_verify_deployment_info_services( + deployer.verify_service_contracts_deployment_data( token_address=token_address, - deployed_contracts_info=deployed_contracts_info, - save_info=False, - user_deposit_whole_limit=DEPOSIT_LIMIT, + deployment_data=deployed_contracts_info, + user_deposit_whole_balance_limit=DEPOSIT_LIMIT, ) deployer.store_and_verify_deployment_info_services( token_address=token_address, deployed_contracts_info=deployed_contracts_info, - save_info=True, user_deposit_whole_limit=DEPOSIT_LIMIT, ) From e25d68981b290f3ec987cc80e9eaeb6d2bf14ada Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Fri, 26 Apr 2019 19:51:22 +0200 Subject: [PATCH 3/5] Match the argument names --- raiden_contracts/deploy/contract_verifier.py | 22 ++++++++++---------- raiden_contracts/tests/test_deploy_script.py | 12 +++++------ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/raiden_contracts/deploy/contract_verifier.py b/raiden_contracts/deploy/contract_verifier.py index d1b454cf1..457e116f1 100644 --- a/raiden_contracts/deploy/contract_verifier.py +++ b/raiden_contracts/deploy/contract_verifier.py @@ -79,7 +79,7 @@ def verify_deployed_service_contracts_in_filesystem( if self.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=user_deposit_whole_balance_limit, - deployment_data=deployment_data, + deployed_contracts_info=deployment_data, ): print( f'Deployment info from {deployment_file_path} has been verified ' @@ -100,7 +100,7 @@ def store_and_verify_deployment_info_services( self, deployed_contracts_info: DeployedContracts, token_address: str, - user_deposit_whole_limit: int, + user_deposit_whole_balance_limit: int, ): self._store_deployment_info( services=True, @@ -108,7 +108,7 @@ def store_and_verify_deployment_info_services( ) self.verify_deployed_service_contracts_in_filesystem( token_address=token_address, - user_deposit_whole_balance_limit=user_deposit_whole_limit, + user_deposit_whole_balance_limit=user_deposit_whole_balance_limit, ) def _store_deployment_info( @@ -231,25 +231,25 @@ def verify_service_contracts_deployment_data( self, token_address: str, user_deposit_whole_balance_limit: int, - deployment_data: DeployedContracts, + deployed_contracts_info: DeployedContracts, ): chain_id = int(self.web3.version.network) - assert deployment_data is not None + assert deployed_contracts_info is not None - if self.contract_manager.version_string != deployment_data['contracts_version']: + if self.contract_manager.version_string != deployed_contracts_info['contracts_version']: raise RuntimeError('Version string mismatch') - if chain_id != deployment_data['chain_id']: + if chain_id != deployed_contracts_info['chain_id']: raise RuntimeError('chain_id mismatch') service_bundle, constructor_arguments = self._verify_deployed_contract( - deployment_data=deployment_data, + deployment_data=deployed_contracts_info, contract_name=CONTRACT_SERVICE_REGISTRY, ) assert to_checksum_address(service_bundle.functions.token().call()) == token_address assert token_address == constructor_arguments[0] user_deposit, constructor_arguments = self._verify_deployed_contract( - deployment_data=deployment_data, + deployment_data=deployed_contracts_info, contract_name=CONTRACT_USER_DEPOSIT, ) assert len(constructor_arguments) == 2 @@ -260,7 +260,7 @@ def verify_service_contracts_deployment_data( assert user_deposit_whole_balance_limit == constructor_arguments[1] monitoring_service, constructor_arguments = self._verify_deployed_contract( - deployment_data, + deployed_contracts_info, CONTRACT_MONITORING_SERVICE, ) assert len(constructor_arguments) == 3 @@ -278,7 +278,7 @@ def verify_service_contracts_deployment_data( assert user_deposit.address == constructor_arguments[2] one_to_n, constructor_arguments = self._verify_deployed_contract( - deployment_data=deployment_data, + deployment_data=deployed_contracts_info, contract_name=CONTRACT_ONE_TO_N, ) assert to_checksum_address( diff --git a/raiden_contracts/tests/test_deploy_script.py b/raiden_contracts/tests/test_deploy_script.py index 666af7d05..f0b4501ba 100644 --- a/raiden_contracts/tests/test_deploy_script.py +++ b/raiden_contracts/tests/test_deploy_script.py @@ -450,7 +450,7 @@ def test_deploy_script_service( deployer.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=deposit_limit, - deployment_data=deployed_service_contracts, + deployed_contracts_info=deployed_service_contracts, ) deployed_info_fail = deepcopy(deployed_service_contracts) @@ -459,7 +459,7 @@ def test_deploy_script_service( deployer.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=deposit_limit, - deployment_data=deployed_info_fail, + deployed_contracts_info=deployed_info_fail, ) deployed_info_fail = deepcopy(deployed_service_contracts) @@ -468,7 +468,7 @@ def test_deploy_script_service( deployer.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=deposit_limit, - deployment_data=deployed_info_fail, + deployed_contracts_info=deployed_info_fail, ) def test_missing_deployment(contract_name): @@ -480,7 +480,7 @@ def test_missing_deployment(contract_name): deployer.verify_service_contracts_deployment_data( token_address=token_address, user_deposit_whole_balance_limit=deposit_limit, - deployment_data=deployed_info_fail, + deployed_contracts_info=deployed_info_fail, ) for contract_name in [ @@ -554,13 +554,13 @@ def test_store_and_verify_services( deployed_contracts_info = deployed_service_info deployer.verify_service_contracts_deployment_data( token_address=token_address, - deployment_data=deployed_contracts_info, + deployed_contracts_info=deployed_contracts_info, user_deposit_whole_balance_limit=DEPOSIT_LIMIT, ) deployer.store_and_verify_deployment_info_services( token_address=token_address, deployed_contracts_info=deployed_contracts_info, - user_deposit_whole_limit=DEPOSIT_LIMIT, + user_deposit_whole_balance_limit=DEPOSIT_LIMIT, ) From d70bf1a764cad00239bfc82c2f083a1585bb25bc Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Mon, 29 Apr 2019 12:03:55 +0200 Subject: [PATCH 4/5] Add a test to satisfy Codecov --- raiden_contracts/tests/test_deploy_data.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/raiden_contracts/tests/test_deploy_data.py b/raiden_contracts/tests/test_deploy_data.py index b95d5baf3..bfed5e83f 100644 --- a/raiden_contracts/tests/test_deploy_data.py +++ b/raiden_contracts/tests/test_deploy_data.py @@ -154,3 +154,20 @@ def test_verify_nonexistent_deployment( token_address=FAKE_ADDRESS, user_deposit_whole_balance_limit=user_deposit_whole_balance_limit, ) + + +def test_verify_existent_deployment( + user_deposit_whole_balance_limit, +): + """ Test verify_deployed_contracts_in_filesystem() with an existent deployment data. """ + web3_mock = Mock() + web3_mock.version.network = 42 + verifyer = ContractVerifyer(web3=web3_mock, contracts_version='0.11.1') + # The Mock doesn't return the runtime code, so the code comparison fails. + with pytest.raises(AssertionError): + verifyer.verify_deployed_contracts_in_filesystem() + with pytest.raises(AssertionError): + verifyer.verify_deployed_service_contracts_in_filesystem( + token_address='0x3Aa761BcDB064179a1e37748D8A5F577a177Be5c', + user_deposit_whole_balance_limit=2 ** 256 - 1, + ) From 493b436d80beeef5ecbc5cf88b39687b5b3a8d93 Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Tue, 30 Apr 2019 13:45:55 +0200 Subject: [PATCH 5/5] Fix rebase inconsistency --- raiden_contracts/tests/test_deploy_data.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/raiden_contracts/tests/test_deploy_data.py b/raiden_contracts/tests/test_deploy_data.py index bfed5e83f..4a0ba2454 100644 --- a/raiden_contracts/tests/test_deploy_data.py +++ b/raiden_contracts/tests/test_deploy_data.py @@ -156,18 +156,16 @@ def test_verify_nonexistent_deployment( ) -def test_verify_existent_deployment( - user_deposit_whole_balance_limit, -): +def test_verify_existent_deployment(): """ Test verify_deployed_contracts_in_filesystem() with an existent deployment data. """ web3_mock = Mock() web3_mock.version.network = 42 - verifyer = ContractVerifyer(web3=web3_mock, contracts_version='0.11.1') + verifier = ContractVerifier(web3=web3_mock, contracts_version='0.11.1') # The Mock doesn't return the runtime code, so the code comparison fails. with pytest.raises(AssertionError): - verifyer.verify_deployed_contracts_in_filesystem() + verifier.verify_deployed_contracts_in_filesystem() with pytest.raises(AssertionError): - verifyer.verify_deployed_service_contracts_in_filesystem( + verifier.verify_deployed_service_contracts_in_filesystem( token_address='0x3Aa761BcDB064179a1e37748D8A5F577a177Be5c', user_deposit_whole_balance_limit=2 ** 256 - 1, )