mirror of
https://github.com/serai-dex/serai.git
synced 2024-12-22 19:49:22 +00:00
update tests with new types
This commit is contained in:
parent
797ee61e7c
commit
0bc2343e40
2 changed files with 29 additions and 41 deletions
|
@ -155,9 +155,9 @@ pub fn genesis_participants() -> Vec<Pair> {
|
||||||
pub fn key_shares() -> HashMap<NetworkId, Amount> {
|
pub fn key_shares() -> HashMap<NetworkId, Amount> {
|
||||||
HashMap::from([
|
HashMap::from([
|
||||||
(NetworkId::Serai, Amount(50_000 * 10_u64.pow(8))),
|
(NetworkId::Serai, Amount(50_000 * 10_u64.pow(8))),
|
||||||
(NetworkId::Bitcoin, Amount(1_000_000 * 10_u64.pow(8))),
|
(NetworkId::External(ExternalNetworkId::Bitcoin), Amount(1_000_000 * 10_u64.pow(8))),
|
||||||
(NetworkId::Monero, Amount(100_000 * 10_u64.pow(8))),
|
(NetworkId::External(ExternalNetworkId::Ethereum), Amount(1_000_000 * 10_u64.pow(8))),
|
||||||
(NetworkId::Ethereum, Amount(1_000_000 * 10_u64.pow(8))),
|
(NetworkId::External(ExternalNetworkId::Monero), Amount(100_000 * 10_u64.pow(8))),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ fn get_session_at_which_changes_activate(network: NetworkId) -> u32 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_keys_for_session(network: NetworkId) {
|
fn set_keys_for_session(network: ExternalNetworkId) {
|
||||||
ValidatorSets::set_keys(
|
ValidatorSets::set_keys(
|
||||||
RawOrigin::None.into(),
|
RawOrigin::None.into(),
|
||||||
network,
|
network,
|
||||||
|
@ -70,7 +70,7 @@ fn set_keys_for_session(network: NetworkId) {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_keys_signature(set: &ValidatorSet, key_pair: &KeyPair, pairs: &[Pair]) -> Signature {
|
fn set_keys_signature(set: &ExternalValidatorSet, key_pair: &KeyPair, pairs: &[Pair]) -> Signature {
|
||||||
let mut pub_keys = vec![];
|
let mut pub_keys = vec![];
|
||||||
for pair in pairs {
|
for pair in pairs {
|
||||||
let public_key =
|
let public_key =
|
||||||
|
@ -87,7 +87,8 @@ fn set_keys_signature(set: &ValidatorSet, key_pair: &KeyPair, pairs: &[Pair]) ->
|
||||||
assert_eq!(Ristretto::generator() * secret_key, pub_keys[i]);
|
assert_eq!(Ristretto::generator() * secret_key, pub_keys[i]);
|
||||||
|
|
||||||
threshold_keys.push(
|
threshold_keys.push(
|
||||||
musig::<Ristretto>(&musig_context(*set), &Zeroizing::new(secret_key), &pub_keys).unwrap(),
|
musig::<Ristretto>(&musig_context((*set).into()), &Zeroizing::new(secret_key), &pub_keys)
|
||||||
|
.unwrap(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +126,9 @@ fn rotate_session_until(network: NetworkId, session: u32) {
|
||||||
while current < session {
|
while current < session {
|
||||||
Babe::on_initialize(System::block_number() + 1);
|
Babe::on_initialize(System::block_number() + 1);
|
||||||
ValidatorSets::rotate_session();
|
ValidatorSets::rotate_session();
|
||||||
set_keys_for_session(network);
|
if let NetworkId::External(n) = network {
|
||||||
|
set_keys_for_session(n);
|
||||||
|
}
|
||||||
ValidatorSets::retire_set(ValidatorSet { session: Session(current), network });
|
ValidatorSets::retire_set(ValidatorSet { session: Session(current), network });
|
||||||
current += 1;
|
current += 1;
|
||||||
}
|
}
|
||||||
|
@ -141,9 +144,9 @@ fn rotate_session() {
|
||||||
|
|
||||||
let mut participants = HashMap::from([
|
let mut participants = HashMap::from([
|
||||||
(NetworkId::Serai, genesis_participants.clone()),
|
(NetworkId::Serai, genesis_participants.clone()),
|
||||||
(NetworkId::Bitcoin, genesis_participants.clone()),
|
(NetworkId::External(ExternalNetworkId::Bitcoin), genesis_participants.clone()),
|
||||||
(NetworkId::Monero, genesis_participants.clone()),
|
(NetworkId::External(ExternalNetworkId::Ethereum), genesis_participants.clone()),
|
||||||
(NetworkId::Ethereum, genesis_participants),
|
(NetworkId::External(ExternalNetworkId::Monero), genesis_participants),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// rotate session
|
// rotate session
|
||||||
|
@ -152,7 +155,9 @@ fn rotate_session() {
|
||||||
|
|
||||||
// verify for session 0
|
// verify for session 0
|
||||||
participants.sort();
|
participants.sort();
|
||||||
set_keys_for_session(network);
|
if let NetworkId::External(n) = network {
|
||||||
|
set_keys_for_session(n);
|
||||||
|
}
|
||||||
verify_session_and_active_validators(network, participants, 0);
|
verify_session_and_active_validators(network, participants, 0);
|
||||||
|
|
||||||
// add 1 participant
|
// add 1 participant
|
||||||
|
@ -215,10 +220,10 @@ fn allocate() {
|
||||||
genesis_participants().into_iter().map(|p| p.public()).collect();
|
genesis_participants().into_iter().map(|p| p.public()).collect();
|
||||||
let key_shares = key_shares();
|
let key_shares = key_shares();
|
||||||
let participant = insecure_pair_from_name("random1").public();
|
let participant = insecure_pair_from_name("random1").public();
|
||||||
let network = NetworkId::Ethereum;
|
let network = NetworkId::External(ExternalNetworkId::Ethereum);
|
||||||
|
|
||||||
// check genesis TAS
|
// check genesis TAS
|
||||||
set_keys_for_session(network);
|
set_keys_for_session(network.try_into().unwrap());
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
ValidatorSets::total_allocated_stake(network).unwrap().0,
|
ValidatorSets::total_allocated_stake(network).unwrap().0,
|
||||||
key_shares[&network].0 * u64::try_from(genesis_participants.len()).unwrap()
|
key_shares[&network].0 * u64::try_from(genesis_participants.len()).unwrap()
|
||||||
|
@ -278,10 +283,10 @@ fn deallocate_pending() {
|
||||||
genesis_participants().into_iter().map(|p| p.public()).collect();
|
genesis_participants().into_iter().map(|p| p.public()).collect();
|
||||||
let key_shares = key_shares();
|
let key_shares = key_shares();
|
||||||
let participant = insecure_pair_from_name("random1").public();
|
let participant = insecure_pair_from_name("random1").public();
|
||||||
let network = NetworkId::Bitcoin;
|
let network = NetworkId::External(ExternalNetworkId::Bitcoin);
|
||||||
|
|
||||||
// check genesis TAS
|
// check genesis TAS
|
||||||
set_keys_for_session(network);
|
set_keys_for_session(network.try_into().unwrap());
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
ValidatorSets::total_allocated_stake(network).unwrap().0,
|
ValidatorSets::total_allocated_stake(network).unwrap().0,
|
||||||
key_shares[&network].0 * u64::try_from(genesis_participants.len()).unwrap()
|
key_shares[&network].0 * u64::try_from(genesis_participants.len()).unwrap()
|
||||||
|
@ -347,10 +352,10 @@ fn deallocate_immediately() {
|
||||||
genesis_participants().into_iter().map(|p| p.public()).collect();
|
genesis_participants().into_iter().map(|p| p.public()).collect();
|
||||||
let key_shares = key_shares();
|
let key_shares = key_shares();
|
||||||
let participant = insecure_pair_from_name("random1").public();
|
let participant = insecure_pair_from_name("random1").public();
|
||||||
let network = NetworkId::Monero;
|
let network = NetworkId::External(ExternalNetworkId::Monero);
|
||||||
|
|
||||||
// check genesis TAS
|
// check genesis TAS
|
||||||
set_keys_for_session(network);
|
set_keys_for_session(network.try_into().unwrap());
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
ValidatorSets::total_allocated_stake(network).unwrap().0,
|
ValidatorSets::total_allocated_stake(network).unwrap().0,
|
||||||
key_shares[&network].0 * u64::try_from(genesis_participants.len()).unwrap()
|
key_shares[&network].0 * u64::try_from(genesis_participants.len()).unwrap()
|
||||||
|
@ -416,9 +421,9 @@ fn deallocate_immediately() {
|
||||||
|
|
||||||
// make a pool so that we have security oracle value for the coin
|
// make a pool so that we have security oracle value for the coin
|
||||||
let liq_acc = insecure_pair_from_name("liq-acc").public();
|
let liq_acc = insecure_pair_from_name("liq-acc").public();
|
||||||
let coin = Coin::Monero;
|
let coin = ExternalCoin::Monero;
|
||||||
let balance = Balance { coin, amount: Amount(2 * key_shares[&network].0) };
|
let balance = ExternalBalance { coin, amount: Amount(2 * key_shares[&network].0) };
|
||||||
Coins::mint(liq_acc, balance).unwrap();
|
Coins::mint(liq_acc, balance.into()).unwrap();
|
||||||
Coins::mint(liq_acc, Balance { coin: Coin::Serai, amount: balance.amount }).unwrap();
|
Coins::mint(liq_acc, Balance { coin: Coin::Serai, amount: balance.amount }).unwrap();
|
||||||
Dex::add_liquidity(
|
Dex::add_liquidity(
|
||||||
RawOrigin::Signed(liq_acc).into(),
|
RawOrigin::Signed(liq_acc).into(),
|
||||||
|
@ -449,27 +454,10 @@ fn deallocate_immediately() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn set_keys_no_serai_network() {
|
|
||||||
new_test_ext().execute_with(|| {
|
|
||||||
let call = validator_sets::Call::<Test>::set_keys {
|
|
||||||
network: NetworkId::Serai,
|
|
||||||
removed_participants: Vec::new().try_into().unwrap(),
|
|
||||||
key_pair: KeyPair(insecure_pair_from_name("name").public(), Vec::new().try_into().unwrap()),
|
|
||||||
signature: Signature([0u8; 64]),
|
|
||||||
};
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
ValidatorSets::validate_unsigned(TransactionSource::External, &call),
|
|
||||||
InvalidTransaction::Custom(0).into()
|
|
||||||
);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn set_keys_keys_exist() {
|
fn set_keys_keys_exist() {
|
||||||
new_test_ext().execute_with(|| {
|
new_test_ext().execute_with(|| {
|
||||||
let network = NetworkId::Monero;
|
let network = ExternalNetworkId::Monero;
|
||||||
|
|
||||||
// set the keys first
|
// set the keys first
|
||||||
ValidatorSets::set_keys(
|
ValidatorSets::set_keys(
|
||||||
|
@ -498,11 +486,11 @@ fn set_keys_keys_exist() {
|
||||||
#[test]
|
#[test]
|
||||||
fn set_keys_invalid_signature() {
|
fn set_keys_invalid_signature() {
|
||||||
new_test_ext().execute_with(|| {
|
new_test_ext().execute_with(|| {
|
||||||
let network = NetworkId::Ethereum;
|
let network = ExternalNetworkId::Ethereum;
|
||||||
let mut participants = get_ordered_keys(network, &genesis_participants());
|
let mut participants = get_ordered_keys(network.into(), &genesis_participants());
|
||||||
|
|
||||||
// we can't have invalid set
|
// we can't have invalid set
|
||||||
let mut set = ValidatorSet { network, session: Session(1) };
|
let mut set = ExternalValidatorSet { network, session: Session(1) };
|
||||||
let key_pair =
|
let key_pair =
|
||||||
KeyPair(insecure_pair_from_name("name").public(), Vec::new().try_into().unwrap());
|
KeyPair(insecure_pair_from_name("name").public(), Vec::new().try_into().unwrap());
|
||||||
let signature = set_keys_signature(&set, &key_pair, &participants);
|
let signature = set_keys_signature(&set, &key_pair, &participants);
|
||||||
|
|
Loading…
Reference in a new issue