Skip to content

Commit df6ed93

Browse files
committed
refactor: [#1198] remove duplicate code in app init in tests
1 parent 82097b0 commit df6ed93

File tree

7 files changed

+39
-198
lines changed

7 files changed

+39
-198
lines changed

src/bootstrap/jobs/http_tracker.rs

+6-30
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,8 @@ mod tests {
108108

109109
use torrust_tracker_test_helpers::configuration::ephemeral_public;
110110

111-
use crate::bootstrap::app::initialize_global_services;
111+
use crate::bootstrap::app::{initialize_app_container, initialize_global_services};
112112
use crate::bootstrap::jobs::http_tracker::start_job;
113-
use crate::core::authentication::handler::KeysHandler;
114-
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
115-
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
116-
use crate::core::authentication::service;
117-
use crate::core::services::{initialize_database, initialize_tracker, statistics};
118-
use crate::core::whitelist;
119-
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
120113
use crate::servers::http::Version;
121114
use crate::servers::registar::Registar;
122115

@@ -126,35 +119,18 @@ mod tests {
126119
let http_tracker = cfg.http_trackers.clone().expect("missing HTTP tracker configuration");
127120
let config = &http_tracker[0];
128121

129-
let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
130-
let stats_event_sender = Arc::new(stats_event_sender);
131-
132122
initialize_global_services(&cfg);
133123

134-
let database = initialize_database(&cfg);
135-
let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
136-
let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new(
137-
&cfg.core,
138-
&in_memory_whitelist.clone(),
139-
));
140-
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
141-
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
142-
let authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
143-
let _keys_handler = Arc::new(KeysHandler::new(
144-
&db_key_repository.clone(),
145-
&in_memory_key_repository.clone(),
146-
));
147-
148-
let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization));
124+
let app_container = initialize_app_container(&cfg);
149125

150126
let version = Version::V1;
151127

152128
start_job(
153129
config,
154-
tracker,
155-
authentication_service,
156-
whitelist_authorization,
157-
stats_event_sender,
130+
app_container.tracker,
131+
app_container.authentication_service,
132+
app_container.whitelist_authorization,
133+
app_container.stats_event_sender,
158134
Registar::default().give_form(),
159135
version,
160136
)

src/bootstrap/jobs/tracker_apis.rs

+8-38
Original file line numberDiff line numberDiff line change
@@ -159,62 +159,32 @@ async fn start_v1(
159159
mod tests {
160160
use std::sync::Arc;
161161

162-
use tokio::sync::RwLock;
163162
use torrust_tracker_test_helpers::configuration::ephemeral_public;
164163

165-
use crate::bootstrap::app::initialize_global_services;
164+
use crate::bootstrap::app::{initialize_app_container, initialize_global_services};
166165
use crate::bootstrap::jobs::tracker_apis::start_job;
167-
use crate::core::authentication::handler::KeysHandler;
168-
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
169-
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
170-
use crate::core::authentication::service;
171-
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
172-
use crate::core::whitelist;
173-
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
174166
use crate::servers::apis::Version;
175167
use crate::servers::registar::Registar;
176-
use crate::servers::udp::server::banning::BanService;
177-
use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP;
178168

179169
#[tokio::test]
180170
async fn it_should_start_http_tracker() {
181171
let cfg = Arc::new(ephemeral_public());
182172
let config = &cfg.http_api.clone().unwrap();
183173

184-
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
185-
let (stats_event_sender, stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
186-
let stats_event_sender = Arc::new(stats_event_sender);
187-
let stats_repository = Arc::new(stats_repository);
188-
189174
initialize_global_services(&cfg);
190175

191-
let database = initialize_database(&cfg);
192-
let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
193-
let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new(
194-
&cfg.core,
195-
&in_memory_whitelist.clone(),
196-
));
197-
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
198-
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
199-
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
200-
let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
201-
let keys_handler = Arc::new(KeysHandler::new(
202-
&db_key_repository.clone(),
203-
&in_memory_key_repository.clone(),
204-
));
205-
206-
let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization));
176+
let app_container = initialize_app_container(&cfg);
207177

208178
let version = Version::V1;
209179

210180
start_job(
211181
config,
212-
tracker,
213-
keys_handler,
214-
whitelist_manager,
215-
ban_service,
216-
stats_event_sender,
217-
stats_repository,
182+
app_container.tracker,
183+
app_container.keys_handler,
184+
app_container.whitelist_manager,
185+
app_container.ban_service,
186+
app_container.stats_event_sender,
187+
app_container.stats_repository,
218188
Registar::default().give_form(),
219189
version,
220190
)

src/core/authentication/handler.rs

-1
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,6 @@ mod tests {
267267

268268
fn instantiate_keys_handler_with_configuration(config: &Configuration) -> KeysHandler {
269269
let database = initialize_database(config);
270-
271270
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
272271
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
273272

src/core/authentication/mod.rs

-2
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,8 @@ mod tests {
5050
config: &Configuration,
5151
) -> (Arc<KeysHandler>, Arc<AuthenticationService>) {
5252
let database = initialize_database(config);
53-
5453
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
5554
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
56-
5755
let authentication_service = Arc::new(service::AuthenticationService::new(&config.core, &in_memory_key_repository));
5856
let keys_handler = Arc::new(KeysHandler::new(
5957
&db_key_repository.clone(),

src/servers/apis/server.rs

+8-38
Original file line numberDiff line numberDiff line change
@@ -343,51 +343,21 @@ impl Launcher {
343343
mod tests {
344344
use std::sync::Arc;
345345

346-
use tokio::sync::RwLock;
347346
use torrust_tracker_test_helpers::configuration::ephemeral_public;
348347

349-
use crate::bootstrap::app::initialize_global_services;
348+
use crate::bootstrap::app::{initialize_app_container, initialize_global_services};
350349
use crate::bootstrap::jobs::make_rust_tls;
351-
use crate::core::authentication::handler::KeysHandler;
352-
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
353-
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
354-
use crate::core::authentication::service;
355-
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
356-
use crate::core::whitelist;
357-
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
358350
use crate::servers::apis::server::{ApiServer, Launcher};
359351
use crate::servers::registar::Registar;
360-
use crate::servers::udp::server::banning::BanService;
361-
use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP;
362352

363353
#[tokio::test]
364354
async fn it_should_be_able_to_start_and_stop() {
365355
let cfg = Arc::new(ephemeral_public());
366356
let config = &cfg.http_api.clone().unwrap();
367357

368-
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
369-
let (stats_event_sender, stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
370-
let stats_event_sender = Arc::new(stats_event_sender);
371-
let stats_repository = Arc::new(stats_repository);
372-
373358
initialize_global_services(&cfg);
374359

375-
let database = initialize_database(&cfg);
376-
let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
377-
let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new(
378-
&cfg.core,
379-
&in_memory_whitelist.clone(),
380-
));
381-
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
382-
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
383-
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
384-
let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
385-
let keys_handler = Arc::new(KeysHandler::new(
386-
&db_key_repository.clone(),
387-
&in_memory_key_repository.clone(),
388-
));
389-
390-
let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization));
360+
let app_container = initialize_app_container(&cfg);
391361

392362
let bind_to = config.bind_address;
393363

@@ -403,12 +373,12 @@ mod tests {
403373

404374
let started = stopped
405375
.start(
406-
tracker,
407-
keys_handler,
408-
whitelist_manager,
409-
stats_event_sender,
410-
stats_repository,
411-
ban_service,
376+
app_container.tracker,
377+
app_container.keys_handler,
378+
app_container.whitelist_manager,
379+
app_container.stats_event_sender,
380+
app_container.stats_repository,
381+
app_container.ban_service,
412382
register.give_form(),
413383
access_tokens,
414384
)

src/servers/http/server.rs

+6-31
Original file line numberDiff line numberDiff line change
@@ -268,43 +268,18 @@ mod tests {
268268

269269
use torrust_tracker_test_helpers::configuration::ephemeral_public;
270270

271-
use crate::bootstrap::app::initialize_global_services;
271+
use crate::bootstrap::app::{initialize_app_container, initialize_global_services};
272272
use crate::bootstrap::jobs::make_rust_tls;
273-
use crate::core::authentication::handler::KeysHandler;
274-
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
275-
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
276-
use crate::core::authentication::service;
277-
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
278-
use crate::core::whitelist;
279-
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
280273
use crate::servers::http::server::{HttpServer, Launcher};
281274
use crate::servers::registar::Registar;
282275

283276
#[tokio::test]
284277
async fn it_should_be_able_to_start_and_stop() {
285278
let cfg = Arc::new(ephemeral_public());
286279

287-
let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
288-
let stats_event_sender = Arc::new(stats_event_sender);
289-
290280
initialize_global_services(&cfg);
291281

292-
let database = initialize_database(&cfg);
293-
let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
294-
let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new(
295-
&cfg.core,
296-
&in_memory_whitelist.clone(),
297-
));
298-
let _whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
299-
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
300-
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
301-
let authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
302-
let _keys_handler = Arc::new(KeysHandler::new(
303-
&db_key_repository.clone(),
304-
&in_memory_key_repository.clone(),
305-
));
306-
307-
let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization));
282+
let app_container = initialize_app_container(&cfg);
308283

309284
let http_trackers = cfg.http_trackers.clone().expect("missing HTTP trackers configuration");
310285
let config = &http_trackers[0];
@@ -320,10 +295,10 @@ mod tests {
320295
let stopped = HttpServer::new(Launcher::new(bind_to, tls));
321296
let started = stopped
322297
.start(
323-
tracker,
324-
authentication_service,
325-
whitelist_authorization,
326-
stats_event_sender,
298+
app_container.tracker,
299+
app_container.authentication_service,
300+
app_container.whitelist_authorization,
301+
app_container.stats_event_sender,
327302
register.give_form(),
328303
)
329304
.await

src/servers/udp/server/mod.rs

+11-58
Original file line numberDiff line numberDiff line change
@@ -58,49 +58,20 @@ mod tests {
5858
use std::sync::Arc;
5959
use std::time::Duration;
6060

61-
use tokio::sync::RwLock;
6261
use torrust_tracker_test_helpers::configuration::ephemeral_public;
6362

6463
use super::spawner::Spawner;
6564
use super::Server;
66-
use crate::bootstrap::app::initialize_global_services;
67-
use crate::core::authentication::handler::KeysHandler;
68-
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
69-
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
70-
use crate::core::authentication::service;
71-
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
72-
use crate::core::whitelist;
73-
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
65+
use crate::bootstrap::app::{initialize_app_container, initialize_global_services};
7466
use crate::servers::registar::Registar;
75-
use crate::servers::udp::server::banning::BanService;
76-
use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP;
7767

7868
#[tokio::test]
7969
async fn it_should_be_able_to_start_and_stop() {
8070
let cfg = Arc::new(ephemeral_public());
8171

82-
let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
83-
let stats_event_sender = Arc::new(stats_event_sender);
84-
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
85-
8672
initialize_global_services(&cfg);
8773

88-
let database = initialize_database(&cfg);
89-
let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
90-
let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new(
91-
&cfg.core,
92-
&in_memory_whitelist.clone(),
93-
));
94-
let _whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
95-
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
96-
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
97-
let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
98-
let _keys_handler = Arc::new(KeysHandler::new(
99-
&db_key_repository.clone(),
100-
&in_memory_key_repository.clone(),
101-
));
102-
103-
let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization));
74+
let app_container = initialize_app_container(&cfg);
10475

10576
let udp_trackers = cfg.udp_trackers.clone().expect("missing UDP trackers configuration");
10677
let config = &udp_trackers[0];
@@ -111,10 +82,10 @@ mod tests {
11182

11283
let started = stopped
11384
.start(
114-
tracker,
115-
whitelist_authorization,
116-
stats_event_sender,
117-
ban_service,
85+
app_container.tracker,
86+
app_container.whitelist_authorization,
87+
app_container.stats_event_sender,
88+
app_container.ban_service,
11889
register.give_form(),
11990
config.cookie_lifetime,
12091
)
@@ -132,27 +103,9 @@ mod tests {
132103
async fn it_should_be_able_to_start_and_stop_with_wait() {
133104
let cfg = Arc::new(ephemeral_public());
134105

135-
let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
136-
let stats_event_sender = Arc::new(stats_event_sender);
137-
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
138-
139106
initialize_global_services(&cfg);
140107

141-
let database = initialize_database(&cfg);
142-
let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
143-
let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new(
144-
&cfg.core,
145-
&in_memory_whitelist.clone(),
146-
));
147-
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
148-
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
149-
let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
150-
let _keys_handler = Arc::new(KeysHandler::new(
151-
&db_key_repository.clone(),
152-
&in_memory_key_repository.clone(),
153-
));
154-
155-
let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization));
108+
let app_container = initialize_app_container(&cfg);
156109

157110
let config = &cfg.udp_trackers.as_ref().unwrap().first().unwrap();
158111
let bind_to = config.bind_address;
@@ -162,10 +115,10 @@ mod tests {
162115

163116
let started = stopped
164117
.start(
165-
tracker,
166-
whitelist_authorization,
167-
stats_event_sender,
168-
ban_service,
118+
app_container.tracker,
119+
app_container.whitelist_authorization,
120+
app_container.stats_event_sender,
121+
app_container.ban_service,
169122
register.give_form(),
170123
config.cookie_lifetime,
171124
)

0 commit comments

Comments
 (0)