diff --git a/contracts/src/fund.cairo b/contracts/src/fund.cairo index ccae2a9..e4ef208 100644 --- a/contracts/src/fund.cairo +++ b/contracts/src/fund.cairo @@ -177,10 +177,12 @@ pub mod Fund { } fn set_goal(ref self: ContractState, goal: u256) { let caller = get_caller_address(); - let fund_manager_address = contract_address_const::< - FundManagerConstants::FUND_MANAGER_ADDRESS - >(); - assert!(fund_manager_address == caller, "You are not the fund manager"); + let valid_address_1 = contract_address_const::(); + let valid_address_2 = contract_address_const::(); + assert!( + valid_address_1 == caller || valid_address_2 == caller, + "Only Admins can change the fund state" + ); self.goal.write(goal); } fn get_goal(self: @ContractState) -> u256 { diff --git a/contracts/tests/test_fund.cairo b/contracts/tests/test_fund.cairo index 48b7e2a..dac07fd 100644 --- a/contracts/tests/test_fund.cairo +++ b/contracts/tests/test_fund.cairo @@ -163,10 +163,16 @@ fn test_set_goal() { let dispatcher = IFundDispatcher { contract_address }; let goal = dispatcher.get_goal(); assert(goal == GOAL(), 'Invalid goal'); - start_cheat_caller_address_global(FUND_MANAGER()); + + start_cheat_caller_address_global(VALID_ADDRESS_1()); dispatcher.set_goal(123); let new_goal = dispatcher.get_goal(); assert(new_goal == 123, 'Set goal method not working') + + start_cheat_caller_address_global(VALID_ADDRESS_2()); + dispatcher.set_goal(140); + let new_goal_2 = dispatcher.get_goal(); + assert(new_goal_2 == 140, 'Set goal method not working'); } #[test] @@ -222,7 +228,7 @@ fn test_new_vote_received_event_emitted_successful() { } #[test] -#[should_panic(expected: ("You are not the fund manager",))] +#[should_panic(expected: ("Only Admins can change the fund state",))] fn test_set_goal_unauthorized() { let contract_address = _setup_(); let dispatcher = IFundDispatcher { contract_address };