Skip to content

Commit

Permalink
refactor: [torrust#1195] inject dependencies in authenticatio::Facade
Browse files Browse the repository at this point in the history
Facade service will be removed.
  • Loading branch information
josecelano committed Jan 22, 2025
1 parent 663250b commit 504357c
Show file tree
Hide file tree
Showing 8 changed files with 94 additions and 20 deletions.
10 changes: 9 additions & 1 deletion src/app_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ use std::sync::Arc;

use torrust_tracker_configuration::Configuration;

use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
use crate::core::databases::Database;
use crate::core::services::initialize_database;
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
Expand All @@ -25,7 +27,13 @@ pub fn initialize_tracker_dependencies(
&config.core,
&in_memory_whitelist.clone(),
));
let authentication = Arc::new(authentication::Facade::new(&config.core, &database.clone()));
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
let authentication = Arc::new(authentication::Facade::new(
&config.core,
&db_key_repository.clone(),
&in_memory_key_repository.clone(),
));

(database, in_memory_whitelist, whitelist_authorization, authentication)
}
10 changes: 9 additions & 1 deletion src/bootstrap/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ use tracing::instrument;
use super::config::initialize_configuration;
use crate::bootstrap;
use crate::container::AppContainer;
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
use crate::core::{authentication, whitelist};
Expand Down Expand Up @@ -89,7 +91,13 @@ pub fn initialize_app_container(configuration: &Configuration) -> AppContainer {
&in_memory_whitelist.clone(),
));
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
let authentication = Arc::new(authentication::Facade::new(&configuration.core, &database.clone()));
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
let authentication = Arc::new(authentication::Facade::new(
&configuration.core,
&db_key_repository.clone(),
&in_memory_key_repository.clone(),
));

let tracker = Arc::new(initialize_tracker(
configuration,
Expand Down
10 changes: 9 additions & 1 deletion src/bootstrap/jobs/http_tracker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ mod tests {

use crate::bootstrap::app::initialize_global_services;
use crate::bootstrap::jobs::http_tracker::start_job;
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
use crate::core::services::{initialize_database, initialize_tracker, statistics};
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
use crate::core::{authentication, whitelist};
Expand All @@ -123,7 +125,13 @@ mod tests {
&cfg.core,
&in_memory_whitelist.clone(),
));
let authentication = Arc::new(authentication::Facade::new(&cfg.core, &database.clone()));
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
let authentication = Arc::new(authentication::Facade::new(
&cfg.core,
&db_key_repository.clone(),
&in_memory_key_repository.clone(),
));

let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization, &authentication));

Expand Down
10 changes: 9 additions & 1 deletion src/bootstrap/jobs/tracker_apis.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ mod tests {

use crate::bootstrap::app::initialize_global_services;
use crate::bootstrap::jobs::tracker_apis::start_job;
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
use crate::core::{authentication, whitelist};
Expand Down Expand Up @@ -176,7 +178,13 @@ mod tests {
&in_memory_whitelist.clone(),
));
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
let authentication = Arc::new(authentication::Facade::new(&cfg.core, &database.clone()));
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
let authentication = Arc::new(authentication::Facade::new(
&cfg.core,
&db_key_repository.clone(),
&in_memory_key_repository.clone(),
));

let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization, &authentication));

Expand Down
34 changes: 22 additions & 12 deletions src/core/authentication/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use key::repository::persisted::DatabaseKeyRepository;
use torrust_tracker_configuration::Core;
use torrust_tracker_primitives::DurationSinceUnixEpoch;

use super::databases::{self, Database};
use super::databases::{self};
use super::error::PeerKeyError;
use crate::CurrentClock;

Expand All @@ -29,12 +29,13 @@ pub struct Facade {

impl Facade {
#[must_use]
pub fn new(config: &Core, database: &Arc<Box<dyn Database>>) -> Self {
let db_key_repository = Arc::new(DatabaseKeyRepository::new(database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());

pub fn new(
config: &Core,
db_key_repository: &Arc<DatabaseKeyRepository>,
in_memory_key_repository: &Arc<InMemoryKeyRepository>,
) -> Self {
Self {
authentication_service: service::Service::new(config, &in_memory_key_repository),
authentication_service: service::Service::new(config, in_memory_key_repository),
keys_handler: KeysHandler::new(&db_key_repository.clone(), &in_memory_key_repository.clone()),
}
}
Expand Down Expand Up @@ -145,20 +146,22 @@ mod tests {

mod the_tracker_configured_as_private {

use std::sync::Arc;
use std::time::Duration;

use torrust_tracker_configuration::v2_0_0::core::PrivateMode;
use torrust_tracker_configuration::Configuration;
use torrust_tracker_test_helpers::configuration;

use crate::core::authentication;
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
use crate::core::services::initialize_database;

fn instantiate_authentication_facade() -> authentication::Facade {
let config = configuration::ephemeral_private();

let database = initialize_database(&config);

authentication::Facade::new(&config.core, &database.clone())
instantiate_authentication_facade_with_configuration(&config)
}

fn instantiate_authentication_facade_with_checking_keys_expiration_disabled() -> authentication::Facade {
Expand All @@ -168,9 +171,16 @@ mod tests {
check_keys_expiration: false,
});

let database = initialize_database(&config);

authentication::Facade::new(&config.core, &database.clone())
instantiate_authentication_facade_with_configuration(&config)
}

fn instantiate_authentication_facade_with_configuration(config: &Configuration) -> authentication::Facade {
let database = initialize_database(config);

let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());

authentication::Facade::new(&config.core, &db_key_repository.clone(), &in_memory_key_repository.clone())
}

#[tokio::test]
Expand Down
10 changes: 9 additions & 1 deletion src/servers/apis/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,8 @@ mod tests {

use crate::bootstrap::app::initialize_global_services;
use crate::bootstrap::jobs::make_rust_tls;
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
use crate::core::{authentication, whitelist};
Expand Down Expand Up @@ -369,7 +371,13 @@ mod tests {
&in_memory_whitelist.clone(),
));
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
let authentication = Arc::new(authentication::Facade::new(&cfg.core, &database.clone()));
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
let authentication = Arc::new(authentication::Facade::new(
&cfg.core,
&db_key_repository.clone(),
&in_memory_key_repository.clone(),
));

let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization, &authentication));

Expand Down
10 changes: 9 additions & 1 deletion src/servers/http/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,8 @@ mod tests {

use crate::bootstrap::app::initialize_global_services;
use crate::bootstrap::jobs::make_rust_tls;
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
use crate::core::{authentication, whitelist};
Expand All @@ -268,7 +270,13 @@ mod tests {
&in_memory_whitelist.clone(),
));
let _whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
let authentication = Arc::new(authentication::Facade::new(&cfg.core, &database.clone()));
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
let authentication = Arc::new(authentication::Facade::new(
&cfg.core,
&db_key_repository.clone(),
&in_memory_key_repository.clone(),
));

let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization, &authentication));

Expand Down
20 changes: 18 additions & 2 deletions src/servers/udp/server/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ mod tests {
use super::spawner::Spawner;
use super::Server;
use crate::bootstrap::app::initialize_global_services;
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
use crate::core::services::{initialize_database, initialize_tracker, initialize_whitelist_manager, statistics};
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
use crate::core::{authentication, whitelist};
Expand All @@ -88,7 +90,14 @@ mod tests {
&in_memory_whitelist.clone(),
));
let _whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
let authentication = Arc::new(authentication::Facade::new(&cfg.core, &database.clone()));
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
let authentication = Arc::new(authentication::Facade::new(
&cfg.core,
&db_key_repository.clone(),
&in_memory_key_repository.clone(),
));

let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization, &authentication));

let udp_trackers = cfg.udp_trackers.clone().expect("missing UDP trackers configuration");
Expand Down Expand Up @@ -133,7 +142,14 @@ mod tests {
&cfg.core,
&in_memory_whitelist.clone(),
));
let authentication = Arc::new(authentication::Facade::new(&cfg.core, &database.clone()));
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
let authentication = Arc::new(authentication::Facade::new(
&cfg.core,
&db_key_repository.clone(),
&in_memory_key_repository.clone(),
));

let tracker = Arc::new(initialize_tracker(&cfg, &database, &whitelist_authorization, &authentication));

let config = &cfg.udp_trackers.as_ref().unwrap().first().unwrap();
Expand Down

0 comments on commit 504357c

Please sign in to comment.