spawn-access-control 0.1.12

A Rust library for access control management with WebAssembly support, including role-based access control (RBAC), permissions, and audit logging.
Documentation
use crate::{
    AccessManager, Role, Resource, RateLimiter, 
    cache::OptimizedCache, distributed_cache::DistributedCache
};
use tokio;

#[tokio::test]
async fn test_async_access_control() {
    let manager = AsyncAccessManager::new();
    let admin_role = Role::new("admin", None);
    let resource = Resource::new("secure_file", vec!["admin".to_string()]);
    let control = AccessControl::new();
    
    manager.add_access_control(control).await.unwrap();
    assert!(manager.check_access(&resource).await.unwrap());
    
    let metrics = manager.get_metrics().await;
    assert_eq!(metrics.access_checks, 1);
}

#[test]
fn test_distributed_cache() {
    let cache = OptimizedCache::new(1000);
    cache.insert("test_key".to_string(), true);
    assert_eq!(cache.get("test_key"), Some(true));
}

#[test]
fn test_role_hierarchy() {
    let user_role = Role::new("user", None);
    let admin_role = Role::new("admin", Some(Box::new(user_role.clone())));
    let super_admin = Role::new("super_admin", Some(Box::new(admin_role.clone())));
    
    assert!(super_admin.is_higher_or_equal(&user_role));
    assert!(super_admin.is_higher_or_equal(&admin_role));
}

#[test]
fn test_audit_logging() {
    let event = AuditEvent::new(
        EventType::AccessAttempt,
        "test_user",
        "test_resource",
        true
    ).with_details("Test access attempt".to_string());
    
    assert!(event.success);
    assert_eq!(event.user, "test_user");
}