diff --git a/nucypher/policy/conditions/evm.py b/nucypher/policy/conditions/evm.py index de79f8df5..f82bbb0d8 100644 --- a/nucypher/policy/conditions/evm.py +++ b/nucypher/policy/conditions/evm.py @@ -221,7 +221,7 @@ class ContractCondition(RPCCondition): SKIP_VALUES = (None,) standard_contract_type = fields.Str(required=False) contract_address = fields.Str(required=True) - function_abi = fields.Str(required=False) + function_abi = fields.Dict(required=False) @post_load def make(self, data, **kwargs): @@ -267,7 +267,7 @@ class ContractCondition(RPCCondition): """Gets an unbound contract function to evaluate for this condition""" try: contract = self.w3.eth.contract( - address=self.contract_address, abi=self.function_abi + address=self.contract_address, abi=[self.function_abi] ) contract_function = getattr(contract.functions, self.method) return contract_function diff --git a/tests/acceptance/blockchain/conditions/conftest.py b/tests/acceptance/blockchain/conditions/conftest.py index 5829cd98b..09ca574be 100644 --- a/tests/acceptance/blockchain/conditions/conftest.py +++ b/tests/acceptance/blockchain/conditions/conftest.py @@ -181,7 +181,9 @@ def subscription_manager_is_active_policy_condition(test_registry, agency): ) condition = ContractCondition( contract_address=subscription_manager.contract.address, - function_abi=[subscription_manager.contract.find_functions_by_name('isPolicyActive')[0].abi], + function_abi=subscription_manager.contract.find_functions_by_name( + "isPolicyActive" + )[0].abi, method="isPolicyActive", chain=TESTERCHAIN_CHAIN_ID, return_value_test=ReturnValueTest("==", True), @@ -199,7 +201,9 @@ def subscription_manager_get_policy_zeroized_policy_struct_condition( ) condition = ContractCondition( contract_address=subscription_manager.contract.address, - function_abi=[subscription_manager.contract.find_functions_by_name('getPolicy')[0].abi], + function_abi=subscription_manager.contract.find_functions_by_name("getPolicy")[ + 0 + ].abi, method="getPolicy", chain=TESTERCHAIN_CHAIN_ID, return_value_test=ReturnValueTest("==", ":expectedPolicyStruct"), diff --git a/tests/data/test_conditions.json b/tests/data/test_conditions.json index 2d23aade9..85d7269e4 100644 --- a/tests/data/test_conditions.json +++ b/tests/data/test_conditions.json @@ -1,7 +1,7 @@ { "TStaking": { "contractAddress": "0x01B67b1194C75264d06F808A921228a95C765dd7", - "chain": "ethereum", + "chain": 80001, "method": "stakes", "functionAbi": { "inputs": [ diff --git a/tests/unit/conditions/conftest.py b/tests/unit/conditions/conftest.py index 5a44fd36c..052ff5a97 100644 --- a/tests/unit/conditions/conftest.py +++ b/tests/unit/conditions/conftest.py @@ -38,7 +38,9 @@ with open(VECTORS_FILE, 'r') as file: @pytest.fixture(autouse=True) def mock_condition_blockchains(mocker): """adds testerchain to permitted conditional chains""" - mocker.patch.object(nucypher.policy.conditions.evm, '_CONDITION_CHAINS', tuple([131277322940537])) + mocker.patch.object( + nucypher.policy.conditions.evm, "_CONDITION_CHAINS", tuple([80001]) + ) @pytest.fixture()