#[test]
#[cfg(feature = "cosmwasm_1_2")]
fn required_entrypoints_should_work() {
use cosmwasm_std::{Checksum, Empty};
use cw_multi_test::{App, AppResponse, Contract, ContractWrapper, Executor, IntoAddr};
mod the_contract {
use cosmwasm_std::{
to_json_binary, Binary, Deps, DepsMut, Empty, Env, MessageInfo, Response, StdResult,
};
pub fn instantiate(
_deps: DepsMut,
_env: Env,
_info: MessageInfo,
_msg: Empty,
) -> StdResult<Response> {
Ok(Response::default())
}
pub fn execute(
_deps: DepsMut,
_env: Env,
_info: MessageInfo,
_msg: Empty,
) -> StdResult<Response> {
Ok(Response::default())
}
pub fn query(_deps: Deps, _env: Env, _msg: Empty) -> StdResult<Binary> {
to_json_binary(&Empty {})
}
}
pub fn contract() -> Box<dyn Contract<Empty>> {
Box::new(
ContractWrapper::new(
the_contract::execute,
the_contract::instantiate,
the_contract::query,
)
.with_checksum(Checksum::generate(&[1, 2, 3, 4, 5, 6, 7, 8, 9])),
)
}
let contract = contract();
let checksum = contract.checksum();
let mut app = App::default();
let code_id = app.store_code(contract);
assert_eq!(1, code_id);
let owner_addr = "owner".into_addr();
let admin_addr = "admin".into_addr();
let contract_addr = app
.instantiate_contract(
code_id,
owner_addr.clone(),
&Empty {},
&[],
"the-contract",
Some(admin_addr.to_string()),
)
.unwrap();
let _: AppResponse = app
.execute_contract(owner_addr.clone(), contract_addr.clone(), &Empty {}, &[])
.unwrap();
let _: Empty = app
.wrap()
.query_wasm_smart(contract_addr.clone(), &Empty {})
.unwrap();
let code_info_response = app.wrap().query_wasm_code_info(code_id).unwrap();
assert_eq!(
checksum.unwrap().as_slice(),
code_info_response.checksum.as_slice()
);
let res = app.wasm_sudo(contract_addr.clone(), &Empty {});
assert!(res
.unwrap_err()
.to_string()
.contains("sudo is not implemented for contract"));
let res = app.migrate_contract(owner_addr.clone(), contract_addr.clone(), &Empty {}, 2);
assert!(res
.unwrap_err()
.to_string()
.contains("Cannot migrate contract to unregistered code id"));
let res = app.migrate_contract(owner_addr, contract_addr.clone(), &Empty {}, 1);
assert!(res
.unwrap_err()
.to_string()
.contains("Only admin can migrate contract"));
let res = app.migrate_contract(admin_addr, contract_addr, &Empty {}, 1);
assert!(res
.unwrap_err()
.to_string()
.contains("migrate is not implemented for contract"));
}