From 845ecbcb0b361d063be4287fef297cc8a17b9630 Mon Sep 17 00:00:00 2001 From: Jakub Bogucki Date: Tue, 25 Jan 2022 15:51:50 +0100 Subject: [PATCH] Valset: better unjail error message when jail lock didn't expire --- contracts/tgrade-valset/src/contract.rs | 4 ++-- contracts/tgrade-valset/src/error.rs | 3 +++ contracts/tgrade-valset/src/multitest/jailing.rs | 10 ++-------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/contracts/tgrade-valset/src/contract.rs b/contracts/tgrade-valset/src/contract.rs index 60081420..84ab9ca3 100644 --- a/contracts/tgrade-valset/src/contract.rs +++ b/contracts/tgrade-valset/src/contract.rs @@ -272,8 +272,8 @@ fn execute_unjail( Ok(Some(expiration)) if (expiration.is_expired(&env.block) || is_admin) => { JAIL.remove(deps.storage, operator); } - // Jail not expired and called by non-admin - _ => return Err(AdminError::NotAdmin {}.into()), + // Jail not expired + _ => return Err(ContractError::JailDidNotExpire {}), } let res = Response::new() diff --git a/contracts/tgrade-valset/src/error.rs b/contracts/tgrade-valset/src/error.rs index 2591c86d..1624bfea 100644 --- a/contracts/tgrade-valset/src/error.rs +++ b/contracts/tgrade-valset/src/error.rs @@ -68,6 +68,9 @@ pub enum ContractError { #[error("Cannot unjail validator who's been jailed forever")] UnjailFromJailForeverForbidden {}, + + #[error("Jail did not yet expire")] + JailDidNotExpire {}, } impl From for ContractError { diff --git a/contracts/tgrade-valset/src/multitest/jailing.rs b/contracts/tgrade-valset/src/multitest/jailing.rs index 9f9d46fd..d57880dc 100644 --- a/contracts/tgrade-valset/src/multitest/jailing.rs +++ b/contracts/tgrade-valset/src/multitest/jailing.rs @@ -138,17 +138,11 @@ fn anyone_can_unjail_self_after_period() { // I cannot unjail myself before expiration... let err = suite.unjail(members[0], None).unwrap_err(); - assert_eq!( - ContractError::AdminError(AdminError::NotAdmin {}), - err.downcast().unwrap(), - ); + assert_eq!(ContractError::JailDidNotExpire {}, err.downcast().unwrap(),); // ...even directly pointing myself let err = suite.unjail(members[0], members[0]).unwrap_err(); - assert_eq!( - ContractError::AdminError(AdminError::NotAdmin {}), - err.downcast().unwrap(), - ); + assert_eq!(ContractError::JailDidNotExpire {}, err.downcast().unwrap(),); // And I cannot unjail anyone else let err = suite.unjail(members[0], members[1]).unwrap_err();