Skip to content

Commit c3eac7f

Browse files
committed
Add a unit test to priority message
1 parent 645f253 commit c3eac7f

File tree

1 file changed

+38
-0
lines changed
  • core/src/consensus/sortition

1 file changed

+38
-0
lines changed

core/src/consensus/sortition/mod.rs

+38
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,41 @@ impl PriorityMessage {
4949
&& self.info.verify_vrf_hash(signer_public, &self.seed, Arc::clone(&sortition_scheme.vrf_inst))?)
5050
}
5151
}
52+
53+
#[cfg(test)]
54+
mod priority_message_tests {
55+
use ccrypto::sha256;
56+
use ckey::{KeyPair, Private};
57+
use parking_lot::RwLock;
58+
use vrf::openssl::{CipherSuite, ECVRF};
59+
60+
use super::*;
61+
#[test]
62+
fn check_priority_message_verification() {
63+
let priv_key: Private = sha256("secret_key").into();
64+
let pub_key = *KeyPair::from_private(priv_key).expect("Valid private key").public();
65+
66+
let wrong_priv_key: Private = sha256("wrong_secret_key2").into();
67+
let wrong_pub_key = *KeyPair::from_private(wrong_priv_key).expect("Valid private key").public();
68+
69+
let seed = sha256("seed");
70+
let ec_vrf = ECVRF::from_suite(CipherSuite::SECP256K1_SHA256_SVDW).unwrap();
71+
let ec_vrf = Arc::new(RwLock::new(ec_vrf));
72+
let sortition_scheme = VRFSortition {
73+
total_power: 100,
74+
expectation: 71.85,
75+
vrf_inst: ec_vrf,
76+
};
77+
let voting_power = 50;
78+
let priority_info =
79+
sortition_scheme.create_highest_priority_info(seed, priv_key, voting_power).unwrap().unwrap();
80+
81+
let priority_message = PriorityMessage {
82+
seed,
83+
info: priority_info,
84+
signer_index: 0,
85+
};
86+
assert!(priority_message.verify(&pub_key, voting_power, &sortition_scheme).unwrap());
87+
assert!(priority_message.verify(&wrong_pub_key, voting_power, &sortition_scheme).is_err());
88+
}
89+
}

0 commit comments

Comments
 (0)