zerokms_protocol/
testing.rs1use fake::{
3 faker::lorem::en::{Word, Words},
4 Dummy, Fake, Faker,
5};
6use rand::{Fill, Rng};
7use std::borrow::Cow;
8use uuid::Uuid;
9
10use crate::{
11 CreateClientRequest, CreateKeysetRequest, GenerateKeyRequest, GenerateKeySpec,
12 GrantKeysetRequest, IdentifiedBy, Keyset,
13};
14
15impl Dummy<&'static str> for CreateKeysetRequest<'_> {
17 fn dummy_with_rng<R: Rng + ?Sized>(name: &&'static str, _: &mut R) -> Self {
18 Self {
19 name: Cow::Borrowed(*name),
20 description: Cow::Owned("description".to_string()),
21 }
22 }
23}
24
25impl Dummy<Faker> for Keyset {
26 fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, _: &mut R) -> Self {
27 Self {
28 id: Uuid::new_v4(),
29 name: Word().fake(),
30 description: Words(3..10).fake::<Vec<String>>().join(" "),
31 is_disabled: false,
32 }
33 }
34}
35
36impl Dummy<Faker> for CreateKeysetRequest<'_> {
38 fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, _: &mut R) -> Self {
39 let words: Vec<String> = Words(3..10).fake();
40
41 Self {
42 name: Cow::Owned(Word().fake()),
43 description: Cow::Owned(words.join(" ")),
44 }
45 }
46}
47
48impl Dummy<Keyset> for CreateClientRequest<'_> {
51 fn dummy_with_rng<R: Rng + ?Sized>(Keyset { id, .. }: &Keyset, _: &mut R) -> Self {
52 Self {
53 keyset_id: IdentifiedBy::Uuid(*id),
54 name: Cow::Owned(Word().fake()),
55 description: Cow::Owned(Word().fake()),
56 }
57 }
58}
59
60impl Dummy<(&Keyset, Uuid)> for GrantKeysetRequest {
62 fn dummy_with_rng<R: Rng + ?Sized>((keyset, client_id): &(&Keyset, Uuid), _: &mut R) -> Self {
63 Self {
64 keyset_id: IdentifiedBy::Uuid(keyset.id),
65 client_id: *client_id,
66 }
67 }
68}
69
70impl Dummy<(&Keyset, Uuid)> for GenerateKeyRequest<'_> {
71 fn dummy_with_rng<R: Rng + ?Sized>((keyset, client_id): &(&Keyset, Uuid), _: &mut R) -> Self {
72 Self {
73 keyset_id: Some(IdentifiedBy::Uuid(keyset.id)),
74 client_id: *client_id,
75 keys: Cow::Owned(fake::vec![GenerateKeySpec; 4]),
76 unverified_context: Default::default(),
77 }
78 }
79}
80
81impl Dummy<Faker> for GenerateKeySpec<'_> {
82 fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, rng: &mut R) -> Self {
83 let mut buf: [u8; 16] = Default::default();
84 buf.try_fill(rng).unwrap();
85
86 Self {
87 iv: buf.into(),
88 descriptor: Cow::Owned(Word().fake()),
89 context: vec![],
90 }
91 }
92}