From 6d507c31dbf73dcdec4b6e92799ff6fa3fc905ae Mon Sep 17 00:00:00 2001 From: gbengaeben Date: Thu, 27 Aug 2026 16:44:41 +0000 Subject: [PATCH] test(mock-oracle): cover non-admin rejection of transfer_admin transfer_admin was only tested for the admin success path; the admin-gated rejection was never asserted. Add a test confirming a non-admin caller is rejected with Unauthorized and the admin role is unchanged. Closes #1032 --- contracts/mock-oracle/src/lib.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/contracts/mock-oracle/src/lib.rs b/contracts/mock-oracle/src/lib.rs index 8131c4129..ea6e72c5b 100644 --- a/contracts/mock-oracle/src/lib.rs +++ b/contracts/mock-oracle/src/lib.rs @@ -765,5 +765,19 @@ pub mod mock_oracle_contract { test::set_caller::(accounts.bob); assert_eq!(oracle.reset(1), Err(OracleError::Unauthorized)); } + + #[ink::test] + fn non_admin_cannot_transfer_admin() { + let accounts = test::default_accounts::(); + let mut oracle = setup(); + // A non-admin caller cannot hand the admin role to someone else. + test::set_caller::(accounts.bob); + assert_eq!( + oracle.transfer_admin(accounts.charlie), + Err(OracleError::Unauthorized) + ); + // Admin role is unchanged after the rejected call. + assert_eq!(oracle.admin(), accounts.alice); + } } }