Skip to content

Commit 25407cb

Browse files
committed
chore: update test coverage for ibc client
1 parent 3767742 commit 25407cb

File tree

2 files changed

+349
-669
lines changed

2 files changed

+349
-669
lines changed

contracts/cosmwasm-vm/cw-ibc-core/tests/setup.rs

+73-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ use cosmwasm_std::{
3434
mock_dependencies, mock_env, mock_info, MockApi, MockQuerier, MockStorage,
3535
MOCK_CONTRACT_ADDR,
3636
},
37-
to_binary, Addr, Binary, BlockInfo, ContractInfo, ContractResult, Empty, Env, IbcEndpoint,
38-
MessageInfo, OwnedDeps, SystemResult, Timestamp, TransactionInfo, WasmQuery,
37+
to_binary, Addr, Binary, BlockInfo, ContractInfo, ContractResult, DepsMut, Empty, Env,
38+
IbcEndpoint, MessageInfo, OwnedDeps, SystemResult, Timestamp, TransactionInfo, WasmQuery,
3939
};
4040

4141
use common::{
@@ -580,6 +580,7 @@ use cw_common::ibc_types::IbcClientId;
580580
use cw_ibc_core::context::CwIbcCoreContext;
581581
use cw_ibc_core::ics04_channel::Counterparty;
582582
use cw_ibc_core::ics04_channel::State;
583+
use cw_ibc_core::traits::IbcClient;
583584
use cw_ibc_core::ConnectionEnd;
584585
use cw_ibc_core::{compute_packet_commitment, ChannelEnd, Sequence};
585586
use prost::Message;
@@ -631,6 +632,7 @@ pub struct TestContext {
631632
pub module_address: Option<Addr>,
632633
pub packet: Option<RawPacket>,
633634
pub client_id: IbcClientId,
635+
pub client_type: ClientType,
634636
pub connection_id: ConnectionId,
635637
pub env: Env,
636638
pub height: Height,
@@ -653,6 +655,7 @@ impl TestContext {
653655
port_id: PortId::default(),
654656
channel_id: ChannelId::default(),
655657
lightclient: Some(LightClient::new("lightclient".to_string())),
658+
client_type: ClientType::new("iconclient".to_string()),
656659
packet: None,
657660
mock_queries: HashMap::<Binary, Binary>::new(),
658661
module_address: Some(Addr::unchecked("moduleaddress")),
@@ -831,6 +834,13 @@ impl TestContext {
831834
ctx
832835
}
833836

837+
pub fn for_client_state(env: Env) -> Self {
838+
let mut ctx = TestContext::default(env);
839+
ctx.client_id = ClientId::from_str("iconclient-0").unwrap();
840+
841+
ctx
842+
}
843+
834844
fn setup_channel_end(
835845
mut ctx: TestContext,
836846
state: State,
@@ -1029,6 +1039,31 @@ impl TestContext {
10291039
self.save_consensus_state(storage, self.client_state.clone().unwrap().latest_height);
10301040
}
10311041

1042+
pub fn init_connection_delay(
1043+
&mut self,
1044+
storage: &mut dyn Storage,
1045+
contract: &CwIbcCoreContext,
1046+
) {
1047+
contract
1048+
.store_last_processed_on(storage, &self.env, &self.client_id)
1049+
.unwrap();
1050+
}
1051+
1052+
pub fn init_client_state(&mut self, deps: DepsMut, contract: &CwIbcCoreContext) {
1053+
self.init_context(deps.storage, &contract);
1054+
self.save_consensus_state(
1055+
deps.storage,
1056+
self.client_state.clone().unwrap().latest_height,
1057+
);
1058+
contract.init_client_counter(deps.storage, 0).unwrap();
1059+
self.save_client_commitment(
1060+
deps.storage,
1061+
&contract,
1062+
&self.client_state.clone().unwrap().encode_to_vec(),
1063+
);
1064+
self.save_register_client(deps, &contract);
1065+
}
1066+
10321067
pub fn save_next_sequence_send(&self, storage: &mut dyn Storage, contract: &CwIbcCoreContext) {
10331068
if let Some(packet) = self.packet.clone() {
10341069
contract
@@ -1081,6 +1116,42 @@ impl TestContext {
10811116
}
10821117
}
10831118

1119+
pub fn save_connection_to_client(
1120+
&self,
1121+
storage: &mut dyn Storage,
1122+
contract: &CwIbcCoreContext,
1123+
) {
1124+
contract
1125+
.store_connection_to_client(storage, &self.client_id, &self.connection_id)
1126+
.unwrap();
1127+
}
1128+
1129+
pub fn save_client_commitment(
1130+
&self,
1131+
storage: &mut dyn Storage,
1132+
contract: &CwIbcCoreContext,
1133+
client_state_hash: &Vec<u8>,
1134+
) {
1135+
contract
1136+
.store_client_commitment(
1137+
storage,
1138+
&self.env,
1139+
&self.client_id,
1140+
client_state_hash.clone(),
1141+
)
1142+
.unwrap();
1143+
}
1144+
1145+
pub fn save_register_client(&self, deps: DepsMut, contract: &CwIbcCoreContext) {
1146+
if let Some(lightclient) = self.lightclient.clone() {
1147+
let addr = Addr::unchecked(lightclient.get_address());
1148+
1149+
contract
1150+
.register_client(deps, self.client_type.clone(), addr)
1151+
.unwrap();
1152+
}
1153+
}
1154+
10841155
pub fn save_channel_end(&self, storage: &mut dyn Storage, contract: &CwIbcCoreContext) {
10851156
if let Some(channel_end) = self.channel_end.clone() {
10861157
contract

0 commit comments

Comments
 (0)