@@ -34,8 +34,8 @@ use cosmwasm_std::{
34
34
mock_dependencies, mock_env, mock_info, MockApi , MockQuerier , MockStorage ,
35
35
MOCK_CONTRACT_ADDR ,
36
36
} ,
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 ,
39
39
} ;
40
40
41
41
use common:: {
@@ -580,6 +580,7 @@ use cw_common::ibc_types::IbcClientId;
580
580
use cw_ibc_core:: context:: CwIbcCoreContext ;
581
581
use cw_ibc_core:: ics04_channel:: Counterparty ;
582
582
use cw_ibc_core:: ics04_channel:: State ;
583
+ use cw_ibc_core:: traits:: IbcClient ;
583
584
use cw_ibc_core:: ConnectionEnd ;
584
585
use cw_ibc_core:: { compute_packet_commitment, ChannelEnd , Sequence } ;
585
586
use prost:: Message ;
@@ -631,6 +632,7 @@ pub struct TestContext {
631
632
pub module_address : Option < Addr > ,
632
633
pub packet : Option < RawPacket > ,
633
634
pub client_id : IbcClientId ,
635
+ pub client_type : ClientType ,
634
636
pub connection_id : ConnectionId ,
635
637
pub env : Env ,
636
638
pub height : Height ,
@@ -653,6 +655,7 @@ impl TestContext {
653
655
port_id : PortId :: default ( ) ,
654
656
channel_id : ChannelId :: default ( ) ,
655
657
lightclient : Some ( LightClient :: new ( "lightclient" . to_string ( ) ) ) ,
658
+ client_type : ClientType :: new ( "iconclient" . to_string ( ) ) ,
656
659
packet : None ,
657
660
mock_queries : HashMap :: < Binary , Binary > :: new ( ) ,
658
661
module_address : Some ( Addr :: unchecked ( "moduleaddress" ) ) ,
@@ -831,6 +834,13 @@ impl TestContext {
831
834
ctx
832
835
}
833
836
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
+
834
844
fn setup_channel_end (
835
845
mut ctx : TestContext ,
836
846
state : State ,
@@ -1029,6 +1039,31 @@ impl TestContext {
1029
1039
self . save_consensus_state ( storage, self . client_state . clone ( ) . unwrap ( ) . latest_height ) ;
1030
1040
}
1031
1041
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
+
1032
1067
pub fn save_next_sequence_send ( & self , storage : & mut dyn Storage , contract : & CwIbcCoreContext ) {
1033
1068
if let Some ( packet) = self . packet . clone ( ) {
1034
1069
contract
@@ -1081,6 +1116,42 @@ impl TestContext {
1081
1116
}
1082
1117
}
1083
1118
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
+
1084
1155
pub fn save_channel_end ( & self , storage : & mut dyn Storage , contract : & CwIbcCoreContext ) {
1085
1156
if let Some ( channel_end) = self . channel_end . clone ( ) {
1086
1157
contract
0 commit comments