whisky_common/tx_tester/
extra_signatories.rs1use super::TxTester;
2
3impl TxTester {
4 pub fn key_signed(&mut self, key_hash: &str) -> &mut Self {
8 let is_key_signed = self.key_signed_logic(key_hash);
9 if !is_key_signed {
10 self.add_trace(
11 "key_signed",
12 &format!("tx does not have key {} signed", key_hash),
13 )
14 };
15 self
16 }
17
18 pub fn one_of_keys_signed(&mut self, key_hashes: &[String]) -> &mut Self {
22 let is_one_of_keys_signed = key_hashes
23 .iter()
24 .any(|key_hash| self.key_signed_logic(key_hash));
25 if !is_one_of_keys_signed {
26 self.add_trace(
27 "one_of_keys_signed",
28 &format!(
29 "tx does not have any of the keys signed:
30 {}",
31 key_hashes.join(", ")
32 ),
33 );
34 }
35 self
36 }
37
38 pub fn all_keys_signed(&mut self, key_hashes: &[String]) -> &mut Self {
42 let mut missing_keys: Vec<String> = vec![];
43 let is_all_keys_signed = key_hashes.iter().all(|key_hash| {
44 let is_key_signed = self.key_signed_logic(key_hash);
45 if !is_key_signed {
46 missing_keys.push(key_hash.clone());
47 }
48 is_key_signed
49 });
50
51 if !is_all_keys_signed {
52 self.add_trace(
53 "all_keys_signed",
54 &format!(
55 "tx does not have all keys signed: {}",
56 missing_keys.join(", ")
57 ),
58 );
59 }
60 self
61 }
62
63 fn key_signed_logic(&mut self, key_hash: &str) -> bool {
64 self.tx_body
65 .required_signatures
66 .iter()
67 .any(|signatory| signatory == key_hash)
68 }
69}