Skip to content

Commit 661fe6a

Browse files
committed
refactor: [#1195] remove AuthenticationService from authentication Facade
It's now used directly.
1 parent 747b608 commit 661fe6a

File tree

8 files changed

+60
-81
lines changed

8 files changed

+60
-81
lines changed

src/app_test.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub fn initialize_tracker_dependencies(
3737
&db_key_repository.clone(),
3838
&in_memory_key_repository.clone(),
3939
));
40-
let authentication_facade = Arc::new(authentication::Facade::new(&authentication_service, &keys_handler));
40+
let authentication_facade = Arc::new(authentication::Facade::new(&keys_handler));
4141

4242
(
4343
database,

src/bootstrap/app.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ pub fn initialize_app_container(configuration: &Configuration) -> AppContainer {
103103
&db_key_repository.clone(),
104104
&in_memory_key_repository.clone(),
105105
));
106-
let authentication = Arc::new(authentication::Facade::new(&authentication_service, &keys_handler));
106+
let authentication = Arc::new(authentication::Facade::new(&keys_handler));
107107

108108
let tracker = Arc::new(initialize_tracker(
109109
configuration,

src/bootstrap/jobs/http_tracker.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ mod tests {
144144
&db_key_repository.clone(),
145145
&in_memory_key_repository.clone(),
146146
));
147-
let authentication = Arc::new(authentication::Facade::new(&authentication_service, &keys_handler));
147+
let authentication = Arc::new(authentication::Facade::new(&keys_handler));
148148

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

src/bootstrap/jobs/tracker_apis.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,12 @@ mod tests {
182182
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
183183
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
184184
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
185-
let authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
185+
let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
186186
let keys_handler = Arc::new(KeysHandler::new(
187187
&db_key_repository.clone(),
188188
&in_memory_key_repository.clone(),
189189
));
190-
let authentication = Arc::new(authentication::Facade::new(&authentication_service, &keys_handler));
190+
let authentication = Arc::new(authentication::Facade::new(&keys_handler));
191191

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

src/core/authentication/mod.rs

+48-69
Original file line numberDiff line numberDiff line change
@@ -17,32 +17,18 @@ pub type Key = key::Key;
1717
pub type Error = key::Error;
1818

1919
pub struct Facade {
20-
/// The authentication service.
21-
authentication_service: Arc<service::AuthenticationService>,
22-
2320
/// The keys handler.
2421
keys_handler: Arc<handler::KeysHandler>,
2522
}
2623

2724
impl Facade {
2825
#[must_use]
29-
pub fn new(authentication_service: &Arc<service::AuthenticationService>, keys_handler: &Arc<handler::KeysHandler>) -> Self {
26+
pub fn new(keys_handler: &Arc<handler::KeysHandler>) -> Self {
3027
Self {
31-
authentication_service: authentication_service.clone(),
3228
keys_handler: keys_handler.clone(),
3329
}
3430
}
3531

36-
/// It authenticates the peer `key` against the `Tracker` authentication
37-
/// key list.
38-
///
39-
/// # Errors
40-
///
41-
/// Will return an error if the the authentication key cannot be verified.
42-
pub async fn authenticate(&self, key: &Key) -> Result<(), Error> {
43-
self.authentication_service.authenticate(key).await
44-
}
45-
4632
/// Adds new peer keys to the tracker.
4733
///
4834
/// Keys can be pre-generated or randomly created. They can also be permanent or expire.
@@ -149,26 +135,30 @@ mod tests {
149135
use crate::core::authentication::handler::KeysHandler;
150136
use crate::core::authentication::key::repository::in_memory::InMemoryKeyRepository;
151137
use crate::core::authentication::key::repository::persisted::DatabaseKeyRepository;
138+
use crate::core::authentication::service::AuthenticationService;
152139
use crate::core::authentication::{self, service};
153140
use crate::core::services::initialize_database;
154141

155-
fn instantiate_authentication_facade() -> authentication::Facade {
142+
fn instantiate_keys_manager_and_authentication() -> (authentication::Facade, Arc<AuthenticationService>) {
156143
let config = configuration::ephemeral_private();
157144

158-
instantiate_authentication_facade_with_configuration(&config)
145+
instantiate_keys_manager_and_authentication_with_configuration(&config)
159146
}
160147

161-
fn instantiate_authentication_facade_with_checking_keys_expiration_disabled() -> authentication::Facade {
148+
fn instantiate_keys_manager_and_authentication_with_checking_keys_expiration_disabled(
149+
) -> (authentication::Facade, Arc<AuthenticationService>) {
162150
let mut config = configuration::ephemeral_private();
163151

164152
config.core.private_mode = Some(PrivateMode {
165153
check_keys_expiration: false,
166154
});
167155

168-
instantiate_authentication_facade_with_configuration(&config)
156+
instantiate_keys_manager_and_authentication_with_configuration(&config)
169157
}
170158

171-
fn instantiate_authentication_facade_with_configuration(config: &Configuration) -> authentication::Facade {
159+
fn instantiate_keys_manager_and_authentication_with_configuration(
160+
config: &Configuration,
161+
) -> (authentication::Facade, Arc<AuthenticationService>) {
172162
let database = initialize_database(config);
173163

174164
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
@@ -180,52 +170,40 @@ mod tests {
180170
&in_memory_key_repository.clone(),
181171
));
182172

183-
authentication::Facade::new(&authentication_service, &keys_handler)
173+
let facade = authentication::Facade::new(&keys_handler);
174+
175+
(facade, authentication_service)
184176
}
185177

186178
#[tokio::test]
187179
async fn it_should_remove_an_authentication_key() {
188-
let authentication = instantiate_authentication_facade();
180+
let (keys_manager, authentication_service) = instantiate_keys_manager_and_authentication();
189181

190-
let expiring_key = authentication
191-
.generate_auth_key(Some(Duration::from_secs(100)))
192-
.await
193-
.unwrap();
182+
let expiring_key = keys_manager.generate_auth_key(Some(Duration::from_secs(100))).await.unwrap();
194183

195-
let result = authentication.remove_auth_key(&expiring_key.key()).await;
184+
let result = keys_manager.remove_auth_key(&expiring_key.key()).await;
196185

197186
assert!(result.is_ok());
198187

199188
// The key should no longer be valid
200-
assert!(authentication
201-
.authentication_service
202-
.authenticate(&expiring_key.key())
203-
.await
204-
.is_err());
189+
assert!(authentication_service.authenticate(&expiring_key.key()).await.is_err());
205190
}
206191

207192
#[tokio::test]
208193
async fn it_should_load_authentication_keys_from_the_database() {
209-
let authentication = instantiate_authentication_facade();
194+
let (keys_manager, authentication_service) = instantiate_keys_manager_and_authentication();
210195

211-
let expiring_key = authentication
212-
.generate_auth_key(Some(Duration::from_secs(100)))
213-
.await
214-
.unwrap();
196+
let expiring_key = keys_manager.generate_auth_key(Some(Duration::from_secs(100))).await.unwrap();
215197

216198
// Remove the newly generated key in memory
217-
authentication.remove_in_memory_auth_key(&expiring_key.key()).await;
199+
keys_manager.remove_in_memory_auth_key(&expiring_key.key()).await;
218200

219-
let result = authentication.load_keys_from_database().await;
201+
let result = keys_manager.load_keys_from_database().await;
220202

221203
assert!(result.is_ok());
222204

223205
// The key should no longer be valid
224-
assert!(authentication
225-
.authentication_service
226-
.authenticate(&expiring_key.key())
227-
.await
228-
.is_ok());
206+
assert!(authentication_service.authenticate(&expiring_key.key()).await.is_ok());
229207
}
230208

231209
mod with_expiring_and {
@@ -234,114 +212,115 @@ mod tests {
234212
use std::time::Duration;
235213

236214
use crate::core::authentication::tests::the_tracker_configured_as_private::{
237-
instantiate_authentication_facade, instantiate_authentication_facade_with_checking_keys_expiration_disabled,
215+
instantiate_keys_manager_and_authentication,
216+
instantiate_keys_manager_and_authentication_with_checking_keys_expiration_disabled,
238217
};
239218
use crate::core::authentication::Key;
240219

241220
#[tokio::test]
242221
async fn it_should_authenticate_a_peer_with_the_key() {
243-
let authentication = instantiate_authentication_facade();
222+
let (keys_manager, authentication_service) = instantiate_keys_manager_and_authentication();
244223

245-
let peer_key = authentication
246-
.generate_auth_key(Some(Duration::from_secs(100)))
247-
.await
248-
.unwrap();
224+
let peer_key = keys_manager.generate_auth_key(Some(Duration::from_secs(100))).await.unwrap();
249225

250-
let result = authentication.authenticate(&peer_key.key()).await;
226+
let result = authentication_service.authenticate(&peer_key.key()).await;
251227

252228
assert!(result.is_ok());
253229
}
254230

255231
#[tokio::test]
256232
async fn it_should_accept_an_expired_key_when_checking_expiration_is_disabled_in_configuration() {
257-
let authentication = instantiate_authentication_facade_with_checking_keys_expiration_disabled();
233+
let (keys_manager, authentication_service) =
234+
instantiate_keys_manager_and_authentication_with_checking_keys_expiration_disabled();
258235

259236
let past_timestamp = Duration::ZERO;
260237

261-
let peer_key = authentication
238+
let peer_key = keys_manager
262239
.add_auth_key(Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap(), Some(past_timestamp))
263240
.await
264241
.unwrap();
265242

266-
assert!(authentication.authenticate(&peer_key.key()).await.is_ok());
243+
assert!(authentication_service.authenticate(&peer_key.key()).await.is_ok());
267244
}
268245
}
269246

270247
mod pre_generated_keys {
271248

272249
use crate::core::authentication::tests::the_tracker_configured_as_private::{
273-
instantiate_authentication_facade, instantiate_authentication_facade_with_checking_keys_expiration_disabled,
250+
instantiate_keys_manager_and_authentication,
251+
instantiate_keys_manager_and_authentication_with_checking_keys_expiration_disabled,
274252
};
275253
use crate::core::authentication::{AddKeyRequest, Key};
276254

277255
#[tokio::test]
278256
async fn it_should_authenticate_a_peer_with_the_key() {
279-
let authentication = instantiate_authentication_facade();
257+
let (keys_manager, authentication_service) = instantiate_keys_manager_and_authentication();
280258

281-
let peer_key = authentication
259+
let peer_key = keys_manager
282260
.add_peer_key(AddKeyRequest {
283261
opt_key: Some(Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap().to_string()),
284262
opt_seconds_valid: Some(100),
285263
})
286264
.await
287265
.unwrap();
288266

289-
let result = authentication.authenticate(&peer_key.key()).await;
267+
let result = authentication_service.authenticate(&peer_key.key()).await;
290268

291269
assert!(result.is_ok());
292270
}
293271

294272
#[tokio::test]
295273
async fn it_should_accept_an_expired_key_when_checking_expiration_is_disabled_in_configuration() {
296-
let authentication = instantiate_authentication_facade_with_checking_keys_expiration_disabled();
274+
let (keys_manager, authentication_service) =
275+
instantiate_keys_manager_and_authentication_with_checking_keys_expiration_disabled();
297276

298-
let peer_key = authentication
277+
let peer_key = keys_manager
299278
.add_peer_key(AddKeyRequest {
300279
opt_key: Some(Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap().to_string()),
301280
opt_seconds_valid: Some(0),
302281
})
303282
.await
304283
.unwrap();
305284

306-
assert!(authentication.authenticate(&peer_key.key()).await.is_ok());
285+
assert!(authentication_service.authenticate(&peer_key.key()).await.is_ok());
307286
}
308287
}
309288
}
310289

311290
mod with_permanent_and {
312291

313292
mod randomly_generated_keys {
314-
use crate::core::authentication::tests::the_tracker_configured_as_private::instantiate_authentication_facade;
293+
use crate::core::authentication::tests::the_tracker_configured_as_private::instantiate_keys_manager_and_authentication;
315294

316295
#[tokio::test]
317296
async fn it_should_authenticate_a_peer_with_the_key() {
318-
let authentication = instantiate_authentication_facade();
297+
let (keys_manager, authentication_service) = instantiate_keys_manager_and_authentication();
319298

320-
let peer_key = authentication.generate_permanent_auth_key().await.unwrap();
299+
let peer_key = keys_manager.generate_permanent_auth_key().await.unwrap();
321300

322-
let result = authentication.authenticate(&peer_key.key()).await;
301+
let result = authentication_service.authenticate(&peer_key.key()).await;
323302

324303
assert!(result.is_ok());
325304
}
326305
}
327306

328307
mod pre_generated_keys {
329-
use crate::core::authentication::tests::the_tracker_configured_as_private::instantiate_authentication_facade;
308+
use crate::core::authentication::tests::the_tracker_configured_as_private::instantiate_keys_manager_and_authentication;
330309
use crate::core::authentication::{AddKeyRequest, Key};
331310

332311
#[tokio::test]
333312
async fn it_should_authenticate_a_peer_with_the_key() {
334-
let authentication = instantiate_authentication_facade();
313+
let (keys_manager, authentication_service) = instantiate_keys_manager_and_authentication();
335314

336-
let peer_key = authentication
315+
let peer_key = keys_manager
337316
.add_peer_key(AddKeyRequest {
338317
opt_key: Some(Key::new("YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ").unwrap().to_string()),
339318
opt_seconds_valid: None,
340319
})
341320
.await
342321
.unwrap();
343322

344-
let result = authentication.authenticate(&peer_key.key()).await;
323+
let result = authentication_service.authenticate(&peer_key.key()).await;
345324

346325
assert!(result.is_ok());
347326
}

src/servers/apis/server.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -375,12 +375,12 @@ mod tests {
375375
let whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
376376
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
377377
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
378-
let authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
378+
let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
379379
let keys_handler = Arc::new(KeysHandler::new(
380380
&db_key_repository.clone(),
381381
&in_memory_key_repository.clone(),
382382
));
383-
let authentication = Arc::new(authentication::Facade::new(&authentication_service, &keys_handler));
383+
let authentication = Arc::new(authentication::Facade::new(&keys_handler));
384384

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

src/servers/http/server.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ mod tests {
303303
&db_key_repository.clone(),
304304
&in_memory_key_repository.clone(),
305305
));
306-
let authentication = Arc::new(authentication::Facade::new(&authentication_service, &keys_handler));
306+
let authentication = Arc::new(authentication::Facade::new(&keys_handler));
307307

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

src/servers/udp/server/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,12 @@ mod tests {
9494
let _whitelist_manager = initialize_whitelist_manager(database.clone(), in_memory_whitelist.clone());
9595
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
9696
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
97-
let authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
97+
let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
9898
let keys_handler = Arc::new(KeysHandler::new(
9999
&db_key_repository.clone(),
100100
&in_memory_key_repository.clone(),
101101
));
102-
let authentication = Arc::new(authentication::Facade::new(&authentication_service, &keys_handler));
102+
let authentication = Arc::new(authentication::Facade::new(&keys_handler));
103103

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

@@ -147,12 +147,12 @@ mod tests {
147147
));
148148
let db_key_repository = Arc::new(DatabaseKeyRepository::new(&database));
149149
let in_memory_key_repository = Arc::new(InMemoryKeyRepository::default());
150-
let authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
150+
let _authentication_service = Arc::new(service::AuthenticationService::new(&cfg.core, &in_memory_key_repository));
151151
let keys_handler = Arc::new(KeysHandler::new(
152152
&db_key_repository.clone(),
153153
&in_memory_key_repository.clone(),
154154
));
155-
let authentication = Arc::new(authentication::Facade::new(&authentication_service, &keys_handler));
155+
let authentication = Arc::new(authentication::Facade::new(&keys_handler));
156156

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

0 commit comments

Comments
 (0)