Lines
100 %
Functions
use crate::{
contract::execute,
msg::{ExecuteMsg, FeeRecipient},
state::CONFIG,
testing::test_utils::{TEST_CONTRACT_ADDR, TEST_USER_ADDR},
types::Config,
};
use cosmwasm_std::testing::{message_info, mock_env};
use cosmwasm_std::{coins, Addr};
use injective_cosmwasm::{inj_mock_deps, OwnedDepsExt};
#[test]
pub fn admin_can_update_config() {
let mut deps = inj_mock_deps(|_| {});
let config = Config {
fee_recipient: Addr::unchecked(TEST_CONTRACT_ADDR),
admin: Addr::unchecked(TEST_USER_ADDR),
CONFIG.save(deps.as_mut_deps().storage, &config).expect("could not save config");
let new_admin = Addr::unchecked("new_admin");
let new_fee_recipient = Addr::unchecked("new_fee_recipient");
let info = message_info(&Addr::unchecked(TEST_USER_ADDR), &coins(12, "eth"));
let msg = ExecuteMsg::UpdateConfig {
admin: Some(new_admin.clone()),
fee_recipient: Some(FeeRecipient::Address(new_fee_recipient.clone())),
let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap();
assert_eq!(0, res.messages.len(), "no messages expected");
let config = CONFIG.load(deps.as_mut_deps().storage).unwrap();
assert_eq!(config.admin, new_admin, "admin was not updated");
assert_eq!(config.fee_recipient, new_fee_recipient, "fee_recipient was not updated");
res.events
.iter()
.find(|e| e.ty == "config_updated")
.expect("update_config event expected")
.attributes
.find(|a| a.key == "admin" && a.value == new_admin.to_string())
.expect("admin attribute expected");
.find(|a| a.key == "fee_recipient" && a.value == new_fee_recipient.to_string())
.expect("fee_recipient attribute expected");
}
pub fn non_admin_cannot_update_config() {
let info = message_info(&Addr::unchecked("non_admin"), &coins(12, "eth"));
admin: Some(new_admin),
fee_recipient: Some(FeeRecipient::Address(new_fee_recipient)),
let res = execute(deps.as_mut(), mock_env(), info, msg);
assert!(res.is_err(), "expected error on non-admin update config");