Skip to content

Commit dc4e44d

Browse files
committed
test: [#1231] add tests for InMemoryKeyRepository
1 parent 0c6d87c commit dc4e44d

2 files changed

Lines changed: 105 additions & 0 deletions

File tree

packages/tracker-core/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.coverage

packages/tracker-core/src/authentication/key/repository/in_memory.rs

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,107 @@ impl InMemoryKeyRepository {
3939
}
4040
}
4141
}
42+
43+
#[cfg(test)]
44+
mod tests {
45+
46+
mod the_in_memory_key_repository_should {
47+
use std::time::Duration;
48+
49+
use crate::authentication::{
50+
key::{repository::in_memory::InMemoryKeyRepository, Key},
51+
PeerKey,
52+
};
53+
54+
#[tokio::test]
55+
async fn insert_a_new_peer_key() {
56+
let repository = InMemoryKeyRepository::default();
57+
58+
let new_peer_key = PeerKey {
59+
key: Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap(),
60+
valid_until: Some(Duration::new(9999, 0)),
61+
};
62+
63+
repository.insert(&new_peer_key).await;
64+
65+
let peer_key = repository.get(&new_peer_key.key).await;
66+
67+
assert_eq!(peer_key, Some(new_peer_key));
68+
}
69+
70+
#[tokio::test]
71+
async fn remove_a_new_peer_key() {
72+
let repository = InMemoryKeyRepository::default();
73+
74+
let new_peer_key = PeerKey {
75+
key: Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap(),
76+
valid_until: Some(Duration::new(9999, 0)),
77+
};
78+
79+
repository.insert(&new_peer_key).await;
80+
81+
repository.remove(&new_peer_key.key).await;
82+
83+
let peer_key = repository.get(&new_peer_key.key).await;
84+
85+
assert_eq!(peer_key, None);
86+
}
87+
88+
#[tokio::test]
89+
async fn get_a_new_peer_key_by_its_internal_key() {
90+
let repository = InMemoryKeyRepository::default();
91+
92+
let expected_peer_key = PeerKey {
93+
key: Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap(),
94+
valid_until: Some(Duration::new(9999, 0)),
95+
};
96+
97+
repository.insert(&expected_peer_key).await;
98+
99+
let peer_key = repository.get(&expected_peer_key.key).await;
100+
101+
assert_eq!(peer_key, Some(expected_peer_key));
102+
}
103+
104+
#[tokio::test]
105+
async fn clear_all_peer_keys() {
106+
let repository = InMemoryKeyRepository::default();
107+
108+
let new_peer_key = PeerKey {
109+
key: Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap(),
110+
valid_until: Some(Duration::new(9999, 0)),
111+
};
112+
113+
repository.insert(&new_peer_key).await;
114+
115+
repository.clear().await;
116+
117+
let peer_key = repository.get(&new_peer_key.key).await;
118+
119+
assert_eq!(peer_key, None);
120+
}
121+
122+
#[tokio::test]
123+
async fn reset_the_peer_keys_with_a_new_list_of_keys() {
124+
let repository = InMemoryKeyRepository::default();
125+
126+
let old_peer_key = PeerKey {
127+
key: Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap(),
128+
valid_until: Some(Duration::new(9999, 0)),
129+
};
130+
131+
repository.insert(&old_peer_key).await;
132+
133+
let new_peer_key = PeerKey {
134+
key: Key::new("kqdVKHlKKWXzAideqI5gvjBP4jdbe5dW").unwrap(),
135+
valid_until: Some(Duration::new(9999, 0)),
136+
};
137+
138+
repository.reset_with(vec![new_peer_key.clone()]).await;
139+
140+
let peer_key = repository.get(&new_peer_key.key).await;
141+
142+
assert_eq!(peer_key, Some(new_peer_key));
143+
}
144+
}
145+
}

0 commit comments

Comments
 (0)