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, RetrieveKeyRequest, RetrieveKeyRequestFallible,
13 RetrieveKeySpec,
14};
15
16impl Dummy<&'static str> for CreateKeysetRequest<'_> {
18 fn dummy_with_rng<R: Rng + ?Sized>(name: &&'static str, _: &mut R) -> Self {
19 Self {
20 name: Cow::Borrowed(*name),
21 description: Cow::Owned("description".to_string()),
22 }
23 }
24}
25
26impl Dummy<Faker> for Keyset {
27 fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, _: &mut R) -> Self {
28 Self {
29 id: Uuid::new_v4(),
30 name: Word().fake(),
31 description: Words(3..10).fake::<Vec<String>>().join(" "),
32 is_disabled: false,
33 }
34 }
35}
36
37impl Dummy<Faker> for CreateKeysetRequest<'_> {
39 fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, _: &mut R) -> Self {
40 let words: Vec<String> = Words(3..10).fake();
41
42 Self {
43 name: Cow::Owned(Word().fake()),
44 description: Cow::Owned(words.join(" ")),
45 }
46 }
47}
48
49impl Dummy<Keyset> for CreateClientRequest<'_> {
52 fn dummy_with_rng<R: Rng + ?Sized>(Keyset { id, .. }: &Keyset, _: &mut R) -> Self {
53 Self {
54 keyset_id: IdentifiedBy::Uuid(*id),
55 name: Cow::Owned(Word().fake()),
56 description: Cow::Owned(Word().fake()),
57 }
58 }
59}
60
61impl Dummy<(&Keyset, Uuid)> for GrantKeysetRequest {
63 fn dummy_with_rng<R: Rng + ?Sized>((keyset, client_id): &(&Keyset, Uuid), _: &mut R) -> Self {
64 Self {
65 keyset_id: IdentifiedBy::Uuid(keyset.id),
66 client_id: *client_id,
67 }
68 }
69}
70
71impl Dummy<(&Keyset, Uuid)> for GenerateKeyRequest<'_> {
72 fn dummy_with_rng<R: Rng + ?Sized>((keyset, client_id): &(&Keyset, Uuid), _: &mut R) -> Self {
73 Self {
74 keyset_id: Some(IdentifiedBy::Uuid(keyset.id)),
75 client_id: *client_id,
76 keys: Cow::Owned(fake::vec![GenerateKeySpec; 4]),
77 unverified_context: Default::default(),
78 }
79 }
80}
81
82impl Dummy<Faker> for GenerateKeySpec<'_> {
83 fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, rng: &mut R) -> Self {
84 let mut buf: [u8; 16] = Default::default();
85 buf.try_fill(rng).unwrap();
86
87 Self {
88 iv: buf.into(),
89 descriptor: Cow::Owned(Word().fake()),
90 context: vec![],
91 }
92 }
93}
94
95impl Dummy<(&Keyset, Uuid)> for RetrieveKeyRequest<'_> {
96 fn dummy_with_rng<R: Rng + ?Sized>((keyset, client_id): &(&Keyset, Uuid), _: &mut R) -> Self {
97 Self {
98 keyset_id: Some(IdentifiedBy::Uuid(keyset.id)),
99 client_id: *client_id,
100 keys: Cow::Owned(fake::vec![RetrieveKeySpec; 4]),
101 unverified_context: Default::default(),
102 }
103 }
104}
105
106impl Dummy<(&Keyset, Uuid)> for RetrieveKeyRequestFallible<'_> {
107 fn dummy_with_rng<R: Rng + ?Sized>((keyset, client_id): &(&Keyset, Uuid), _: &mut R) -> Self {
108 Self {
109 keyset_id: Some(IdentifiedBy::Uuid(keyset.id)),
110 client_id: *client_id,
111 keys: Cow::Owned(fake::vec![RetrieveKeySpec; 4]),
112 unverified_context: Default::default(),
113 }
114 }
115}
116
117impl Dummy<Faker> for RetrieveKeySpec<'_> {
118 fn dummy_with_rng<R: Rng + ?Sized>(_: &Faker, rng: &mut R) -> Self {
119 let mut buf: [u8; 16] = Default::default();
120 buf.try_fill(rng).unwrap();
121
122 Self {
123 iv: buf.into(),
124 descriptor: Cow::Owned(Word().fake()),
125 tag: Cow::Owned([0u8; 16].map(|_| rng.gen()).to_vec()),
126 context: vec![],
127 tag_version: 1,
128 }
129 }
130}