Skip to main content
Glama
test-allcloud-exact.cjs5.68 kB
#!/usr/bin/env node const { spawn } = require('child_process'); const readline = require('readline'); const path = require('path'); const TEST_CASE = { name: 'AllCloud Bank Leumi Reseller-1 August 2025', credentials: { username: 'david+allcloud@umbrellacost.com', password: process.env.ALLCLOUD_PASSWORD }, requests: [ { id: 1, method: 'tools/call', params: { name: 'authenticate_user', arguments: { username: 'david+allcloud@umbrellacost.com', password: process.env.ALLCLOUD_PASSWORD } } }, { id: 2, method: 'tools/call', params: { name: 'api___invoices_caui', arguments: { userQuery: 'Bank Leumi Reseller-1 August no grouping', startDate: '2025-08-01', endDate: '2025-08-31', periodGranLevel: 'month', groupBy: 'none', costType: '["cost", "discount"]', isUnblended: 'true', customer_account_key: '22676', customer_division_id: '139' } } } ], expected: { // Value from MANUAL_ANSWERS.txt - 4 decimal places totalCost: 0.0027, accountId: '696314371547' } }; function sendRequest(proc, request) { const jsonRequest = JSON.stringify({ jsonrpc: '2.0', ...request }); proc.stdin.write(jsonRequest + '\n'); } function parseResponse(line) { try { if (line.trim().startsWith('{') && line.includes('jsonrpc')) { return JSON.parse(line); } } catch (e) {} return null; } async function runTest() { return new Promise((resolve) => { console.log('Testing: AllCloud Account (Bank Leumi Reseller-1, August 2025)'); const result = { passed: false, errors: [] }; const proc = spawn('node', [path.join(__dirname, '../dist/index.js')], { env: process.env }); const rl = readline.createInterface({ input: proc.stdout, crlfDelay: Infinity }); rl.on('line', (line) => { if (!result.passed && line.includes('"serverInfo"')) { sendRequest(proc, TEST_CASE.requests[0]); } const response = parseResponse(line); if (response && response.id) { if (response.id === 1) { if (response.result) { sendRequest(proc, TEST_CASE.requests[1]); } else if (response.error) { console.log(` ❌ Authentication failed: ${response.error.message}`); result.errors.push(`Authentication failed: ${response.error.message}`); proc.kill(); resolve(result); } } else if (response.id === 2) { if (response.result) { let data = null; if (response.result.content && response.result.content[0] && response.result.content[0].text) { const content = response.result.content[0].text; const jsonMatch = content.match(/```json\n([\s\S]*?)\n```/); if (jsonMatch) { data = JSON.parse(jsonMatch[1]); } } if (data && Array.isArray(data)) { let allPassed = true; // Check total cost (sum of all rows) const actualTotal = data.reduce((sum, row) => sum + (row.total_cost || 0), 0); // Round both to 4 decimal places for comparison const roundedActual = Math.round(actualTotal * 10000) / 10000; const roundedExpected = Math.round(TEST_CASE.expected.totalCost * 10000) / 10000; if (roundedActual !== roundedExpected) { console.log(` ❌ Total Cost: Expected ${TEST_CASE.expected.totalCost}, got ${actualTotal}`); result.errors.push('Total cost mismatch'); allPassed = false; } else { console.log(` ✅ Total Cost: ${roundedActual} (matches to 4 decimal places)`); } // Check account ID if (data[0] && data[0].account_id !== TEST_CASE.expected.accountId) { console.log(` ❌ Account ID: Expected ${TEST_CASE.expected.accountId}, got ${data[0].account_id}`); result.errors.push('Wrong account ID'); allPassed = false; } else if (data[0]) { console.log(` ✅ Account ID: ${data[0].account_id}`); } // Check customer key and division console.log(' ℹ️ Customer Key: 22676, Division: 139'); result.passed = allPassed; } else { result.errors.push('No data in response'); } } else if (response.error) { result.errors.push(`API call failed: ${response.error.message}`); } proc.kill(); resolve(result); } } }); proc.stderr.on('data', () => {}); sendRequest(proc, { jsonrpc: '2.0', method: 'initialize', params: { protocolVersion: '1.0.0', capabilities: {}, clientInfo: { name: 'test-client', version: '1.0.0' } }, id: 0 }); setTimeout(() => { if (!result.passed && result.errors.length === 0) { result.errors.push('Test timeout'); proc.kill(); resolve(result); } }, 30000); }); } runTest().then((result) => { if (result.passed) { console.log('\n✅ AllCloud test PASSED - Exact match!'); process.exit(0); } else { console.log('\n❌ AllCloud test FAILED'); process.exit(1); } });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daviddraiumbrella/invoice-monitoring'

If you have feedback or need assistance with the MCP directory API, please join our Discord server