#!/usr/bin/env node /** * Test Provider Registration Tool * Verifies the public_create_providerregister tool matches the curl request parameters */ console.log('๐Ÿ” Testing Provider Registration Tool...\n'); // Import the MCP server modules import('./src/tools/ToolGenerator.js').then(async ({ ToolGenerator }) => { import('./src/proxy/ApiClient.js').then(async ({ ApiClient }) => { import('./src/auth/AuthManager.js').then(async ({ AuthManager }) => { import('./src/config/ConfigManager.js').then(async ({ ConfigManager }) => { try { console.log('๐Ÿ“‹ Loading MCP server components...'); // Initialize components const config = new ConfigManager(); const authManager = new AuthManager(null, config.getAll(true)); const apiClient = new ApiClient(config.getAll(true), authManager); const toolGenerator = new ToolGenerator(apiClient, authManager); console.log('โœ… Components loaded successfully\n'); // Generate tools console.log('๐Ÿ”ง Generating tools...'); const tools = toolGenerator.generateAllTools(); // Find the provider registration tool const providerRegisterTool = tools.find(tool => tool.name === 'public_create_providerregister' || tool.name.includes('providerregister') || (tool.name.includes('provider') && tool.name.includes('register')) ); if (providerRegisterTool) { console.log('โœ… Found Provider Registration Tool:'); console.log(`Tool Name: ${providerRegisterTool.name}`); console.log(`Description: ${providerRegisterTool.description}`); console.log(''); // Check parameters const properties = providerRegisterTool.inputSchema?.properties || {}; const required = providerRegisterTool.inputSchema?.required || []; console.log('๐Ÿ“‹ Tool Parameters:'); console.log('Required Parameters:'); required.forEach(param => { const prop = properties[param]; console.log(` - ${param}: ${prop?.type || 'unknown'} (${prop?.description || 'no description'})`); }); console.log('\nOptional Parameters:'); Object.keys(properties).filter(param => !required.includes(param)).forEach(param => { const prop = properties[param]; console.log(` - ${param}: ${prop?.type || 'unknown'} (${prop?.description || 'no description'})`); }); // Compare with curl request parameters console.log('\n๐Ÿ” Comparing with curl request parameters:'); const curlParams = [ 'firstName', 'lastName', 'emailAddress', 'textMessageNumber', 'accessRights', 'username', 'newUserPassword', 'confirm_password', 'company_name', 'on_your_domain', 'dummy' ]; const toolParams = Object.keys(properties); console.log('\nCurl parameters vs Tool parameters:'); curlParams.forEach(param => { const inTool = toolParams.includes(param); const status = inTool ? 'โœ…' : 'โŒ'; console.log(`${status} ${param} - ${inTool ? 'Found in tool' : 'Missing from tool'}`); }); console.log('\nTool parameters not in curl:'); toolParams.filter(param => !curlParams.includes(param)).forEach(param => { console.log(`โš ๏ธ ${param} - Extra parameter in tool`); }); // Test parameter validation console.log('\n๐Ÿงช Testing parameter validation:'); const testData = { firstName: "Test", lastName: "Provider", emailAddress: "test@example.com", textMessageNumber: "(555) 123-4567", accessRights: { admin: true, practitioner: false, patientPortal: false }, username: "testprovider", newUserPassword: "TestPassword123!", confirm_password: "TestPassword123!", company_name: "Test Company", on_your_domain: true, dummy: "true" }; // Check if all required parameters are present const missingRequired = required.filter(param => !(param in testData)); if (missingRequired.length === 0) { console.log('โœ… All required parameters present in test data'); } else { console.log(`โŒ Missing required parameters: ${missingRequired.join(', ')}`); } console.log('\nโœ… Provider Registration Tool verification complete!'); } else { console.log('โŒ Provider Registration Tool NOT FOUND!'); // Show tools that might be related const relatedTools = tools.filter(tool => tool.name.includes('provider') || tool.name.includes('register') ); console.log(`\n๐Ÿ” Found ${relatedTools.length} related tools:`); relatedTools.forEach(tool => { console.log(` - ${tool.name}: ${tool.description}`); }); } } catch (error) { console.error('โŒ Error:', error.message); console.error(error.stack); } }).catch(error => { console.error('โŒ Error loading ConfigManager:', error.message); }); }).catch(error => { console.error('โŒ Error loading AuthManager:', error.message); }); }).catch(error => { console.error('โŒ Error loading ApiClient:', error.message); }); }).catch(error => { console.error('โŒ Error loading ToolGenerator:', error.message); });