pub mod builder;
pub mod core;
pub mod operations;
pub mod registration;
pub mod schema_management;
#[cfg(test)]
pub mod tests;
pub use core::ScimServer;
pub use builder::{ScimServerBuilder, ScimServerConfig, TenantStrategy};
#[cfg(test)]
mod integration_tests {
use super::*;
use crate::resource::{RequestContext, ScimOperation};
use serde_json::json;
#[tokio::test]
async fn test_module_integration() {
let provider = tests::TestProvider::new();
let mut server = ScimServer::new(provider).expect("Failed to create server");
let user_schema = tests::create_test_user_schema();
let user_handler = tests::create_user_resource_handler(user_schema);
server
.register_resource_type(
"User",
user_handler,
vec![ScimOperation::Create, ScimOperation::Read],
)
.expect("Registration should work");
let context = RequestContext::new("integration-test".to_string());
let user_data = json!({"userName": "integration_user"});
let created = server
.create_resource("User", user_data, &context)
.await
.expect("Create operation should work");
assert_eq!(created.resource_type, "User");
assert_eq!(created.get_username(), Some("integration_user"));
let schemas = server.get_all_schemas();
assert!(!schemas.is_empty(), "Should have registered schemas");
let user_schema = server.get_resource_schema("User");
assert!(user_schema.is_ok(), "Should be able to get User schema");
}
}