Files
RustySecrets/tests/thss_recovery_errors.rs
2018-02-11 22:17:07 +01:00

154 lines
3.5 KiB
Rust

#![cfg(feature = "dss")]
extern crate rusty_secrets;
use rusty_secrets::dss::thss::{recover_secret, Share};
#[test]
#[should_panic(expected = "EmptyShares")]
fn test_recover_no_shares() {
let shares = vec![];
recover_secret(&shares).unwrap();
}
#[test]
#[should_panic(expected = "ShareParsingErrorEmptyShare")]
fn test_recover_2_parts_share() {
let share1 = Share {
id: 1,
threshold: 2,
shares_count: 2,
data: "CgmKQZHMO+5n5pU".to_string().into_bytes(),
metadata: None,
};
let share2 = Share {
id: 2,
threshold: 2,
shares_count: 2,
data: "".to_string().into_bytes(),
metadata: None,
};
let shares = vec![share1, share2];
recover_secret(&shares).unwrap();
}
#[test]
#[should_panic(expected = "ShareParsingInvalidShareId")]
fn test_recover_0_share_num() {
let share1 = Share {
id: 0,
threshold: 2,
shares_count: 2,
data: "1YAYwmOHqZ69jA".to_string().into_bytes(),
metadata: None,
};
let share2 = Share {
id: 1,
threshold: 2,
shares_count: 2,
data: "YJZQDGm22Y77Gw".to_string().into_bytes(),
metadata: None,
};
let shares = vec![share1, share2];
recover_secret(&shares).unwrap();
}
// ---
// TODO: will be implemented when serialization is done for thss shares
// ---
// #[test]
// #[should_panic(expected = "ShareParsingError")]
// fn test_recover_invalid_b64() {
// let share1 = Share {
// id: 1,
// threshold: 2,
// shares_count: 2,
// data: "1YAYwmOHqZ69jA".to_string().into_bytes(),
// metadata: None
// };
// let share2 = Share {
// id: 2,
// threshold: 2,
// shares_count: 2,
// data: "YJZQDG((((m22Y)))77Gw".to_string().into_bytes(),
// metadata: None
// };
//
// let shares = vec![share1, share2];
//
// recover_secret(&shares).unwrap();
// }
#[test]
#[should_panic(expected = "DuplicateShareId")]
fn test_recover_duplicate_shares_number() {
let share1 = Share {
id: 1,
threshold: 2,
shares_count: 2,
data: "1YAYwmOHqZ69jA".to_string().into_bytes(),
metadata: None,
};
let share2 = Share {
id: 1,
threshold: 2,
shares_count: 2,
data: "YJZQDGm22Y77Gw".to_string().into_bytes(),
metadata: None,
};
let shares = vec![share1, share2];
recover_secret(&shares).unwrap();
}
#[test]
#[should_panic(expected = "DuplicateShareData")]
fn test_recover_duplicate_shares_data() {
let share1 = Share {
id: 1,
threshold: 2,
shares_count: 2,
data: "1YAYwmOHqZ69jA".to_string().into_bytes(),
metadata: None,
};
let share2 = Share {
id: 2,
threshold: 2,
shares_count: 2,
data: "1YAYwmOHqZ69jA".to_string().into_bytes(),
metadata: None,
};
let shares = vec![share1, share2];
recover_secret(&shares).unwrap();
}
#[test]
#[should_panic(expected = "MissingShares")]
fn test_recover_too_few_shares() {
let share1 = Share {
id: 1,
threshold: 3,
shares_count: 3,
data: "1YAYwmOHqZ69jA".to_string().into_bytes(),
metadata: None,
};
let share2 = Share {
id: 2,
threshold: 3,
shares_count: 3,
data: "YJZQDGm22Y77Gw".to_string().into_bytes(),
metadata: None,
};
let shares = vec![share1, share2];
recover_secret(&shares).unwrap();
}