feat: mock login service and test init utils for cmd and event
This commit is contained in:
parent
1a0c5e7e91
commit
6d6e3da781
4 changed files with 39 additions and 3 deletions
|
@ -27,6 +27,12 @@ impl LoginCommand {
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
impl LoginCommand {
|
||||||
|
pub fn get_cmd() -> Self {
|
||||||
|
LoginCommand { success: true }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_cmd() {
|
fn test_cmd() {
|
||||||
let config = argon2_creds::Config::default();
|
let config = argon2_creds::Config::default();
|
||||||
|
|
|
@ -15,3 +15,17 @@ impl LoginEvent {
|
||||||
Self { success }
|
Self { success }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
use crate::identity::application::services::login::command::*;
|
||||||
|
|
||||||
|
impl LoginEvent {
|
||||||
|
pub fn get_event(cmd: &LoginCommand) -> Self {
|
||||||
|
Self {
|
||||||
|
success: *cmd.success(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
// SPDX-FileCopyrightText: 2024 Aravinth Manivannan <realaravinth@batsense.net>
|
// SPDX-FileCopyrightText: 2024 Aravinth Manivannan <realaravinth@batsense.net>
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
use mockall::predicate::*;
|
||||||
|
use mockall::*;
|
||||||
|
|
||||||
pub mod command;
|
pub mod command;
|
||||||
pub mod events;
|
pub mod events;
|
||||||
|
@ -8,6 +10,7 @@ pub mod service;
|
||||||
|
|
||||||
use super::errors::*;
|
use super::errors::*;
|
||||||
|
|
||||||
|
#[automock]
|
||||||
#[async_trait::async_trait]
|
#[async_trait::async_trait]
|
||||||
pub trait LoginUseCase: Send + Sync {
|
pub trait LoginUseCase: Send + Sync {
|
||||||
async fn login(
|
async fn login(
|
||||||
|
|
|
@ -21,6 +21,21 @@ impl LoginUseCase for LoginService {
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
impl LoginService {
|
||||||
|
pub fn mock_service(times: Option<usize>, cmd: command::LoginCommand) -> LoginServiceObj {
|
||||||
|
let mut m = MockLoginUseCase::default();
|
||||||
|
let res = events::LoginEvent::get_event(&cmd);
|
||||||
|
|
||||||
|
if let Some(times) = times {
|
||||||
|
m.expect_login().times(times).return_const(res);
|
||||||
|
} else {
|
||||||
|
m.expect_login().return_const(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::sync::Arc::new(m)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[actix_rt::test]
|
#[actix_rt::test]
|
||||||
async fn test_service() {
|
async fn test_service() {
|
||||||
let config = argon2_creds::Config::default();
|
let config = argon2_creds::Config::default();
|
||||||
|
@ -31,9 +46,7 @@ mod tests {
|
||||||
let s = LoginService;
|
let s = LoginService;
|
||||||
|
|
||||||
{
|
{
|
||||||
let cmd =
|
let cmd = command::LoginCommand::get_cmd();
|
||||||
command::LoginCommand::new(username.into(), password.into(), &hashed_password)
|
|
||||||
.unwrap();
|
|
||||||
let res = s.login(cmd.clone()).await;
|
let res = s.login(cmd.clone()).await;
|
||||||
assert_eq!(res.success(), cmd.success());
|
assert_eq!(res.success(), cmd.success());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue