@@ -117,7 +117,10 @@ mod tests {
117
117
118
118
// Whitelist (for listed trackers)
119
119
120
- // todo
120
+ handling_the_whitelist:: it_should_add_and_get_infohashes ( driver) ;
121
+ handling_the_whitelist:: it_should_remove_an_infohash_from_the_whitelist ( driver) ;
122
+ handling_the_whitelist:: it_should_fail_trying_to_add_the_same_infohash_twice ( driver) ;
123
+ handling_the_whitelist:: it_load_the_whitelist ( driver) ;
121
124
122
125
driver. drop_database_tables ( ) . unwrap ( ) ;
123
126
}
@@ -129,7 +132,7 @@ mod tests {
129
132
}
130
133
tokio:: time:: sleep ( Duration :: from_secs ( 2 ) ) . await ;
131
134
}
132
- Err ( "MySQL is not ready after retries." . into ( ) )
135
+ Err ( "Database is not ready after retries." . into ( ) )
133
136
}
134
137
135
138
mod handling_torrent_persistence {
@@ -162,22 +165,18 @@ mod tests {
162
165
use crate :: databases:: Database ;
163
166
164
167
pub fn it_should_save_and_load_permanent_authentication_keys ( driver : & Arc < Box < dyn Database > > ) {
165
- // Add a new permanent key
166
168
let peer_key = generate_permanent_key ( ) ;
167
169
driver. add_key_to_keys ( & peer_key) . unwrap ( ) ;
168
170
169
- // Get the key back
170
171
let stored_peer_key = driver. get_key_from_keys ( & peer_key. key ( ) ) . unwrap ( ) . unwrap ( ) ;
171
172
172
173
assert_eq ! ( stored_peer_key, peer_key) ;
173
174
}
174
175
175
176
pub fn it_should_save_and_load_expiring_authentication_keys ( driver : & Arc < Box < dyn Database > > ) {
176
- // Add a new expiring key
177
177
let peer_key = generate_key ( Some ( Duration :: from_secs ( 120 ) ) ) ;
178
178
driver. add_key_to_keys ( & peer_key) . unwrap ( ) ;
179
179
180
- // Get the key back
181
180
let stored_peer_key = driver. get_key_from_keys ( & peer_key. key ( ) ) . unwrap ( ) . unwrap ( ) ;
182
181
183
182
assert_eq ! ( stored_peer_key, peer_key) ;
@@ -186,26 +185,65 @@ mod tests {
186
185
187
186
pub fn it_should_remove_a_permanent_authentication_key ( driver : & Arc < Box < dyn Database > > ) {
188
187
let peer_key = generate_permanent_key ( ) ;
189
-
190
- // Add a new key
191
188
driver. add_key_to_keys ( & peer_key) . unwrap ( ) ;
192
189
193
- // Remove the key
194
190
driver. remove_key_from_keys ( & peer_key. key ( ) ) . unwrap ( ) ;
195
191
196
192
assert ! ( driver. get_key_from_keys( & peer_key. key( ) ) . unwrap( ) . is_none( ) ) ;
197
193
}
198
194
199
195
pub fn it_should_remove_an_expiring_authentication_key ( driver : & Arc < Box < dyn Database > > ) {
200
196
let peer_key = generate_key ( Some ( Duration :: from_secs ( 120 ) ) ) ;
201
-
202
- // Add a new key
203
197
driver. add_key_to_keys ( & peer_key) . unwrap ( ) ;
204
198
205
- // Remove the key
206
199
driver. remove_key_from_keys ( & peer_key. key ( ) ) . unwrap ( ) ;
207
200
208
201
assert ! ( driver. get_key_from_keys( & peer_key. key( ) ) . unwrap( ) . is_none( ) ) ;
209
202
}
210
203
}
204
+
205
+ mod handling_the_whitelist {
206
+
207
+ use std:: sync:: Arc ;
208
+
209
+ use crate :: core_tests:: random_info_hash;
210
+ use crate :: databases:: Database ;
211
+
212
+ pub fn it_should_add_and_get_infohashes ( driver : & Arc < Box < dyn Database > > ) {
213
+ let infohash = random_info_hash ( ) ;
214
+
215
+ driver. add_info_hash_to_whitelist ( infohash) . unwrap ( ) ;
216
+
217
+ let stored_infohash = driver. get_info_hash_from_whitelist ( infohash) . unwrap ( ) . unwrap ( ) ;
218
+
219
+ assert_eq ! ( stored_infohash, infohash) ;
220
+ }
221
+
222
+ pub fn it_should_remove_an_infohash_from_the_whitelist ( driver : & Arc < Box < dyn Database > > ) {
223
+ let infohash = random_info_hash ( ) ;
224
+ driver. add_info_hash_to_whitelist ( infohash) . unwrap ( ) ;
225
+
226
+ driver. remove_info_hash_from_whitelist ( infohash) . unwrap ( ) ;
227
+
228
+ assert ! ( driver. get_info_hash_from_whitelist( infohash) . unwrap( ) . is_none( ) ) ;
229
+ }
230
+
231
+ pub fn it_should_fail_trying_to_add_the_same_infohash_twice ( driver : & Arc < Box < dyn Database > > ) {
232
+ let infohash = random_info_hash ( ) ;
233
+
234
+ driver. add_info_hash_to_whitelist ( infohash) . unwrap ( ) ;
235
+ let result = driver. add_info_hash_to_whitelist ( infohash) ;
236
+
237
+ assert ! ( result. is_err( ) ) ;
238
+ }
239
+
240
+ pub fn it_load_the_whitelist ( driver : & Arc < Box < dyn Database > > ) {
241
+ let infohash = random_info_hash ( ) ;
242
+ driver. add_info_hash_to_whitelist ( infohash) . unwrap ( ) ;
243
+
244
+ let whitelist = driver. load_whitelist ( ) . unwrap ( ) ;
245
+
246
+ assert ! ( whitelist. contains( & infohash) ) ;
247
+ }
248
+ }
211
249
}
0 commit comments