From 91a97d1b160477a15e5f9aefb0aaff8a4e49be5e Mon Sep 17 00:00:00 2001 From: Nicolas Coquelet Date: Mon, 25 Nov 2024 17:10:20 +0100 Subject: [PATCH 1/4] chore: fix formating --- contracts/src/fund.cairo | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/contracts/src/fund.cairo b/contracts/src/fund.cairo index 4ad2cef..5a2d137 100644 --- a/contracts/src/fund.cairo +++ b/contracts/src/fund.cairo @@ -143,17 +143,17 @@ pub mod Fund { fn get_name(self: @ContractState) -> ByteArray { return self.name.read(); } - fn set_reason(ref self: ContractState, reason: ByteArray) { - let caller = get_caller_address(); - let valid_address_1 = contract_address_const::(); - let valid_address_2 = contract_address_const::(); + fn set_reason(ref self: ContractState, reason: ByteArray) { + let caller = get_caller_address(); + let valid_address_1 = contract_address_const::(); + let valid_address_2 = contract_address_const::(); - assert!( - self.owner.read() == caller || valid_address_1 == caller || valid_address_2 == caller, - "You must be an owner or admin to perform this action" - ); + assert!( + self.owner.read() == caller || valid_address_1 == caller || valid_address_2 == caller, + "You must be an owner or admin to perform this action" + ); - self.reason.write(reason); + self.reason.write(reason); } fn get_reason(self: @ContractState) -> ByteArray { return self.reason.read(); From 2e3bd72da117975fd3fd596cb57de5731478c491 Mon Sep 17 00:00:00 2001 From: Nicolas Coquelet Date: Mon, 25 Nov 2024 17:14:58 +0100 Subject: [PATCH 2/4] feat: add test on set_reason by admins --- contracts/tests/test_fund.cairo | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/contracts/tests/test_fund.cairo b/contracts/tests/test_fund.cairo index 1afd5d0..f6ac561 100644 --- a/contracts/tests/test_fund.cairo +++ b/contracts/tests/test_fund.cairo @@ -146,15 +146,36 @@ fn test_set_name_not_admin_or_owner() { } #[test] -fn test_set_reason() { +fn test_set_reason_owner() { let contract_address = _setup_(); let dispatcher = IFundDispatcher { contract_address }; let reason = dispatcher.get_reason(); assert(reason == REASON_1(), 'Invalid reason'); + start_cheat_caller_address_global(OWNER()); dispatcher.set_reason(REASON_2()); let new_reason = dispatcher.get_reason(); - assert(new_reason == REASON_2(), 'Set reason method not working') + assert(new_reason == REASON_2(), 'Not allowed to change reason'); +} + +#[test] +fn test_set_reason_admins() { + let contract_address = _setup_(); + let dispatcher = IFundDispatcher { contract_address }; + let reason = dispatcher.get_reason(); + assert(reason == REASON_1(), 'Invalid reason'); + + // test with ADMIN_1 + start_cheat_caller_address_global(VALID_ADDRESS_1()); + dispatcher.set_reason(REASON_1()); + let new_reason = dispatcher.get_reason(); + assert(new_reason == REASON_1(), 'Not allowed to change reason'); + + // test with ADMIN_2 + start_cheat_caller_address_global(VALID_ADDRESS_2()); + dispatcher.set_reason(REASON_2()); + let new_reason = dispatcher.get_reason(); + assert(new_reason == REASON_2(), 'Not allowed to change reason') } #[test] From 30702ec28e715dccc4465889ec31ebb775bcb547 Mon Sep 17 00:00:00 2001 From: Nicolas Coquelet Date: Mon, 25 Nov 2024 17:16:44 +0100 Subject: [PATCH 3/4] feat: unsured that other address will be refused --- contracts/tests/test_fund.cairo | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/contracts/tests/test_fund.cairo b/contracts/tests/test_fund.cairo index f6ac561..75e3851 100644 --- a/contracts/tests/test_fund.cairo +++ b/contracts/tests/test_fund.cairo @@ -248,6 +248,15 @@ fn test_new_vote_received_event_emitted_successful() { ); } +#[test] +#[should_panic(expected: ("You must be an owner or admin to perform this action",))] +fn test_set_reason_unauthorized() { + let contract_address = _setup_(); + let dispatcher = IFundDispatcher { contract_address }; + // Change the reason without being authrorized + dispatcher.set_reason("not stored reason"); +} + #[test] #[should_panic(expected: ("Only Admins can set goal",))] fn test_set_goal_unauthorized() { From eb3bf88fabbefea6530f8a2fe30b979bfaeedc45 Mon Sep 17 00:00:00 2001 From: Nicolas Coquelet Date: Mon, 25 Nov 2024 17:17:48 +0100 Subject: [PATCH 4/4] fix: it's preferable to test with different values to avoid regression --- contracts/tests/test_fund.cairo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/tests/test_fund.cairo b/contracts/tests/test_fund.cairo index 75e3851..ae05333 100644 --- a/contracts/tests/test_fund.cairo +++ b/contracts/tests/test_fund.cairo @@ -37,10 +37,10 @@ fn NAME() -> ByteArray { "Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum" } fn REASON_1() -> ByteArray { - "Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum" + "Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum 1" } fn REASON_2() -> ByteArray { - "Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum" + "Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum, Lorem impsum 2" } fn GOAL() -> u256 { 1000