@@ -48,30 +48,6 @@ impl WhitelistManager {
48
48
Ok ( ( ) )
49
49
}
50
50
51
- /// It removes a torrent from the whitelist in the database.
52
- ///
53
- /// # Errors
54
- ///
55
- /// Will return a `database::Error` if unable to remove the `info_hash` from the whitelist database.
56
- pub fn remove_torrent_from_database_whitelist ( & self , info_hash : & InfoHash ) -> Result < ( ) , databases:: error:: Error > {
57
- self . database_whitelist . remove ( info_hash)
58
- }
59
-
60
- /// It adds a torrent from the whitelist in memory.
61
- pub async fn add_torrent_to_memory_whitelist ( & self , info_hash : & InfoHash ) -> bool {
62
- self . in_memory_whitelist . add ( info_hash) . await
63
- }
64
-
65
- /// It removes a torrent from the whitelist in memory.
66
- pub async fn remove_torrent_from_memory_whitelist ( & self , info_hash : & InfoHash ) -> bool {
67
- self . in_memory_whitelist . remove ( info_hash) . await
68
- }
69
-
70
- /// It checks if a torrent is whitelisted.
71
- pub async fn is_info_hash_whitelisted ( & self , info_hash : & InfoHash ) -> bool {
72
- self . in_memory_whitelist . contains ( info_hash) . await
73
- }
74
-
75
51
/// It loads the whitelist from the database.
76
52
///
77
53
/// # Errors
@@ -95,17 +71,41 @@ mod tests {
95
71
96
72
use std:: sync:: Arc ;
97
73
98
- use torrust_tracker_test_helpers :: configuration ;
74
+ use torrust_tracker_configuration :: Core ;
99
75
76
+ use crate :: core_tests:: ephemeral_configuration_for_listed_tracker;
77
+ use crate :: databases:: setup:: initialize_database;
78
+ use crate :: databases:: Database ;
100
79
use crate :: whitelist:: manager:: WhitelistManager ;
101
- use crate :: whitelist:: whitelist_tests:: initialize_whitelist_services;
80
+ use crate :: whitelist:: repository:: in_memory:: InMemoryWhitelist ;
81
+ use crate :: whitelist:: repository:: persisted:: DatabaseWhitelist ;
102
82
103
- fn initialize_whitelist_manager_for_whitelisted_tracker ( ) -> Arc < WhitelistManager > {
104
- let config = configuration:: ephemeral_listed ( ) ;
83
+ struct WhitelistManagerDeps {
84
+ pub _database : Arc < Box < dyn Database > > ,
85
+ pub database_whitelist : Arc < DatabaseWhitelist > ,
86
+ pub in_memory_whitelist : Arc < InMemoryWhitelist > ,
87
+ }
105
88
106
- let ( _whitelist_authorization, whitelist_manager) = initialize_whitelist_services ( & config) ;
89
+ fn initialize_whitelist_manager_for_whitelisted_tracker ( ) -> ( Arc < WhitelistManager > , Arc < WhitelistManagerDeps > ) {
90
+ let config = ephemeral_configuration_for_listed_tracker ( ) ;
91
+ initialize_whitelist_manager_and_deps ( & config)
92
+ }
107
93
108
- whitelist_manager
94
+ fn initialize_whitelist_manager_and_deps ( config : & Core ) -> ( Arc < WhitelistManager > , Arc < WhitelistManagerDeps > ) {
95
+ let database = initialize_database ( config) ;
96
+ let database_whitelist = Arc :: new ( DatabaseWhitelist :: new ( database. clone ( ) ) ) ;
97
+ let in_memory_whitelist = Arc :: new ( InMemoryWhitelist :: default ( ) ) ;
98
+
99
+ let whitelist_manager = Arc :: new ( WhitelistManager :: new ( database_whitelist. clone ( ) , in_memory_whitelist. clone ( ) ) ) ;
100
+
101
+ (
102
+ whitelist_manager,
103
+ Arc :: new ( WhitelistManagerDeps {
104
+ _database : database,
105
+ database_whitelist,
106
+ in_memory_whitelist,
107
+ } ) ,
108
+ )
109
109
}
110
110
111
111
mod configured_as_whitelisted {
@@ -116,26 +116,28 @@ mod tests {
116
116
117
117
#[ tokio:: test]
118
118
async fn it_should_add_a_torrent_to_the_whitelist ( ) {
119
- let whitelist_manager = initialize_whitelist_manager_for_whitelisted_tracker ( ) ;
119
+ let ( whitelist_manager, services ) = initialize_whitelist_manager_for_whitelisted_tracker ( ) ;
120
120
121
121
let info_hash = sample_info_hash ( ) ;
122
122
123
123
whitelist_manager. add_torrent_to_whitelist ( & info_hash) . await . unwrap ( ) ;
124
124
125
- assert ! ( whitelist_manager. is_info_hash_whitelisted( & info_hash) . await ) ;
125
+ assert ! ( services. in_memory_whitelist. contains( & info_hash) . await ) ;
126
+ assert ! ( services. database_whitelist. load_from_database( ) . unwrap( ) . contains( & info_hash) ) ;
126
127
}
127
128
128
129
#[ tokio:: test]
129
130
async fn it_should_remove_a_torrent_from_the_whitelist ( ) {
130
- let whitelist_manager = initialize_whitelist_manager_for_whitelisted_tracker ( ) ;
131
+ let ( whitelist_manager, services ) = initialize_whitelist_manager_for_whitelisted_tracker ( ) ;
131
132
132
133
let info_hash = sample_info_hash ( ) ;
133
134
134
135
whitelist_manager. add_torrent_to_whitelist ( & info_hash) . await . unwrap ( ) ;
135
136
136
137
whitelist_manager. remove_torrent_from_whitelist ( & info_hash) . await . unwrap ( ) ;
137
138
138
- assert ! ( !whitelist_manager. is_info_hash_whitelisted( & info_hash) . await ) ;
139
+ assert ! ( !services. in_memory_whitelist. contains( & info_hash) . await ) ;
140
+ assert ! ( !services. database_whitelist. load_from_database( ) . unwrap( ) . contains( & info_hash) ) ;
139
141
}
140
142
141
143
mod persistence {
@@ -144,19 +146,15 @@ mod tests {
144
146
145
147
#[ tokio:: test]
146
148
async fn it_should_load_the_whitelist_from_the_database ( ) {
147
- let whitelist_manager = initialize_whitelist_manager_for_whitelisted_tracker ( ) ;
149
+ let ( whitelist_manager, services ) = initialize_whitelist_manager_for_whitelisted_tracker ( ) ;
148
150
149
151
let info_hash = sample_info_hash ( ) ;
150
152
151
- whitelist_manager. add_torrent_to_whitelist ( & info_hash) . await . unwrap ( ) ;
152
-
153
- whitelist_manager. remove_torrent_from_memory_whitelist ( & info_hash) . await ;
154
-
155
- assert ! ( !whitelist_manager. is_info_hash_whitelisted( & info_hash) . await ) ;
153
+ services. database_whitelist . add ( & info_hash) . unwrap ( ) ;
156
154
157
155
whitelist_manager. load_whitelist_from_database ( ) . await . unwrap ( ) ;
158
156
159
- assert ! ( whitelist_manager . is_info_hash_whitelisted ( & info_hash) . await ) ;
157
+ assert ! ( services . in_memory_whitelist . contains ( & info_hash) . await ) ;
160
158
}
161
159
}
162
160
}
0 commit comments