From fcccbb2240ae3bd104bfb31ff15814b1bea76d35 Mon Sep 17 00:00:00 2001 From: Iris Date: Wed, 5 Jun 2024 12:14:26 +0200 Subject: [PATCH] feat: remove update_admin and finalize upgrade --- src/interface/naming.cairo | 2 -- src/naming/main.cairo | 26 +++++++++------------ src/tests/naming/test_abuses.cairo | 16 +------------ src/tests/naming/test_admin_update.cairo | 29 ++++++++++++++++-------- 4 files changed, 32 insertions(+), 41 deletions(-) diff --git a/src/interface/naming.cairo b/src/interface/naming.cairo index 3441026..e5caf55 100644 --- a/src/interface/naming.cairo +++ b/src/interface/naming.cairo @@ -122,6 +122,4 @@ trait INaming { fn blacklist_renewal_contract(ref self: TContractState, contract: ContractAddress); fn toggle_ar_discount_renew(ref self: TContractState); - - fn update_admin(ref self: TContractState, new_admin: ContractAddress); } diff --git a/src/naming/main.cairo b/src/naming/main.cairo index 994ea20..9e8fd4a 100644 --- a/src/naming/main.cairo +++ b/src/naming/main.cairo @@ -156,6 +156,7 @@ mod Naming { self._pricing_contract.write(pricing); self._referral_contract.write(referral); self._admin_address.write(admin); + self.ownable.initializer(admin); } component!(path: storage_read_component, storage: storage_read, event: StorageReadEvent); @@ -708,15 +709,10 @@ mod Naming { // ADMIN - fn update_admin(ref self: ContractState, new_admin: ContractAddress) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); - self.ownable.initializer(new_admin); - } - fn set_expiry( ref self: ContractState, root_domain: felt252, expiry: u64 ) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); let hashed_domain = self.hash_domain(array![root_domain].span()); let domain_data = self._domain_data.read(hashed_domain); let data = DomainData { @@ -735,7 +731,7 @@ mod Naming { } fn claim_balance(ref self: ContractState, erc20: ContractAddress) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); let balance = IERC20CamelDispatcher { contract_address: erc20 } .balanceOf(get_contract_address()); let has_claimed = IERC20CamelDispatcher { contract_address: erc20 } @@ -744,45 +740,45 @@ mod Naming { } fn set_discount(ref self: ContractState, discount_id: felt252, discount: Discount) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); self.discounts.write(discount_id, discount); } fn set_pricing_contract(ref self: ContractState, pricing_contract: ContractAddress) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); self._pricing_contract.write(pricing_contract); } fn set_referral_contract(ref self: ContractState, referral_contract: ContractAddress) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); self._referral_contract.write(referral_contract); } fn upgrade(ref self: ContractState, new_class_hash: ClassHash) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); // todo: use components assert(!new_class_hash.is_zero(), 'Class hash cannot be zero'); starknet::replace_class_syscall(new_class_hash).unwrap(); } fn set_server_pub_key(ref self: ContractState, new_key: felt252) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); self._server_pub_key.write(new_key); } fn whitelist_renewal_contract(ref self: ContractState, contract: ContractAddress) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); self._whitelisted_renewal_contracts.write(contract, true); } fn blacklist_renewal_contract(ref self: ContractState, contract: ContractAddress) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); self._whitelisted_renewal_contracts.write(contract, false); } fn toggle_ar_discount_renew(ref self: ContractState) { - assert(get_caller_address() == self._admin_address.read(), 'you are not admin'); + self.ownable.assert_only_owner(); self._ar_discount_renew_enabled.write(!self._ar_discount_renew_enabled.read()); } } diff --git a/src/tests/naming/test_abuses.cairo b/src/tests/naming/test_abuses.cairo index 9385a1e..7b83f22 100644 --- a/src/tests/naming/test_abuses.cairo +++ b/src/tests/naming/test_abuses.cairo @@ -216,21 +216,7 @@ fn test_renewal_period_too_long() { #[test] #[available_gas(2000000000)] -#[should_panic(expected: ('you are not admin', 'ENTRYPOINT_FAILED'))] -fn test_non_admin_cannot_set_admin() { - // setup - let (_, _, _, naming) = deploy(); - let non_admin_address = contract_address_const::<0x456>(); - set_contract_address(non_admin_address); - - // A non-admin tries to set a new admin - let new_admin = contract_address_const::<0x789>(); - naming.update_admin(new_admin); -} - -#[test] -#[available_gas(2000000000)] -#[should_panic(expected: ('you are not admin', 'ENTRYPOINT_FAILED'))] +#[should_panic(expected: ('Caller is not the owner', 'ENTRYPOINT_FAILED'))] fn test_non_admin_cannot_claim_balance() { // setup let (eth, _, _, naming) = deploy(); diff --git a/src/tests/naming/test_admin_update.cairo b/src/tests/naming/test_admin_update.cairo index ac215b4..007bb0e 100644 --- a/src/tests/naming/test_admin_update.cairo +++ b/src/tests/naming/test_admin_update.cairo @@ -22,17 +22,28 @@ fn test_update_admin() { let new_admin = contract_address_const::<0x456>(); let ownable2Step = IOwnableTwoStepDispatcher { contract_address: naming.contract_address }; - assert(ownable2Step.owner() == contract_address_const::<0>(), 'admin should be 0'); - - // we call the update_admin function with the new admin - set_contract_address(admin); - naming.update_admin(new_admin); - assert(ownable2Step.owner() == new_admin, 'change of admin failed'); + assert(ownable2Step.owner() == admin, 'admin not initialized'); // Now we go back to the first admin, this time using the ownable2Step - set_contract_address(new_admin); - ownable2Step.transfer_ownership(admin); set_contract_address(admin); + ownable2Step.transfer_ownership(new_admin); + set_contract_address(new_admin); ownable2Step.accept_ownership(); - assert(ownable2Step.owner() == admin, 'change of admin failed'); + assert(ownable2Step.owner() == new_admin, 'change of admin failed'); +} + + +#[test] +#[available_gas(2000000000)] +#[should_panic(expected: ('Caller is not the owner', 'ENTRYPOINT_FAILED'))] +fn test_non_admin_cannot_set_admin() { + // setup + let (_, _, _, naming) = deploy(); + let ownable2Step = IOwnableTwoStepDispatcher { contract_address: naming.contract_address }; + let non_admin_address = contract_address_const::<0x456>(); + set_contract_address(non_admin_address); + + // A non-admin tries to set a new admin + let new_admin = contract_address_const::<0x789>(); + ownable2Step.transfer_ownership(new_admin); } \ No newline at end of file