From df6ed93e4eb1589dee88bd5248d2644382ec5696 Mon Sep 17 00:00:00 2001 From: Jose Celano Date: Wed, 22 Jan 2025 17:10:43 +0000 Subject: [PATCH] refactor: [#1198] remove duplicate code in app init in tests --- src/bootstrap/jobs/http_tracker.rs | 36 +++------------- src/bootstrap/jobs/tracker_apis.rs | 46 ++++---------------- src/core/authentication/handler.rs | 1 - src/core/authentication/mod.rs | 2 - src/servers/apis/server.rs | 46 ++++---------------- src/servers/http/server.rs | 37 +++------------- src/servers/udp/server/mod.rs | 69 +++++------------------------- 7 files changed, 39 insertions(+), 198 deletions(-) diff --git a/src/bootstrap/jobs/http_tracker.rs b/src/bootstrap/jobs/http_tracker.rs index 4df669675..92a255c9e 100644 --- a/src/bootstrap/jobs/http_tracker.rs +++ b/src/bootstrap/jobs/http_tracker.rs @@ -108,15 +108,8 @@ mod tests { use torrust_tracker_test_helpers::configuration::ephemeral_public; - use crate::bootstrap::app::initialize_global_services; + use crate::bootstrap::app::{initialize_app_container, initialize_global_services}; use crate::bootstrap::jobs::http_tracker::start_job; - use crate::core::authentication::handler::KeysHandler; - use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository; - use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository; - use crate::core::authentication::service; - use crate::core::services::{initialize_database, initialize_tracker, statistics}; - use crate::core::whitelist; - use crate::core::whitelist::repository::in_memory::InMemoryWhitelist; use crate::servers::http::Version; use crate::servers::registar::Registar; @@ -126,35 +119,18 @@ mod tests { let http_tracker = cfg.http_trackers.clone().expect("missing HTTP tracker configuration"); let config = &http_tracker[0]; - let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics); - let stats_event_sender = Arc::new(stats_event_sender); - initialize_global_services(&cfg); - let database = initialize_database(&cfg); - let in_memory_whitelist = Arc::new(InMemoryWhitelist::default()); - let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new( - &cfg.core, - &in_memory_whitelist.clone(), - )); - let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database)); - let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default()); - let authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository)); - let _keys_handler = Arc::new(KeysHandler::new( - &db_key_repository.clone(), - &in_memory_key_repository.clone(), - )); - - let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization)); + let app_container = initialize_app_container(&cfg); let version = Version::V1; start_job( config, - tracker, - authentication_service, - whitelist_authorization, - stats_event_sender, + app_container.tracker, + app_container.authentication_service, + app_container.whitelist_authorization, + app_container.stats_event_sender, Registar::default().give_form(), version, ) diff --git a/src/bootstrap/jobs/tracker_apis.rs b/src/bootstrap/jobs/tracker_apis.rs index 9bb7e6d45..1047fa418 100644 --- a/src/bootstrap/jobs/tracker_apis.rs +++ b/src/bootstrap/jobs/tracker_apis.rs @@ -159,62 +159,32 @@ async fn start_v1( mod tests { use std::sync::Arc; - use tokio::sync::RwLock; use torrust_tracker_test_helpers::configuration::ephemeral_public; - use crate::bootstrap::app::initialize_global_services; + use crate::bootstrap::app::{initialize_app_container, initialize_global_services}; use crate::bootstrap::jobs::tracker_apis::start_job; - use crate::core::authentication::handler::KeysHandler; - use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository; - use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository; - use crate::core::authentication::service; - use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics}; - use crate::core::whitelist; - use crate::core::whitelist::repository::in_memory::InMemoryWhitelist; use crate::servers::apis::Version; use crate::servers::registar::Registar; - use crate::servers::udp::server::banning::BanService; - use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP; #[tokio::test] async fn it_should_start_http_tracker() { let cfg = Arc::new(ephemeral_public()); let config = &cfg.http_api.clone().unwrap(); - let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP))); - let (stats_event_sender, stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics); - let stats_event_sender = Arc::new(stats_event_sender); - let stats_repository = Arc::new(stats_repository); - initialize_global_services(&cfg); - let database = initialize_database(&cfg); - let in_memory_whitelist = Arc::new(InMemoryWhitelist::default()); - let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new( - &cfg.core, - &in_memory_whitelist.clone(), - )); - let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone()); - let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database)); - let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default()); - let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository)); - let keys_handler = Arc::new(KeysHandler::new( - &db_key_repository.clone(), - &in_memory_key_repository.clone(), - )); - - let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization)); + let app_container = initialize_app_container(&cfg); let version = Version::V1; start_job( config, - tracker, - keys_handler, - whitelist_manager, - ban_service, - stats_event_sender, - stats_repository, + app_container.tracker, + app_container.keys_handler, + app_container.whitelist_manager, + app_container.ban_service, + app_container.stats_event_sender, + app_container.stats_repository, Registar::default().give_form(), version, ) diff --git a/src/core/authentication/handler.rs b/src/core/authentication/handler.rs index 17033aefc..5ec9a11b4 100644 --- a/src/core/authentication/handler.rs +++ b/src/core/authentication/handler.rs @@ -267,7 +267,6 @@ mod tests { fn instantiate_keys_handler_with_configuration(config: &Configuration) -> KeysHandler { let database = initialize_database(config); - let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database)); let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default()); diff --git a/src/core/authentication/mod.rs b/src/core/authentication/mod.rs index 799263752..0180b3a1e 100644 --- a/src/core/authentication/mod.rs +++ b/src/core/authentication/mod.rs @@ -50,10 +50,8 @@ mod tests { config: &Configuration, ) -> (Arc, Arc) { let database = initialize_database(config); - let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database)); let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default()); - let authentication_service = Arc::new(service::AuthenticationService::new(&config.core, &in_memory_key_repository)); let keys_handler = Arc::new(KeysHandler::new( &db_key_repository.clone(), diff --git a/src/servers/apis/server.rs b/src/servers/apis/server.rs index f219ca023..e65d6643d 100644 --- a/src/servers/apis/server.rs +++ b/src/servers/apis/server.rs @@ -343,51 +343,21 @@ impl Launcher { mod tests { use std::sync::Arc; - use tokio::sync::RwLock; use torrust_tracker_test_helpers::configuration::ephemeral_public; - use crate::bootstrap::app::initialize_global_services; + use crate::bootstrap::app::{initialize_app_container, initialize_global_services}; use crate::bootstrap::jobs::make_rust_tls; - use crate::core::authentication::handler::KeysHandler; - use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository; - use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository; - use crate::core::authentication::service; - use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics}; - use crate::core::whitelist; - use crate::core::whitelist::repository::in_memory::InMemoryWhitelist; use crate::servers::apis::server::{ApiServer, Launcher}; use crate::servers::registar::Registar; - use crate::servers::udp::server::banning::BanService; - use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP; #[tokio::test] async fn it_should_be_able_to_start_and_stop() { let cfg = Arc::new(ephemeral_public()); let config = &cfg.http_api.clone().unwrap(); - let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP))); - let (stats_event_sender, stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics); - let stats_event_sender = Arc::new(stats_event_sender); - let stats_repository = Arc::new(stats_repository); - initialize_global_services(&cfg); - let database = initialize_database(&cfg); - let in_memory_whitelist = Arc::new(InMemoryWhitelist::default()); - let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new( - &cfg.core, - &in_memory_whitelist.clone(), - )); - let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone()); - let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database)); - let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default()); - let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository)); - let keys_handler = Arc::new(KeysHandler::new( - &db_key_repository.clone(), - &in_memory_key_repository.clone(), - )); - - let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization)); + let app_container = initialize_app_container(&cfg); let bind_to = config.bind_address; @@ -403,12 +373,12 @@ mod tests { let started = stopped .start( - tracker, - keys_handler, - whitelist_manager, - stats_event_sender, - stats_repository, - ban_service, + app_container.tracker, + app_container.keys_handler, + app_container.whitelist_manager, + app_container.stats_event_sender, + app_container.stats_repository, + app_container.ban_service, register.give_form(), access_tokens, ) diff --git a/src/servers/http/server.rs b/src/servers/http/server.rs index 5f62a2013..e7a3a92ec 100644 --- a/src/servers/http/server.rs +++ b/src/servers/http/server.rs @@ -268,15 +268,8 @@ mod tests { use torrust_tracker_test_helpers::configuration::ephemeral_public; - use crate::bootstrap::app::initialize_global_services; + use crate::bootstrap::app::{initialize_app_container, initialize_global_services}; use crate::bootstrap::jobs::make_rust_tls; - use crate::core::authentication::handler::KeysHandler; - use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository; - use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository; - use crate::core::authentication::service; - use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics}; - use crate::core::whitelist; - use crate::core::whitelist::repository::in_memory::InMemoryWhitelist; use crate::servers::http::server::{HttpServer, Launcher}; use crate::servers::registar::Registar; @@ -284,27 +277,9 @@ mod tests { async fn it_should_be_able_to_start_and_stop() { let cfg = Arc::new(ephemeral_public()); - let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics); - let stats_event_sender = Arc::new(stats_event_sender); - initialize_global_services(&cfg); - let database = initialize_database(&cfg); - let in_memory_whitelist = Arc::new(InMemoryWhitelist::default()); - let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new( - &cfg.core, - &in_memory_whitelist.clone(), - )); - let _whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone()); - let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database)); - let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default()); - let authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository)); - let _keys_handler = Arc::new(KeysHandler::new( - &db_key_repository.clone(), - &in_memory_key_repository.clone(), - )); - - let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization)); + let app_container = initialize_app_container(&cfg); let http_trackers = cfg.http_trackers.clone().expect("missing HTTP trackers configuration"); let config = &http_trackers[0]; @@ -320,10 +295,10 @@ mod tests { let stopped = HttpServer::new(Launcher::new(bind_to, tls)); let started = stopped .start( - tracker, - authentication_service, - whitelist_authorization, - stats_event_sender, + app_container.tracker, + app_container.authentication_service, + app_container.whitelist_authorization, + app_container.stats_event_sender, register.give_form(), ) .await diff --git a/src/servers/udp/server/mod.rs b/src/servers/udp/server/mod.rs index 844c18678..af51b7fb7 100644 --- a/src/servers/udp/server/mod.rs +++ b/src/servers/udp/server/mod.rs @@ -58,49 +58,20 @@ mod tests { use std::sync::Arc; use std::time::Duration; - use tokio::sync::RwLock; use torrust_tracker_test_helpers::configuration::ephemeral_public; use super::spawner::Spawner; use super::Server; - use crate::bootstrap::app::initialize_global_services; - use crate::core::authentication::handler::KeysHandler; - use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository; - use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository; - use crate::core::authentication::service; - use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics}; - use crate::core::whitelist; - use crate::core::whitelist::repository::in_memory::InMemoryWhitelist; + use crate::bootstrap::app::{initialize_app_container, initialize_global_services}; use crate::servers::registar::Registar; - use crate::servers::udp::server::banning::BanService; - use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP; #[tokio::test] async fn it_should_be_able_to_start_and_stop() { let cfg = Arc::new(ephemeral_public()); - let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics); - let stats_event_sender = Arc::new(stats_event_sender); - let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP))); - initialize_global_services(&cfg); - let database = initialize_database(&cfg); - let in_memory_whitelist = Arc::new(InMemoryWhitelist::default()); - let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new( - &cfg.core, - &in_memory_whitelist.clone(), - )); - let _whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone()); - let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database)); - let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default()); - let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository)); - let _keys_handler = Arc::new(KeysHandler::new( - &db_key_repository.clone(), - &in_memory_key_repository.clone(), - )); - - let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization)); + let app_container = initialize_app_container(&cfg); let udp_trackers = cfg.udp_trackers.clone().expect("missing UDP trackers configuration"); let config = &udp_trackers[0]; @@ -111,10 +82,10 @@ mod tests { let started = stopped .start( - tracker, - whitelist_authorization, - stats_event_sender, - ban_service, + app_container.tracker, + app_container.whitelist_authorization, + app_container.stats_event_sender, + app_container.ban_service, register.give_form(), config.cookie_lifetime, ) @@ -132,27 +103,9 @@ mod tests { async fn it_should_be_able_to_start_and_stop_with_wait() { let cfg = Arc::new(ephemeral_public()); - let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics); - let stats_event_sender = Arc::new(stats_event_sender); - let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP))); - initialize_global_services(&cfg); - let database = initialize_database(&cfg); - let in_memory_whitelist = Arc::new(InMemoryWhitelist::default()); - let whitelist_authorization = Arc::new(whitelist::authorization::Authorization::new( - &cfg.core, - &in_memory_whitelist.clone(), - )); - let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database)); - let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default()); - let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository)); - let _keys_handler = Arc::new(KeysHandler::new( - &db_key_repository.clone(), - &in_memory_key_repository.clone(), - )); - - let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization)); + let app_container = initialize_app_container(&cfg); let config = &cfg.udp_trackers.as_ref().unwrap().first().unwrap(); let bind_to = config.bind_address; @@ -162,10 +115,10 @@ mod tests { let started = stopped .start( - tracker, - whitelist_authorization, - stats_event_sender, - ban_service, + app_container.tracker, + app_container.whitelist_authorization, + app_container.stats_event_sender, + app_container.ban_service, register.give_form(), config.cookie_lifetime, )