#[cfg(test)]
mod hierarchy_feature_tests {
use crate::authorization_enhanced::service::AuthorizationService;
#[tokio::test]
async fn test_hierarchy_features_on_existing_roles() {
println!("๐งช Testing new role-system v1.1.1 hierarchy features on existing roles");
let service = AuthorizationService::new().await.unwrap();
println!("โ
Testing Role hierarchy methods on standard roles:");
if let Ok(Some(admin)) = service.role_system.get_role("admin").await {
println!(" ๐ Found admin role!");
if let Some(parent_id) = admin.parent_role_id() {
println!(" ๐ Admin parent role: {}", parent_id);
} else {
println!(" ๐ Admin has no parent role (root role)");
}
let depth = admin.hierarchy_depth();
let is_root = admin.is_root_role();
let is_leaf = admin.is_leaf_role();
let children = admin.child_role_ids();
println!(" ๐ Admin role metadata:");
println!(" - Depth: {}", depth);
println!(" - Is root: {}", is_root);
println!(" - Is leaf: {}", is_leaf);
println!(" - Children: {:?}", children);
}
println!("โ
Testing AuthorizationService hierarchy methods:");
let hierarchy = service.get_role_hierarchy("admin").await.unwrap();
println!(" ๐ Admin hierarchy: {:?}", hierarchy);
let metadata = service.get_role_metadata("admin").await.unwrap();
println!(" ๐ Admin metadata: {}", metadata);
println!("๐ Role-system v1.1.1 hierarchy features confirmed working!");
}
#[tokio::test]
async fn test_parent_role_id_api_integration() {
println!("๐ Testing parent_role_id() integration with API endpoints");
let service = AuthorizationService::new().await.unwrap();
if let Ok(Some(role)) = service.role_system.get_role("admin").await {
let parent_id = role.parent_role_id();
println!(" โ
parent_role_id() method available: {:?}", parent_id);
println!(" โ
API endpoints can now return proper parent_id field!");
let depth = role.hierarchy_depth();
let is_root = role.is_root_role();
println!(" ๐ Additional hierarchy data available:");
println!(" - Hierarchy depth: {}", depth);
println!(" - Is root role: {}", is_root);
}
println!("โ
API integration capabilities confirmed!");
}
#[tokio::test]
async fn test_all_new_hierarchy_methods() {
println!("๐ง Testing all new hierarchy methods from role-system v1.1.1");
let service = AuthorizationService::new().await.unwrap();
if let Ok(Some(role)) = service.role_system.get_role("admin").await {
println!(" ๐งช Testing new Role methods:");
let parent = role.parent_role_id();
println!(" - parent_role_id(): {:?}", parent);
let depth = role.hierarchy_depth();
println!(" - hierarchy_depth(): {}", depth);
let is_root = role.is_root_role();
println!(" - is_root_role(): {}", is_root);
let is_leaf = role.is_leaf_role();
println!(" - is_leaf_role(): {}", is_leaf);
let children = role.child_role_ids();
println!(" - child_role_ids(): {:?}", children);
println!(" โ
All new Role hierarchy methods are available!");
}
println!(" ๐งช Testing new AuthorizationService methods:");
let hierarchy = service.get_role_hierarchy("admin").await;
println!(" - get_role_hierarchy(): {:?}", hierarchy);
let metadata = service.get_role_metadata("admin").await;
println!(" - get_role_metadata(): {:?}", metadata);
println!(" โ
All new AuthorizationService hierarchy methods working!");
println!("๐ Complete validation of role-system v1.1.1 hierarchy features successful!");
}
}