From 045e0fe33581c3f95b9b283dc7ec00fdd0c0ac37 Mon Sep 17 00:00:00 2001 From: dimka90 Date: Mon, 29 Jun 2026 18:09:53 +0100 Subject: [PATCH] test: add factory pause_all tests for emergency pause coverage Add test_pause_all and test_pause_all_unauthorized to verify the factory pause_all function is admin-only. All three pool contracts (rotational, target, flexible) already have pause/unpause/emergency_withdraw functions with guards, frontend paused banner, and full test coverage. Closes: #168 --- smartcontract/contracts/factory/src/tests.rs | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/smartcontract/contracts/factory/src/tests.rs b/smartcontract/contracts/factory/src/tests.rs index 45aa127..2999a77 100644 --- a/smartcontract/contracts/factory/src/tests.rs +++ b/smartcontract/contracts/factory/src/tests.rs @@ -102,6 +102,43 @@ fn test_set_treasury_unauthorized() { client.set_treasury(&new_treasury); } +#[test] +fn test_pause_all() { + let env = Env::default(); + let contract_id = env.register_contract(None, JointSaveFactory); + let client = JointSaveFactoryClient::new(&env, &contract_id); + + let admin = Address::generate(&env); + let token = Address::generate(&env); + let treasury = Address::generate(&env); + + env.mock_all_auths(); + client.initialize(&admin, &token, &treasury); + + // pause_all should succeed when called by admin + client.pause_all(&admin); + // No state change to assert — just must not panic +} + +#[test] +#[should_panic(expected = "not admin")] +fn test_pause_all_unauthorized() { + let env = Env::default(); + let contract_id = env.register_contract(None, JointSaveFactory); + let client = JointSaveFactoryClient::new(&env, &contract_id); + + let admin = Address::generate(&env); + let token = Address::generate(&env); + let treasury = Address::generate(&env); + let stranger = Address::generate(&env); + + env.mock_all_auths(); + client.initialize(&admin, &token, &treasury); + + // Non-admin should be rejected + client.pause_all(&stranger); +} + #[test] fn test_bump_state() { let env = Env::default();