From d6c1adb698a8330dbf68bad2a9d6b1e384003baa Mon Sep 17 00:00:00 2001 From: benesjan Date: Mon, 28 Oct 2024 21:33:23 +0000 Subject: [PATCH 1/3] test: minting only private or public balance --- .../contracts/token_contract/src/test/burn.nr | 26 +++++++++---------- .../token_contract/src/test/refunds.nr | 4 +-- .../token_contract/src/test/shielding.nr | 14 +++++----- .../src/test/transfer_private.nr | 18 ++++++------- .../src/test/transfer_public.nr | 16 ++++++------ .../token_contract/src/test/unshielding.nr | 14 +++++----- .../token_contract/src/test/utils.nr | 19 ++++++++++++-- 7 files changed, 63 insertions(+), 48 deletions(-) diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/burn.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/burn.nr index daa91a0d26c4..e4716527fd29 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/burn.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/burn.nr @@ -6,7 +6,7 @@ use dep::aztec::oracle::random::random; #[test] unconstrained fn burn_public_success() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); let burn_amount = mint_amount / 10; // Burn less than balance @@ -17,7 +17,7 @@ unconstrained fn burn_public_success() { #[test] unconstrained fn burn_public_on_behalf_of_other() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let burn_amount = mint_amount / 10; // Burn on behalf of other @@ -38,7 +38,7 @@ unconstrained fn burn_public_on_behalf_of_other() { #[test(should_fail_with = "attempt to subtract with underflow")] unconstrained fn burn_public_failure_more_than_balance() { let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); // Burn more than balance let burn_amount = mint_amount * 10; @@ -49,7 +49,7 @@ unconstrained fn burn_public_failure_more_than_balance() { #[test(should_fail_with = "invalid nonce")] unconstrained fn burn_public_failure_on_behalf_of_self_non_zero_nonce() { let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); // Burn on behalf of self with non-zero nonce let burn_amount = mint_amount / 10; @@ -62,7 +62,7 @@ unconstrained fn burn_public_failure_on_behalf_of_self_non_zero_nonce() { #[test(should_fail_with = "unauthorized")] unconstrained fn burn_public_failure_on_behalf_of_other_without_approval() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); // Burn on behalf of other without approval let burn_amount = mint_amount / 10; @@ -76,7 +76,7 @@ unconstrained fn burn_public_failure_on_behalf_of_other_without_approval() { #[test(should_fail_with = "unauthorized")] unconstrained fn burn_public_failure_on_behalf_of_other_wrong_caller() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); // Burn on behalf of other, wrong designated caller let burn_amount = mint_amount / 10; @@ -91,7 +91,7 @@ unconstrained fn burn_public_failure_on_behalf_of_other_wrong_caller() { #[test] unconstrained fn burn_private_on_behalf_of_self() { let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); let burn_amount = mint_amount / 10; // Burn less than balance @@ -102,7 +102,7 @@ unconstrained fn burn_private_on_behalf_of_self() { #[test] unconstrained fn burn_private_on_behalf_of_other() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let burn_amount = mint_amount / 10; // Burn on behalf of other @@ -122,7 +122,7 @@ unconstrained fn burn_private_on_behalf_of_other() { #[test(should_fail_with = "Balance too low")] unconstrained fn burn_private_failure_more_than_balance() { let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); // Burn more than balance let burn_amount = mint_amount * 10; @@ -132,7 +132,7 @@ unconstrained fn burn_private_failure_more_than_balance() { #[test(should_fail_with = "invalid nonce")] unconstrained fn burn_private_failure_on_behalf_of_self_non_zero_nonce() { let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); // Burn more than balance let burn_amount = mint_amount / 10; @@ -142,7 +142,7 @@ unconstrained fn burn_private_failure_on_behalf_of_self_non_zero_nonce() { #[test(should_fail_with = "Balance too low")] unconstrained fn burn_private_failure_on_behalf_of_other_more_than_balance() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); // Burn more than balance let burn_amount = mint_amount * 10; @@ -161,7 +161,7 @@ unconstrained fn burn_private_failure_on_behalf_of_other_more_than_balance() { #[test(should_fail_with = "Authorization not found for message hash")] unconstrained fn burn_private_failure_on_behalf_of_other_without_approval() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); // Burn more than balance let burn_amount = mint_amount / 10; @@ -175,7 +175,7 @@ unconstrained fn burn_private_failure_on_behalf_of_other_without_approval() { #[test(should_fail_with = "Authorization not found for message hash")] unconstrained fn burn_private_failure_on_behalf_of_other_wrong_designated_caller() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); // Burn more than balance let burn_amount = mint_amount / 10; diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr index 2163f0d3e9a3..4e1dfd8ce771 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr @@ -10,7 +10,7 @@ use std::test::OracleMock; #[test] unconstrained fn setup_refund_success() { - let (env, token_contract_address, owner, recipient, mint_amount) = utils::setup_and_mint(true); + let (env, token_contract_address, owner, recipient, mint_amount) = utils::setup_and_mint_private(true); // Renaming owner and recipient to match naming in Token let user = owner; @@ -78,7 +78,7 @@ unconstrained fn setup_refund_success() { //#[test(should_fail_with="funded amount not enough to cover tx fee")] #[test(should_fail_with = "Balance too low")] unconstrained fn setup_refund_insufficient_funded_amount() { - let (env, token_contract_address, owner, recipient, _mint_amount) = utils::setup_and_mint(true); + let (env, token_contract_address, owner, recipient, _mint_amount) = utils::setup_and_mint_private(true); // Renaming owner and recipient to match naming in Token let user = owner; diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr index a4b5832e579e..93510958f5e0 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr @@ -7,7 +7,7 @@ use dep::aztec::{hash::compute_secret_hash, oracle::random::random}; unconstrained fn shielding_on_behalf_of_self() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); let secret = random(); let secret_hash = compute_secret_hash(secret); // Shield tokens @@ -36,7 +36,7 @@ unconstrained fn shielding_on_behalf_of_self() { #[test] unconstrained fn shielding_on_behalf_of_other() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let secret = random(); let secret_hash = compute_secret_hash(secret); @@ -77,7 +77,7 @@ unconstrained fn shielding_on_behalf_of_other() { unconstrained fn shielding_failure_on_behalf_of_self_more_than_balance() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let secret = random(); let secret_hash = compute_secret_hash(secret); // Shield tokens @@ -95,7 +95,7 @@ unconstrained fn shielding_failure_on_behalf_of_self_more_than_balance() { unconstrained fn shielding_failure_on_behalf_of_self_invalid_nonce() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let secret = random(); let secret_hash = compute_secret_hash(secret); // Shield tokens @@ -113,7 +113,7 @@ unconstrained fn shielding_failure_on_behalf_of_self_invalid_nonce() { unconstrained fn shielding_failure_on_behalf_of_other_more_than_balance() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let secret = random(); let secret_hash = compute_secret_hash(secret); // Shield tokens on behalf of owner @@ -139,7 +139,7 @@ unconstrained fn shielding_failure_on_behalf_of_other_more_than_balance() { unconstrained fn shielding_failure_on_behalf_of_other_wrong_caller() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let secret = random(); let secret_hash = compute_secret_hash(secret); // Shield tokens on behalf of owner @@ -161,7 +161,7 @@ unconstrained fn shielding_failure_on_behalf_of_other_wrong_caller() { unconstrained fn shielding_failure_on_behalf_of_other_without_approval() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let secret = random(); let secret_hash = compute_secret_hash(secret); // Shield tokens on behalf of owner diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_private.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_private.nr index 66d6d13bd0ef..11f32bba6eca 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_private.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_private.nr @@ -7,7 +7,7 @@ use dep::aztec::test::helpers::cheatcodes; unconstrained fn transfer_private() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); // docs:start:txe_test_transfer_private // Transfer tokens @@ -23,7 +23,7 @@ unconstrained fn transfer_private() { unconstrained fn transfer_private_to_self() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); // Transfer tokens let transfer_amount = 1000; Token::at(token_contract_address).transfer(owner, transfer_amount).call(&mut env.private()); @@ -36,7 +36,7 @@ unconstrained fn transfer_private_to_self() { unconstrained fn transfer_private_to_non_deployed_account() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); let not_deployed = cheatcodes::create_account(); // Transfer tokens let transfer_amount = 1000; @@ -57,7 +57,7 @@ unconstrained fn transfer_private_to_non_deployed_account() { unconstrained fn transfer_private_on_behalf_of_other() { // Setup with account contracts. Slower since we actually deploy them, but needed for authwits. let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); // Add authwit // docs:start:private_authwit let transfer_amount = 1000; @@ -82,7 +82,7 @@ unconstrained fn transfer_private_on_behalf_of_other() { unconstrained fn transfer_private_failure_more_than_balance() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, _, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); // Transfer tokens let transfer_amount = mint_amount + 1; Token::at(token_contract_address).transfer(recipient, transfer_amount).call(&mut env.private()); @@ -93,7 +93,7 @@ unconstrained fn transfer_private_failure_more_than_balance() { unconstrained fn transfer_private_failure_on_behalf_of_self_non_zero_nonce() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, recipient, _) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); // Add authwit let transfer_amount = 1000; let transfer_private_from_call_interface = @@ -112,7 +112,7 @@ unconstrained fn transfer_private_failure_on_behalf_of_self_non_zero_nonce() { unconstrained fn transfer_private_failure_on_behalf_of_more_than_balance() { // Setup with account contracts. Slower since we actually deploy them, but needed for authwits. let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); // Add authwit let transfer_amount = mint_amount + 1; let transfer_private_from_call_interface = @@ -132,7 +132,7 @@ unconstrained fn transfer_private_failure_on_behalf_of_more_than_balance() { unconstrained fn transfer_private_failure_on_behalf_of_other_without_approval() { // Setup with account contracts. Slower since we actually deploy them, but needed for authwits. let (env, token_contract_address, owner, recipient, _) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); // Add authwit let transfer_amount = 1000; let transfer_private_from_call_interface = @@ -147,7 +147,7 @@ unconstrained fn transfer_private_failure_on_behalf_of_other_without_approval() unconstrained fn transfer_private_failure_on_behalf_of_other_wrong_caller() { // Setup with account contracts. Slower since we actually deploy them, but needed for authwits. let (env, token_contract_address, owner, recipient, _) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); // Add authwit let transfer_amount = 1000; let transfer_private_from_call_interface = diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_public.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_public.nr index 72a6eb3f0297..5dddac325736 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_public.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/transfer_public.nr @@ -7,7 +7,7 @@ use dep::aztec::oracle::random::random; unconstrained fn public_transfer() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); // Transfer tokens let transfer_amount = mint_amount / 10; Token::at(token_contract_address).transfer_public(owner, recipient, transfer_amount, 0).call( @@ -23,7 +23,7 @@ unconstrained fn public_transfer() { unconstrained fn public_transfer_to_self() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); // Transfer tokens let transfer_amount = mint_amount / 10; // docs:start:call_public @@ -39,7 +39,7 @@ unconstrained fn public_transfer_to_self() { unconstrained fn public_transfer_on_behalf_of_other() { // Setup with account contracts. Slower since we actually deploy them, but needed for authwits. let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let transfer_amount = mint_amount / 10; let public_transfer_from_call_interface = Token::at(token_contract_address).transfer_public(owner, recipient, transfer_amount, 1); @@ -61,7 +61,7 @@ unconstrained fn public_transfer_on_behalf_of_other() { unconstrained fn public_transfer_failure_more_than_balance() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); // Transfer tokens let transfer_amount = mint_amount + 1; let public_transfer_call_interface = @@ -74,7 +74,7 @@ unconstrained fn public_transfer_failure_more_than_balance() { unconstrained fn public_transfer_failure_on_behalf_of_self_non_zero_nonce() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_public(/* with_account_contracts */ false); // Transfer tokens let transfer_amount = mint_amount / 10; let public_transfer_call_interface = Token::at(token_contract_address).transfer_public( @@ -96,7 +96,7 @@ unconstrained fn public_transfer_failure_on_behalf_of_self_non_zero_nonce() { unconstrained fn public_transfer_failure_on_behalf_of_other_without_approval() { // Setup with account contracts. Slower since we actually deploy them, but needed for authwits. let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let transfer_amount = mint_amount / 10; let public_transfer_from_call_interface = Token::at(token_contract_address).transfer_public(owner, recipient, transfer_amount, 1); @@ -110,7 +110,7 @@ unconstrained fn public_transfer_failure_on_behalf_of_other_without_approval() { unconstrained fn public_transfer_failure_on_behalf_of_other_more_than_balance() { // Setup with account contracts. Slower since we actually deploy them, but needed for authwits. let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let transfer_amount = mint_amount + 1; // docs:start:public_authwit let public_transfer_from_call_interface = @@ -131,7 +131,7 @@ unconstrained fn public_transfer_failure_on_behalf_of_other_more_than_balance() unconstrained fn public_transfer_failure_on_behalf_of_other_wrong_caller() { // Setup with account contracts. Slower since we actually deploy them, but needed for authwits. let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_public(/* with_account_contracts */ true); let transfer_amount = mint_amount / 10; let public_transfer_from_call_interface = Token::at(token_contract_address).transfer_public(owner, recipient, transfer_amount, 1); diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/unshielding.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/unshielding.nr index ffe3e55b89c7..a6dc2e0528d8 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/unshielding.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/unshielding.nr @@ -7,7 +7,7 @@ use dep::aztec::oracle::random::random; unconstrained fn unshield_on_behalf_of_self() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); let unshield_amount = mint_amount / 10; Token::at(token_contract_address).unshield(owner, owner, unshield_amount, 0).call( @@ -20,7 +20,7 @@ unconstrained fn unshield_on_behalf_of_self() { #[test] unconstrained fn unshield_on_behalf_of_other() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); let unshield_amount = mint_amount / 10; let unshield_call_interface = @@ -42,7 +42,7 @@ unconstrained fn unshield_on_behalf_of_other() { unconstrained fn unshield_failure_more_than_balance() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); let unshield_amount = mint_amount + 1; Token::at(token_contract_address).unshield(owner, owner, unshield_amount, 0).call( @@ -54,7 +54,7 @@ unconstrained fn unshield_failure_more_than_balance() { unconstrained fn unshield_failure_on_behalf_of_self_non_zero_nonce() { // Setup without account contracts. We are not using authwits here, so dummy accounts are enough let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); let unshield_amount = mint_amount + 1; Token::at(token_contract_address).unshield(owner, owner, unshield_amount, random()).call( @@ -65,7 +65,7 @@ unconstrained fn unshield_failure_on_behalf_of_self_non_zero_nonce() { #[test(should_fail_with = "Balance too low")] unconstrained fn unshield_failure_on_behalf_of_other_more_than_balance() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); let unshield_amount = mint_amount + 1; let unshield_call_interface = @@ -84,7 +84,7 @@ unconstrained fn unshield_failure_on_behalf_of_other_more_than_balance() { #[test(should_fail_with = "Authorization not found for message hash")] unconstrained fn unshield_failure_on_behalf_of_other_invalid_designated_caller() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); let unshield_amount = mint_amount + 1; let unshield_call_interface = @@ -103,7 +103,7 @@ unconstrained fn unshield_failure_on_behalf_of_other_invalid_designated_caller() #[test(should_fail_with = "Authorization not found for message hash")] unconstrained fn unshield_failure_on_behalf_of_other_no_approval() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); let unshield_amount = mint_amount + 1; let unshield_call_interface = diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr index c3f93777556a..b5ce514aba25 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr @@ -44,7 +44,23 @@ pub unconstrained fn setup( (&mut env, token_contract_address, owner, recipient) } -pub unconstrained fn setup_and_mint( +pub unconstrained fn setup_and_mint_public( + with_account_contracts: bool, +) -> (&mut TestEnvironment, AztecAddress, AztecAddress, AztecAddress, Field) { + // Setup + let (env, token_contract_address, owner, recipient) = setup(with_account_contracts); + let mint_amount = 10000; + // Mint some tokens + let secret = random(); + Token::at(token_contract_address).mint_public(owner, mint_amount).call(&mut env.public()); + + // Time travel so we can read keys from the registry + env.advance_block_by(6); + + (env, token_contract_address, owner, recipient, mint_amount) +} + +pub unconstrained fn setup_and_mint_private( with_account_contracts: bool, ) -> (&mut TestEnvironment, AztecAddress, AztecAddress, AztecAddress, Field) { // Setup @@ -54,7 +70,6 @@ pub unconstrained fn setup_and_mint( let secret = random(); let secret_hash = compute_secret_hash(secret); Token::at(token_contract_address).mint_private(mint_amount, secret_hash).call(&mut env.public()); - Token::at(token_contract_address).mint_public(owner, mint_amount).call(&mut env.public()); // Time travel so we can read keys from the registry env.advance_block_by(6); From 6a606f4fb40f9d8303774f473b344e354e9576d2 Mon Sep 17 00:00:00 2001 From: benesjan Date: Mon, 28 Oct 2024 22:14:31 +0000 Subject: [PATCH 2/3] fixes --- .../contracts/token_contract/src/test/burn.nr | 4 ++-- .../contracts/token_contract/src/test/refunds.nr | 6 ++++-- .../contracts/token_contract/src/test/shielding.nr | 14 +++++++------- .../token_contract/src/test/unshielding.nr | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/burn.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/burn.nr index e4716527fd29..151ef95a5066 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/burn.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/burn.nr @@ -91,7 +91,7 @@ unconstrained fn burn_public_failure_on_behalf_of_other_wrong_caller() { #[test] unconstrained fn burn_private_on_behalf_of_self() { let (env, token_contract_address, owner, _, mint_amount) = - utils::setup_and_mint_public(/* with_account_contracts */ false); + utils::setup_and_mint_private(/* with_account_contracts */ false); let burn_amount = mint_amount / 10; // Burn less than balance @@ -102,7 +102,7 @@ unconstrained fn burn_private_on_behalf_of_self() { #[test] unconstrained fn burn_private_on_behalf_of_other() { let (env, token_contract_address, owner, recipient, mint_amount) = - utils::setup_and_mint_public(/* with_account_contracts */ true); + utils::setup_and_mint_private(/* with_account_contracts */ true); let burn_amount = mint_amount / 10; // Burn on behalf of other diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr index 4e1dfd8ce771..218905e2ae2d 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr @@ -10,7 +10,8 @@ use std::test::OracleMock; #[test] unconstrained fn setup_refund_success() { - let (env, token_contract_address, owner, recipient, mint_amount) = utils::setup_and_mint_private(true); + let (env, token_contract_address, owner, recipient, mint_amount) = + utils::setup_and_mint_private(true); // Renaming owner and recipient to match naming in Token let user = owner; @@ -78,7 +79,8 @@ unconstrained fn setup_refund_success() { //#[test(should_fail_with="funded amount not enough to cover tx fee")] #[test(should_fail_with = "Balance too low")] unconstrained fn setup_refund_insufficient_funded_amount() { - let (env, token_contract_address, owner, recipient, _mint_amount) = utils::setup_and_mint_private(true); + let (env, token_contract_address, owner, recipient, _mint_amount) = + utils::setup_and_mint_private(true); // Renaming owner and recipient to match naming in Token let user = owner; diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr index 93510958f5e0..aef1d98f9cc2 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr @@ -30,7 +30,7 @@ unconstrained fn shielding_on_behalf_of_self() { // Check balances utils::check_public_balance(token_contract_address, owner, mint_amount - shield_amount); - utils::check_private_balance(token_contract_address, owner, mint_amount + shield_amount); + utils::check_private_balance(token_contract_address, owner, shield_amount); } #[test] @@ -70,7 +70,7 @@ unconstrained fn shielding_on_behalf_of_other() { // Check balances utils::check_public_balance(token_contract_address, owner, mint_amount - shield_amount); - utils::check_private_balance(token_contract_address, owner, mint_amount + shield_amount); + utils::check_private_balance(token_contract_address, owner, shield_amount); } #[test] @@ -88,7 +88,7 @@ unconstrained fn shielding_failure_on_behalf_of_self_more_than_balance() { // Check balances utils::check_public_balance(token_contract_address, owner, mint_amount); - utils::check_private_balance(token_contract_address, owner, mint_amount); + utils::check_private_balance(token_contract_address, owner, 0); } #[test] @@ -106,7 +106,7 @@ unconstrained fn shielding_failure_on_behalf_of_self_invalid_nonce() { // Check balances utils::check_public_balance(token_contract_address, owner, mint_amount); - utils::check_private_balance(token_contract_address, owner, mint_amount); + utils::check_private_balance(token_contract_address, owner, 0); } #[test] @@ -132,7 +132,7 @@ unconstrained fn shielding_failure_on_behalf_of_other_more_than_balance() { // Check balances utils::check_public_balance(token_contract_address, owner, mint_amount); - utils::check_private_balance(token_contract_address, owner, mint_amount); + utils::check_private_balance(token_contract_address, owner, 0); } #[test] @@ -154,7 +154,7 @@ unconstrained fn shielding_failure_on_behalf_of_other_wrong_caller() { // Check balances utils::check_public_balance(token_contract_address, owner, mint_amount); - utils::check_private_balance(token_contract_address, owner, mint_amount); + utils::check_private_balance(token_contract_address, owner, 0); } #[test] @@ -175,5 +175,5 @@ unconstrained fn shielding_failure_on_behalf_of_other_without_approval() { // Check balances utils::check_public_balance(token_contract_address, owner, mint_amount); - utils::check_private_balance(token_contract_address, owner, mint_amount); + utils::check_private_balance(token_contract_address, owner, 0); } diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/unshielding.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/unshielding.nr index a6dc2e0528d8..9d7f4f23c1cb 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/unshielding.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/unshielding.nr @@ -14,7 +14,7 @@ unconstrained fn unshield_on_behalf_of_self() { &mut env.private(), ); utils::check_private_balance(token_contract_address, owner, mint_amount - unshield_amount); - utils::check_public_balance(token_contract_address, owner, mint_amount + unshield_amount); + utils::check_public_balance(token_contract_address, owner, unshield_amount); } #[test] From d65ae49de3142a7f9010dabc8708f02ab84537e8 Mon Sep 17 00:00:00 2001 From: benesjan Date: Mon, 28 Oct 2024 22:22:16 +0000 Subject: [PATCH 3/3] cleanup --- .../contracts/token_contract/src/test/utils.nr | 7 ------- 1 file changed, 7 deletions(-) diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr index b5ce514aba25..34e731443b80 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr @@ -51,12 +51,8 @@ pub unconstrained fn setup_and_mint_public( let (env, token_contract_address, owner, recipient) = setup(with_account_contracts); let mint_amount = 10000; // Mint some tokens - let secret = random(); Token::at(token_contract_address).mint_public(owner, mint_amount).call(&mut env.public()); - // Time travel so we can read keys from the registry - env.advance_block_by(6); - (env, token_contract_address, owner, recipient, mint_amount) } @@ -71,9 +67,6 @@ pub unconstrained fn setup_and_mint_private( let secret_hash = compute_secret_hash(secret); Token::at(token_contract_address).mint_private(mint_amount, secret_hash).call(&mut env.public()); - // Time travel so we can read keys from the registry - env.advance_block_by(6); - // docs:start:txe_test_add_note // We need to manually add the note to TXE because `TransparentNote` does not support automatic note log delivery. env.add_note(