zerokms_protocol/
testing.rsuse fake::{
faker::lorem::en::{Word, Words},
Dummy, Fake, Faker,
};
use rand::{Fill, Rng};
use std::borrow::Cow;
use uuid::Uuid;
use crate::{
CreateClientRequest, CreateDatasetRequest, Dataset, GenerateKeyRequest, GenerateKeySpec,
GrantDatasetRequest,
};
impl<'a> Dummy<&'static str> for CreateDatasetRequest<'a> {
fn dummy_with_rng<R: Rng + ?Sized>(name: &&'static str, _: &mut R) -> Self {
Self {
name: Cow::Borrowed(*name),
description: Cow::Owned("description".to_string()),
}
}
}
impl Dummy<Faker> for Dataset {
fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, _: &mut R) -> Self {
Self {
id: Uuid::new_v4(),
name: Word().fake(),
description: Words(3..10).fake::<Vec<String>>().join(" "),
}
}
}
impl<'a> Dummy<Faker> for CreateDatasetRequest<'a> {
fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, _: &mut R) -> Self {
let words: Vec<String> = Words(3..10).fake();
Self {
name: Cow::Owned(Word().fake()),
description: Cow::Owned(words.join(" ")),
}
}
}
impl Dummy<Dataset> for CreateClientRequest<'_> {
fn dummy_with_rng<R: Rng + ?Sized>(Dataset { id, .. }: &Dataset, _: &mut R) -> Self {
Self {
dataset_id: *id,
name: Cow::Owned(Word().fake()),
description: Cow::Owned(Word().fake()),
}
}
}
impl Dummy<(&Dataset, Uuid)> for GrantDatasetRequest {
fn dummy_with_rng<R: Rng + ?Sized>((dataset, client_id): &(&Dataset, Uuid), _: &mut R) -> Self {
Self {
dataset_id: dataset.id,
client_id: *client_id,
}
}
}
impl Dummy<(&Dataset, Uuid)> for GenerateKeyRequest<'_> {
fn dummy_with_rng<R: Rng + ?Sized>((dataset, client_id): &(&Dataset, Uuid), _: &mut R) -> Self {
Self {
dataset_id: Some(dataset.id),
client_id: *client_id,
keys: Cow::Owned(fake::vec![GenerateKeySpec; 4]),
}
}
}
impl Dummy<Faker> for GenerateKeySpec<'_> {
fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, rng: &mut R) -> Self {
let mut buf: [u8; 16] = Default::default();
buf.try_fill(rng).unwrap();
Self {
iv: buf,
descriptor: Cow::Owned(Word().fake()),
}
}
}