Skip to content

Commit 115159d

Browse files
committed
refactor: [#1211] clean core::whitelist module tests
1 parent 69d4505 commit 115159d

File tree

4 files changed

+42
-111
lines changed

4 files changed

+42
-111
lines changed

src/core/whitelist/authorization.rs

+3-23
Original file line numberDiff line numberDiff line change
@@ -61,35 +61,15 @@ impl WhitelistAuthorization {
6161
#[cfg(test)]
6262
mod tests {
6363

64-
use std::sync::Arc;
65-
66-
use torrust_tracker_test_helpers::configuration;
67-
68-
use super::WhitelistAuthorization;
69-
use crate::core::services::{initialize_database, initialize_whitelist_manager};
70-
use crate::core::whitelist::manager::WhiteListManager;
71-
use crate::core::whitelist::repository::in_memory::InMemoryWhitelist;
72-
73-
fn initialize_whitelist_services() -> (Arc<WhitelistAuthorization>, Arc<WhiteListManager>) {
74-
let config = configuration::ephemeral_listed();
75-
76-
let database = initialize_database(&config);
77-
let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
78-
let whitelist_authorization = Arc::new(WhitelistAuthorization::new(&config.core, &in_memory_whitelist.clone()));
79-
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
80-
81-
(whitelist_authorization, whitelist_manager)
82-
}
83-
8464
mod configured_as_whitelisted {
8565

8666
mod handling_authorization {
8767
use crate::core::core_tests::sample_info_hash;
88-
use crate::core::whitelist::authorization::tests::initialize_whitelist_services;
68+
use crate::core::whitelist::whitelist_tests::initialize_whitelist_services_for_listed_tracker;
8969

9070
#[tokio::test]
9171
async fn it_should_authorize_the_announce_and_scrape_actions_on_whitelisted_torrents() {
92-
let (whitelist_authorization, whitelist_manager) = initialize_whitelist_services();
72+
let (whitelist_authorization, whitelist_manager) = initialize_whitelist_services_for_listed_tracker();
9373

9474
let info_hash = sample_info_hash();
9575

@@ -102,7 +82,7 @@ mod tests {
10282

10383
#[tokio::test]
10484
async fn it_should_not_authorize_the_announce_and_scrape_actions_on_not_whitelisted_torrents() {
105-
let (whitelist_authorization, _whitelist_manager) = initialize_whitelist_services();
85+
let (whitelist_authorization, _whitelist_manager) = initialize_whitelist_services_for_listed_tracker();
10686

10787
let info_hash = sample_info_hash();
10888

src/core/whitelist/manager.rs

+9-42
Original file line numberDiff line numberDiff line change
@@ -97,59 +97,26 @@ mod tests {
9797

9898
use torrust_tracker_test_helpers::configuration;
9999

100-
use crate::app_test::initialize_tracker_dependencies;
101-
use crate::core::announce_handler::AnnounceHandler;
102-
use crate::core::scrape_handler::ScrapeHandler;
103-
use crate::core::services::initialize_whitelist_manager;
104-
use crate::core::whitelist;
105100
use crate::core::whitelist::manager::WhiteListManager;
101+
use crate::core::whitelist::whitelist_tests::initialize_whitelist_services;
106102

107-
#[allow(clippy::type_complexity)]
108-
fn whitelisted_tracker() -> (
109-
Arc<AnnounceHandler>,
110-
Arc<whitelist::authorization::WhitelistAuthorization>,
111-
Arc<WhiteListManager>,
112-
Arc<ScrapeHandler>,
113-
) {
103+
fn initialize_whitelist_manager_for_whitelisted_tracker() -> Arc<WhiteListManager> {
114104
let config = configuration::ephemeral_listed();
115105

116-
let (
117-
database,
118-
in_memory_whitelist,
119-
whitelist_authorization,
120-
_authentication_service,
121-
in_memory_torrent_repository,
122-
db_torrent_repository,
123-
_torrents_manager,
124-
) = initialize_tracker_dependencies(&config);
125-
126-
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
127-
128-
let announce_handler = Arc::new(AnnounceHandler::new(
129-
&config.core,
130-
&in_memory_torrent_repository,
131-
&db_torrent_repository,
132-
));
106+
let (_whitelist_authorization, whitelist_manager) = initialize_whitelist_services(&config);
133107

134-
let scrape_handler = Arc::new(ScrapeHandler::new(&whitelist_authorization, &in_memory_torrent_repository));
135-
136-
(announce_handler, whitelist_authorization, whitelist_manager, scrape_handler)
108+
whitelist_manager
137109
}
138110

139111
mod configured_as_whitelisted {
140112

141113
mod handling_the_torrent_whitelist {
142114
use crate::core::core_tests::sample_info_hash;
143-
use crate::core::whitelist::manager::tests::whitelisted_tracker;
144-
145-
// todo: after extracting the WhitelistManager from the Tracker,
146-
// there is no need to use the tracker to test the whitelist.
147-
// Test not using the `tracker` (`_tracker` variable) should be
148-
// moved to the whitelist module.
115+
use crate::core::whitelist::manager::tests::initialize_whitelist_manager_for_whitelisted_tracker;
149116

150117
#[tokio::test]
151118
async fn it_should_add_a_torrent_to_the_whitelist() {
152-
let (_announce_handler, _whitelist_authorization, whitelist_manager, _scrape_handler) = whitelisted_tracker();
119+
let whitelist_manager = initialize_whitelist_manager_for_whitelisted_tracker();
153120

154121
let info_hash = sample_info_hash();
155122

@@ -160,7 +127,7 @@ mod tests {
160127

161128
#[tokio::test]
162129
async fn it_should_remove_a_torrent_from_the_whitelist() {
163-
let (_announce_handler, _whitelist_authorization, whitelist_manager, _scrape_handler) = whitelisted_tracker();
130+
let whitelist_manager = initialize_whitelist_manager_for_whitelisted_tracker();
164131

165132
let info_hash = sample_info_hash();
166133

@@ -173,11 +140,11 @@ mod tests {
173140

174141
mod persistence {
175142
use crate::core::core_tests::sample_info_hash;
176-
use crate::core::whitelist::manager::tests::whitelisted_tracker;
143+
use crate::core::whitelist::manager::tests::initialize_whitelist_manager_for_whitelisted_tracker;
177144

178145
#[tokio::test]
179146
async fn it_should_load_the_whitelist_from_the_database() {
180-
let (_announce_handler, _whitelist_authorization, whitelist_manager, _scrape_handler) = whitelisted_tracker();
147+
let whitelist_manager = initialize_whitelist_manager_for_whitelisted_tracker();
181148

182149
let info_hash = sample_info_hash();
183150

src/core/whitelist/mod.rs

+4-46
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,20 @@
11
pub mod authorization;
22
pub mod manager;
33
pub mod repository;
4+
pub mod whitelist_tests;
45

56
#[cfg(test)]
67
mod tests {
78

8-
use std::sync::Arc;
9-
10-
use torrust_tracker_test_helpers::configuration;
11-
12-
use crate::app_test::initialize_tracker_dependencies;
13-
use crate::core::announce_handler::AnnounceHandler;
14-
use crate::core::scrape_handler::ScrapeHandler;
15-
use crate::core::services::initialize_whitelist_manager;
16-
use crate::core::whitelist;
17-
use crate::core::whitelist::manager::WhiteListManager;
18-
19-
#[allow(clippy::type_complexity)]
20-
fn whitelisted_tracker() -> (
21-
Arc<AnnounceHandler>,
22-
Arc<whitelist::authorization::WhitelistAuthorization>,
23-
Arc<WhiteListManager>,
24-
Arc<ScrapeHandler>,
25-
) {
26-
let config = configuration::ephemeral_listed();
27-
28-
let (
29-
database,
30-
in_memory_whitelist,
31-
whitelist_authorization,
32-
_authentication_service,
33-
in_memory_torrent_repository,
34-
db_torrent_repository,
35-
_torrents_manager,
36-
) = initialize_tracker_dependencies(&config);
37-
38-
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
39-
40-
let announce_handler = Arc::new(AnnounceHandler::new(
41-
&config.core,
42-
&in_memory_torrent_repository,
43-
&db_torrent_repository,
44-
));
45-
46-
let scrape_handler = Arc::new(ScrapeHandler::new(&whitelist_authorization, &in_memory_torrent_repository));
47-
48-
(announce_handler, whitelist_authorization, whitelist_manager, scrape_handler)
49-
}
50-
519
mod configured_as_whitelisted {
5210

5311
mod handling_authorization {
5412
use crate::core::core_tests::sample_info_hash;
55-
use crate::core::whitelist::tests::whitelisted_tracker;
13+
use crate::core::whitelist::whitelist_tests::initialize_whitelist_services_for_listed_tracker;
5614

5715
#[tokio::test]
5816
async fn it_should_authorize_the_announce_and_scrape_actions_on_whitelisted_torrents() {
59-
let (_announce_handler, whitelist_authorization, whitelist_manager, _scrape_handler) = whitelisted_tracker();
17+
let (whitelist_authorization, whitelist_manager) = initialize_whitelist_services_for_listed_tracker();
6018

6119
let info_hash = sample_info_hash();
6220

@@ -69,7 +27,7 @@ mod tests {
6927

7028
#[tokio::test]
7129
async fn it_should_not_authorize_the_announce_and_scrape_actions_on_not_whitelisted_torrents() {
72-
let (_announce_handler, whitelist_authorization, _whitelist_manager, _scrape_handler) = whitelisted_tracker();
30+
let (whitelist_authorization, _whitelist_manager) = initialize_whitelist_services_for_listed_tracker();
7331

7432
let info_hash = sample_info_hash();
7533

src/core/whitelist/whitelist_tests.rs

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
use std::sync::Arc;
2+
3+
use torrust_tracker_configuration::Configuration;
4+
5+
use super::authorization::WhitelistAuthorization;
6+
use super::manager::WhiteListManager;
7+
use super::repository::in_memory::InMemoryWhitelist;
8+
use crate::core::services::{initialize_database, initialize_whitelist_manager};
9+
10+
#[must_use]
11+
pub fn initialize_whitelist_services(config: &Configuration) -> (Arc<WhitelistAuthorization>, Arc<WhiteListManager>) {
12+
let database = initialize_database(config);
13+
let in_memory_whitelist = Arc::new(InMemoryWhitelist::default());
14+
let whitelist_authorization = Arc::new(WhitelistAuthorization::new(&config.core, &in_memory_whitelist.clone()));
15+
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
16+
17+
(whitelist_authorization, whitelist_manager)
18+
}
19+
20+
#[cfg(test)]
21+
#[must_use]
22+
pub fn initialize_whitelist_services_for_listed_tracker() -> (Arc<WhitelistAuthorization>, Arc<WhiteListManager>) {
23+
use torrust_tracker_test_helpers::configuration;
24+
25+
initialize_whitelist_services(&configuration::ephemeral_listed())
26+
}

0 commit comments

Comments
 (0)