ibc_testkit/fixtures/core/client/
mod.rs1#[cfg(feature = "serde")]
2mod msg_create_client;
3#[cfg(feature = "serde")]
4mod msg_update_client;
5mod msg_upgrade_client;
6
7#[cfg(feature = "serde")]
8pub use self::msg_create_client::*;
9#[cfg(feature = "serde")]
10pub use self::msg_update_client::*;
11pub use self::msg_upgrade_client::*;
12
13#[cfg(test)]
14mod tests {
15 use core::str::FromStr;
16
17 use ibc::core::client::types::events::*;
18 use ibc::core::client::types::Height;
19 use ibc::core::host::types::identifiers::*;
20 use ibc::primitives::prelude::*;
21 use ibc::primitives::ToVec;
22 use ibc_proto::google::protobuf::Any;
23 use tendermint::abci::Event as AbciEvent;
24
25 use crate::fixtures::clients::mock::dummy_new_mock_header;
26
27 #[test]
28 fn ibc_to_abci_client_events() {
29 struct Test {
30 event_kind: &'static str,
31 event: AbciEvent,
32 expected_keys: Vec<&'static str>,
33 expected_values: Vec<&'static str>,
34 }
35
36 let client_type = ClientType::from_str("07-tendermint")
37 .expect("never fails because it's a valid client type");
38 let client_id = client_type.build_client_id(0);
39 let consensus_height = Height::new(0, 5).unwrap();
40 let consensus_heights = vec![Height::new(0, 5).unwrap(), Height::new(0, 7).unwrap()];
41 let header: Any = dummy_new_mock_header(5).into();
42 let expected_keys = vec![
43 "client_id",
44 "client_type",
45 "consensus_height",
46 "consensus_heights",
47 "header",
48 ];
49
50 let expected_values = vec![
51 "07-tendermint-0",
52 "07-tendermint",
53 "0-5",
54 "0-5,0-7",
55 "0a102f6962632e6d6f636b2e486561646572120e0a021005108080889ebdc8819b17",
56 ];
57
58 let tests: Vec<Test> = vec![
59 Test {
60 event_kind: CREATE_CLIENT_EVENT,
61 event: CreateClient::new(client_id.clone(), client_type.clone(), consensus_height)
62 .into(),
63 expected_keys: expected_keys[0..3].to_vec(),
64 expected_values: expected_values[0..3].to_vec(),
65 },
66 Test {
67 event_kind: UPDATE_CLIENT_EVENT,
68 event: UpdateClient::new(
69 client_id.clone(),
70 client_type.clone(),
71 consensus_height,
72 consensus_heights,
73 header.to_vec(),
74 )
75 .into(),
76 expected_keys: expected_keys.clone(),
77 expected_values: expected_values.clone(),
78 },
79 Test {
80 event_kind: UPGRADE_CLIENT_EVENT,
81 event: UpgradeClient::new(client_id.clone(), client_type.clone(), consensus_height)
82 .into(),
83 expected_keys: expected_keys[0..3].to_vec(),
84 expected_values: expected_values[0..3].to_vec(),
85 },
86 Test {
87 event_kind: CLIENT_MISBEHAVIOUR_EVENT,
88 event: ClientMisbehaviour::new(client_id, client_type).into(),
89 expected_keys: expected_keys[0..2].to_vec(),
90 expected_values: expected_values[0..2].to_vec(),
91 },
92 ];
93
94 for t in tests {
95 assert_eq!(t.event.kind, t.event_kind);
96 assert_eq!(t.expected_keys.len(), t.event.attributes.len());
97 for (i, e) in t.event.attributes.iter().enumerate() {
98 assert_eq!(
99 e.key_str().unwrap(),
100 t.expected_keys[i],
101 "key mismatch for {:?}",
102 t.event_kind
103 );
104 }
105 for (i, e) in t.event.attributes.iter().enumerate() {
106 assert_eq!(
107 e.value_str().unwrap(),
108 t.expected_values[i],
109 "value mismatch for {:?}",
110 t.event_kind
111 );
112 }
113 }
114 }
115}