From 4656ecc08dbae9890957299cceff656bab8a7ad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=AD=90=EF=B8=8FNINIKA=E2=AD=90=EF=B8=8F?= Date: Mon, 22 Jul 2024 16:26:13 +0300 Subject: [PATCH] fix: update pytests to use the new query filters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This also fixes how an instruction failing to find a domain or an asset definition gets reported by the executor (by returning a FindError instead of a string) Signed-off-by: ⭐️NINIKA⭐️ --- client_cli/pytests/src/client_cli/have.py | 16 +++++----------- .../accounts/test_accounts_query_filters.py | 4 ++-- .../test/assets/test_assets_query_filters.py | 16 +++------------- .../domains/test_domains_query_filters.py | 4 +++- configs/swarm/executor.wasm | Bin 512484 -> 512747 bytes smart_contract/executor/src/permission.rs | 18 +++++++++++++----- 6 files changed, 26 insertions(+), 32 deletions(-) diff --git a/client_cli/pytests/src/client_cli/have.py b/client_cli/pytests/src/client_cli/have.py index f299abaf3fd..54c076a03e9 100644 --- a/client_cli/pytests/src/client_cli/have.py +++ b/client_cli/pytests/src/client_cli/have.py @@ -40,9 +40,7 @@ def domain(expected, owned_by=None): """ def domain_in_domains() -> bool: - domains = iroha.list_filter( - f'{{"Identifiable": {{"Is": "{expected}"}}}}' - ).domains() + domains = iroha.list_filter({"Atom": {"Id": {"Equals": expected}}}).domains() if not expected_in_actual(expected, domains): return False if owned_by: @@ -64,9 +62,7 @@ def account(expected): """ def account_in_accounts() -> bool: - accounts = iroha.list_filter( - f'{{"Identifiable": {{"Is": "{expected}"}}}}' - ).accounts() + accounts = iroha.list_filter({"Atom": {"Id": {"Equals": expected}}}).accounts() return expected_in_actual(expected, accounts) return client_cli.wait_for(account_in_accounts) @@ -82,7 +78,7 @@ def asset_definition(expected): def asset_definition_in_asset_definitions() -> bool: asset_definitions = iroha.list_filter( - f'{{"Identifiable": {{"Is": "{expected}"}}}}' + {"Atom": {"Id": {"Equals": expected}}} ).asset_definitions() return expected_in_actual(expected, asset_definitions) @@ -98,9 +94,7 @@ def asset(expected): """ def asset_in_assets() -> bool: - assets = iroha.list_filter( - f'{{"Identifiable": {{"Is": "{expected}"}}}}' - ).assets() + assets = iroha.list_filter({"Atom": {"Id": {"Equals": expected}}}).assets() return expected_in_actual(expected, assets) return client_cli.wait_for(asset_in_assets) @@ -117,7 +111,7 @@ def asset_has_quantity(expected_asset_id, expected_quantity): def check_quantity() -> bool: assets = iroha.list_filter( - f'{{"Identifiable": {{"Is": "{expected_asset_id}"}}}}' + {"Atom": {"Id": {"Equals": expected_asset_id}}} ).assets() actual_quantity = None for asset_item in assets: diff --git a/client_cli/pytests/test/accounts/test_accounts_query_filters.py b/client_cli/pytests/test/accounts/test_accounts_query_filters.py index 6ff50159468..93d23d4b06c 100644 --- a/client_cli/pytests/test/accounts/test_accounts_query_filters.py +++ b/client_cli/pytests/test/accounts/test_accounts_query_filters.py @@ -13,7 +13,7 @@ def condition(): f"WHEN client_cli query accounts " f'in the "{domain}" domain' ): accounts = iroha.list_filter( - {"Identifiable": {"EndsWith": f"@{domain}"}} + {"Atom": {"Id": {"DomainId": {"Equals": domain}}}} ).accounts() with allure.step("THEN Iroha should return only accounts with this domain"): allure.attach( @@ -35,7 +35,7 @@ def condition(): f'WHEN client_cli query accounts with account id "{account_id}"' ): accounts = iroha.list_filter( - {"Identifiable": {"Is": account_id}} + {"Atom": {"Id": {"Equals": account_id}}} ).accounts() with allure.step("THEN Iroha should return only accounts with this id"): allure.attach( diff --git a/client_cli/pytests/test/assets/test_assets_query_filters.py b/client_cli/pytests/test/assets/test_assets_query_filters.py index 918a255079d..ae3749b5e86 100644 --- a/client_cli/pytests/test/assets/test_assets_query_filters.py +++ b/client_cli/pytests/test/assets/test_assets_query_filters.py @@ -13,17 +13,7 @@ def condition(): ) with allure.step(f"WHEN client_cli query assets" f'in the "{domain}" domain'): assets = iroha.list_filter( - { - "Or": [ - {"Identifiable": {"Contains": f"#{domain}#"}}, - { - "And": [ - {"Identifiable": {"Contains": "##"}}, - {"Identifiable": {"EndsWith": f"@{domain}"}}, - ] - }, - ] - } + {"Atom": {"Id": {"DefinitionId": {"DomainId": {"Equals": domain}}}}} ).assets() with allure.step("THEN Iroha should return only assets with this domain"): allure.attach( @@ -48,7 +38,7 @@ def condition(): ) with allure.step(f'WHEN client_cli query assets with name "{name}"'): assets = iroha.list_filter( - {"Identifiable": {"StartsWith": f"{name}#"}} + {"Atom": {"Id": {"DefinitionId": {"Name": {"Equals": name}}}}} ).assets() with allure.step("THEN Iroha should return only assets with this name"): allure.attach( @@ -74,7 +64,7 @@ def condition(): + GIVEN_currently_authorized_account.domain ) with allure.step(f'WHEN client_cli query assets with asset id "{asset_id}"'): - assets = iroha.list_filter({"Identifiable": {"Is": asset_id}}).assets() + assets = iroha.list_filter({"Atom": {"Id": {"Equals": asset_id}}}).assets() with allure.step("THEN Iroha should return only assets with this id"): allure.attach( json.dumps(assets), diff --git a/client_cli/pytests/test/domains/test_domains_query_filters.py b/client_cli/pytests/test/domains/test_domains_query_filters.py index 7f0cfed50c8..ac9d518cd3f 100644 --- a/client_cli/pytests/test/domains/test_domains_query_filters.py +++ b/client_cli/pytests/test/domains/test_domains_query_filters.py @@ -11,7 +11,9 @@ def condition(): with allure.step( f'WHEN client_cli query domains filtered by name "{domain_name}"' ): - domains = iroha.list_filter({"Identifiable": {"Is": domain_name}}).domains() + domains = iroha.list_filter( + {"Atom": {"Id": {"Equals": domain_name}}} + ).domains() with allure.step( f'THEN Iroha should return only return domains with "{domain_name}" name' ): diff --git a/configs/swarm/executor.wasm b/configs/swarm/executor.wasm index 488e2cf2260eed5a5237c556da7f07c3d29eef06..49e20578dab4e7c189e53c47460b54413989ba7b 100644 GIT binary patch delta 32410 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 Li}>EscJcoMhS%$O delta 32639 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 e, SmartContractSingleQueryError::Single(_) => { // assuming this can only happen due to such a domain not existing - ValidationFail::NotPermitted(alloc::format!( - "Asset definition {asset_definition_id} not found" + ValidationFail::InstructionFailed(InstructionExecutionError::Find( + FindError::AssetDefinition(asset_definition_id.clone()), )) } })?; @@ -738,7 +741,10 @@ pub mod domain { CanRegisterAccountInDomain, CanRegisterAssetDefinitionInDomain, CanRemoveKeyValueInDomain, CanSetKeyValueInDomain, CanUnregisterDomain, }; - use iroha_smart_contract::SmartContractSingleQueryError; + use iroha_smart_contract::{ + data_model::{isi::error::InstructionExecutionError, query::error::FindError}, + SmartContractSingleQueryError, + }; use super::*; @@ -755,7 +761,9 @@ pub mod domain { SmartContractSingleQueryError::Validation(e) => e, SmartContractSingleQueryError::Single(_) => { // assuming this can only happen due to such a domain not existing - ValidationFail::NotPermitted(alloc::format!("Domain {domain_id} not found")) + ValidationFail::InstructionFailed(InstructionExecutionError::Find( + FindError::Domain(domain_id.clone()), + )) } }) }