mod db_backend_tests {
#![allow(clippy::unwrap_used)] #![allow(clippy::cast_precision_loss)] #![allow(clippy::cast_sign_loss)] #![allow(clippy::cast_possible_truncation)] #![allow(clippy::cast_possible_wrap)] #![allow(clippy::missing_panics_doc)] #![allow(clippy::missing_errors_doc)] #![allow(missing_docs)] #![allow(clippy::items_after_statements)]
use super::super::db_backend::*;
#[test]
fn test_parse_permission_valid() {
let (resource, action) = parse_permission("content:write").unwrap();
assert_eq!(resource, "content");
assert_eq!(action, "write");
}
#[test]
fn test_parse_permission_wildcard() {
let (resource, action) = parse_permission("*:*").unwrap();
assert_eq!(resource, "*");
assert_eq!(action, "*");
}
#[test]
fn test_parse_permission_invalid() {
assert!(
matches!(parse_permission("no_colon"), Err(RbacDbError::InvalidInput(_))),
"expected InvalidInput for permission without colon, got: {:?}",
parse_permission("no_colon")
);
}
#[test]
fn test_rbac_db_error_display() {
assert_eq!(format!("{}", RbacDbError::RoleNotFound), "Role not found");
assert_eq!(format!("{}", RbacDbError::RoleDuplicate), "Role already exists");
}
}
#[cfg(test)]
#[allow(clippy::unwrap_used)] mod router_construction {
use std::sync::Arc;
use sqlx::PgPool;
use crate::api::rbac_management::{
RbacManagementState, db_backend::RbacDbBackend, rbac_management_router,
};
fn lazy_pool() -> PgPool {
PgPool::connect_lazy("postgres://test:test@localhost/test").unwrap()
}
#[tokio::test]
async fn rbac_router_constructs() {
let state = RbacManagementState {
db: Arc::new(RbacDbBackend::new(lazy_pool())),
};
let _ = rbac_management_router(state);
}
}