pub const TOOLS: &[&str] = &[
"auth_test",
"auth_status",
"auth_login",
"auth_logout",
"bucket_list",
"bucket_create",
"bucket_get",
"bucket_delete",
"object_list",
"object_delete",
"object_signed_url",
"object_urn",
"object_upload",
"object_upload_batch",
"object_download",
"object_info",
"object_copy",
"object_delete_batch",
"translate_start",
"translate_status",
"hub_list",
"hub_info",
"project_list",
"project_info",
"project_users_list",
"folder_contents",
"admin_project_list",
"admin_user_add",
"admin_user_remove",
"admin_user_update_role",
"admin_folder_rights",
"admin_operation_list",
"admin_operation_status",
"admin_operation_resume",
"admin_operation_cancel",
"project_create",
"project_update",
"project_archive",
"project_user_add",
"project_user_remove",
"project_user_update",
"project_users_import",
"template_list",
"template_info",
"template_create",
"template_update",
"template_archive",
"template_convert",
"folder_list",
"folder_create",
"item_info",
"item_versions",
"item_create",
"item_delete",
"item_rename",
"issue_list",
"issue_get",
"issue_create",
"issue_update",
"issue_comments_list",
"issue_comment_add",
"issue_comment_delete",
"rfi_list",
"rfi_get",
"rfi_create",
"rfi_update",
"acc_assets_list",
"asset_create",
"asset_update",
"asset_delete",
"asset_get",
"acc_submittals_list",
"submittal_create",
"submittal_update",
"acc_checklists_list",
"checklist_create",
"checklist_update",
"checklist_templates_list",
"api_request",
"admin_user_list",
"report_rfi_summary",
"report_issues_summary",
"webhook_list",
"webhook_create",
"webhook_get",
"webhook_update",
"webhook_delete",
"webhook_events",
"da_engines_list",
"da_appbundles_list",
"da_activities_list",
"da_workitem_create",
"da_workitem_status",
"da_workitems_list",
"reality_list",
"reality_create",
"reality_process",
"reality_status",
"reality_result",
"reality_delete",
"reality_formats",
];
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_tools_array_count() {
assert_eq!(
TOOLS.len(),
101,
"TOOLS array has {} entries, expected 101 — sync with get_tools() in server.rs",
TOOLS.len()
);
}
#[test]
fn test_tools_array_no_duplicates() {
let mut seen = std::collections::HashSet::new();
for tool in TOOLS {
assert!(seen.insert(tool), "Duplicate tool name: {}", tool);
}
}
#[test]
fn test_tools_array_naming_convention() {
for tool in TOOLS {
assert!(!tool.is_empty(), "Empty tool name found");
assert!(!tool.contains(' '), "Tool name contains space: {}", tool);
assert!(!tool.contains('-'), "Tool name contains dash: {}", tool);
assert!(
tool.chars()
.all(|c| c.is_ascii_lowercase() || c == '_' || c.is_ascii_digit()),
"Tool name not snake_case: {}",
tool
);
}
}
#[test]
fn test_essential_tools_present() {
let tools: Vec<&&str> = TOOLS.iter().collect();
assert!(tools.contains(&&"auth_test"));
assert!(tools.contains(&&"auth_login"));
assert!(tools.contains(&&"auth_logout"));
assert!(tools.contains(&&"bucket_list"));
assert!(tools.contains(&&"webhook_list"));
assert!(tools.contains(&&"da_engines_list"));
assert!(tools.contains(&&"reality_create"));
assert!(tools.contains(&&"issue_list"));
assert!(tools.contains(&&"hub_list"));
assert!(tools.contains(&&"admin_user_list"));
assert!(tools.contains(&&"project_update"));
assert!(tools.contains(&&"project_archive"));
assert!(tools.contains(&&"template_convert"));
}
}