@@ -48,30 +48,6 @@ impl WhitelistManager {
4848 Ok ( ( ) )
4949 }
5050
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-
7551 /// It loads the whitelist from the database.
7652 ///
7753 /// # Errors
@@ -95,17 +71,41 @@ mod tests {
9571
9672 use std:: sync:: Arc ;
9773
98- use torrust_tracker_test_helpers :: configuration ;
74+ use torrust_tracker_configuration :: Core ;
9975
76+ use crate :: core_tests:: ephemeral_configuration_for_listed_tracker;
77+ use crate :: databases:: setup:: initialize_database;
78+ use crate :: databases:: Database ;
10079 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 ;
10282
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+ }
10588
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+ }
10793
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+ )
109109 }
110110
111111 mod configured_as_whitelisted {
@@ -116,26 +116,28 @@ mod tests {
116116
117117 #[ tokio:: test]
118118 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 ( ) ;
120120
121121 let info_hash = sample_info_hash ( ) ;
122122
123123 whitelist_manager. add_torrent_to_whitelist ( & info_hash) . await . unwrap ( ) ;
124124
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) ) ;
126127 }
127128
128129 #[ tokio:: test]
129130 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 ( ) ;
131132
132133 let info_hash = sample_info_hash ( ) ;
133134
134135 whitelist_manager. add_torrent_to_whitelist ( & info_hash) . await . unwrap ( ) ;
135136
136137 whitelist_manager. remove_torrent_from_whitelist ( & info_hash) . await . unwrap ( ) ;
137138
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) ) ;
139141 }
140142
141143 mod persistence {
@@ -144,19 +146,15 @@ mod tests {
144146
145147 #[ tokio:: test]
146148 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 ( ) ;
148150
149151 let info_hash = sample_info_hash ( ) ;
150152
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 ( ) ;
156154
157155 whitelist_manager. load_whitelist_from_database ( ) . await . unwrap ( ) ;
158156
159- assert ! ( whitelist_manager . is_info_hash_whitelisted ( & info_hash) . await ) ;
157+ assert ! ( services . in_memory_whitelist . contains ( & info_hash) . await ) ;
160158 }
161159 }
162160 }
0 commit comments