#![cfg(feature = "use-mock-crust")]
use rand::Rng;
use routing::{AppendedData, DataIdentifier, Filter, FullId, ImmutableData, PrivAppendableData,
PubAppendableData, StructuredData};
use rust_sodium::crypto::box_;
use std::collections::BTreeSet;
pub fn random_immutable_data<R: Rng>(size: usize, rng: &mut R) -> ImmutableData {
ImmutableData::new(rng.gen_iter().take(size).collect())
}
pub fn random_structured_data<R: Rng>(type_tag: u64,
full_id: &FullId,
rng: &mut R)
-> StructuredData {
StructuredData::new(type_tag,
rng.gen(),
0,
rng.gen_iter().take(10).collect(),
vec![full_id.public_id().signing_public_key().clone()],
vec![],
Some(full_id.signing_private_key()))
.expect("Cannot create structured data for test")
}
pub fn random_pub_appendable_data<R: Rng>(full_id: &FullId, rng: &mut R) -> PubAppendableData {
PubAppendableData::new(rng.gen(),
0,
vec![full_id.public_id().signing_public_key().clone()],
vec![],
BTreeSet::new(),
Filter::black_list(None),
Some(full_id.signing_private_key()))
.expect("Cannot create public appendable data for test")
}
pub fn pub_appendable_data_version_up<R: Rng>(full_id: &FullId,
old_ad: &PubAppendableData,
rng: &mut R)
-> PubAppendableData {
let mut new_ad = PubAppendableData::new(*old_ad.name(),
old_ad.get_version() + 1,
vec![full_id.public_id().signing_public_key().clone()],
vec![full_id.public_id().signing_public_key().clone()],
BTreeSet::new(),
Filter::black_list(None),
None)
.expect("Cannot create public appendable data for test");
for data in old_ad.get_data() {
new_ad.append(data.clone());
}
let pointer = DataIdentifier::Structured(rng.gen(), 12345);
let appended_data = unwrap_result!(AppendedData::new(pointer,
full_id.public_id()
.signing_public_key()
.clone(),
full_id.signing_private_key()));
new_ad.append(appended_data);
let _ = new_ad.add_signature(full_id.signing_private_key());
new_ad
}
pub fn random_priv_appendable_data<R: Rng>(full_id: &FullId,
encrypt_key: box_::PublicKey,
rng: &mut R)
-> PrivAppendableData {
PrivAppendableData::new(rng.gen(),
0,
vec![full_id.public_id().signing_public_key().clone()],
vec![],
BTreeSet::new(),
Filter::black_list(None),
encrypt_key,
Some(full_id.signing_private_key()))
.expect("Cannot create private appendable data for test")
}