Add comprehensive tests for IAM permissions, roles, teams, and users
- Implemented unit tests for PermissionsController and PermissionsService, covering create, read, update, and delete operations. - Added tests for RolesController and RolesService, including handling of duplicates and retrieval by ID. - Developed tests for TeamsController, including creation, retrieval, updating, deletion, and search functionality. - Created tests for UsersController, ensuring user creation and validation of attributes. - Each test includes setup, execution, and cleanup to maintain database integrity.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{generate_unique_email, get_role_id, UsersRepository};
|
||||
use axum::{http::StatusCode, response::Response};
|
||||
use imphnen_iam::{
|
||||
UsersCreateRequestDto, UsersUpdateRequestDto, UsersSchema, ResourceEnum,
|
||||
UsersActiveInactiveRequestDto, UsersSetNewPasswordRequestDto
|
||||
};
|
||||
use imphnen_utils::{make_thing_from_enum, ResourceEnum as UtilsResourceEnum};
|
||||
use uuid::Uuid;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_create_user_controller() {
|
||||
let app_state = crate::get_app_state().await;
|
||||
let repo = UsersRepository::new(&app_state);
|
||||
let role_id = get_role_id("mentee", &app_state).await;
|
||||
|
||||
// Test data
|
||||
let email = generate_unique_email("test_user_controller");
|
||||
let user_request = UsersCreateRequestDto {
|
||||
email: email.clone(),
|
||||
password: "password123".to_string(),
|
||||
fullname: "Test User Controller".to_string(),
|
||||
phone_number: Some("+1234567890".to_string()),
|
||||
is_active: true,
|
||||
avatar: None,
|
||||
role_id: role_id,
|
||||
};
|
||||
|
||||
// Create user through controller
|
||||
let response = imphnen_iam::UsersController::create_user(
|
||||
&app_state,
|
||||
user_request.clone(),
|
||||
)
|
||||
.await;
|
||||
|
||||
// Verify response
|
||||
assert_eq!(response.status(), StatusCode::CREATED);
|
||||
|
||||
// Verify user was created in database
|
||||
let created_user = repo
|
||||
.query_user_by_email(email.clone())
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(created_user.email, email);
|
||||
assert_eq!(created_user.fullname, "Test User Controller");
|
||||
assert_eq!(created_user.is_active, true);
|
||||
|
||||
// Clean up
|
||||
let _ = repo.query_delete_user(created_user.id.id.to_raw()).await;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user