Files
imphnen-backend-service/tests/src/iam/users/users_controller_test.rs
T
MythEclipse 7056f8c8a6 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.
2025-09-25 22:06:21 +07:00

52 lines
1.5 KiB
Rust

#[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;
}
}