Skip to main content
Glama

Personupplysning MCP Server

test-validation.ts5.08 kB
/** * Test validation utilities * Run with: tsx tests/test-validation.ts */ import { validateEnvironment, validateOrgNumber, validateYear, validateLimit, validateSearchQuery } from '../src/utils/validation.js'; import { validateInput, SearchCompaniesInputSchema, GetCompanyDetailsInputSchema } from '../src/utils/validators.js'; console.log('🧪 Testing Validation Utilities\n'); // Test 1: Environment Validation console.log('1. Environment Validation:'); const envResult = validateEnvironment(); console.log(` Valid: ${envResult.valid ? '✅' : '❌'}`); console.log(` Missing: ${envResult.missing.length > 0 ? envResult.missing.join(', ') : 'None'}`); console.log(` Configured: ${envResult.configured.join(', ')}\n`); // Test 2: Organization Number Validation console.log('2. Organization Number Validation:'); const validOrgNumbers = ['5560001712', '556000-1712']; const invalidOrgNumbers = ['123', 'invalid', '12345678901']; validOrgNumbers.forEach(orgNum => { try { validateOrgNumber(orgNum); console.log(` ✅ "${orgNum}" is valid`); } catch (error: any) { console.log(` ❌ "${orgNum}" failed: ${error.message}`); } }); invalidOrgNumbers.forEach(orgNum => { try { validateOrgNumber(orgNum); console.log(` ❌ "${orgNum}" should have failed but passed!`); } catch (error: any) { console.log(` ✅ "${orgNum}" correctly rejected: ${error.message}`); } }); console.log(); // Test 3: Year Validation console.log('3. Year Validation:'); const validYears = [2020, 2023, 2024]; const invalidYears = [1899, 2050, 2100]; validYears.forEach(year => { try { validateYear(year); console.log(` ✅ Year ${year} is valid`); } catch (error: any) { console.log(` ❌ Year ${year} failed: ${error.message}`); } }); invalidYears.forEach(year => { try { validateYear(year); console.log(` ❌ Year ${year} should have failed but passed!`); } catch (error: any) { console.log(` ✅ Year ${year} correctly rejected: ${error.message}`); } }); console.log(); // Test 4: Limit Validation console.log('4. Limit Validation:'); const validLimits = [1, 10, 100]; const invalidLimits = [0, -1, 101]; validLimits.forEach(limit => { try { validateLimit(limit); console.log(` ✅ Limit ${limit} is valid`); } catch (error: any) { console.log(` ❌ Limit ${limit} failed: ${error.message}`); } }); invalidLimits.forEach(limit => { try { validateLimit(limit); console.log(` ❌ Limit ${limit} should have failed but passed!`); } catch (error: any) { console.log(` ✅ Limit ${limit} correctly rejected: ${error.message}`); } }); console.log(); // Test 5: Search Query Validation console.log('5. Search Query Validation:'); const validQueries = ['Nordea', 'IKEA AB', '5560001712']; const invalidQueries = ['', 'a', '<script>alert("xss")</script>', 'SELECT * FROM companies']; validQueries.forEach(query => { try { validateSearchQuery(query); console.log(` ✅ Query "${query}" is valid`); } catch (error: any) { console.log(` ❌ Query "${query}" failed: ${error.message}`); } }); invalidQueries.forEach(query => { try { validateSearchQuery(query); console.log(` ❌ Query "${query}" should have failed but passed!`); } catch (error: any) { console.log(` ✅ Query "${query}" correctly rejected`); } }); console.log(); // Test 6: Zod Schema Validation console.log('6. Zod Schema Validation:'); console.log(' Testing SearchCompaniesInputSchema:'); try { const result = validateInput(SearchCompaniesInputSchema, { query: 'Nordea', limit: 10 }); console.log(` ✅ Valid input accepted: query="${result.query}", limit=${result.limit}`); } catch (error: any) { console.log(` ❌ Valid input rejected: ${error.message}`); } try { validateInput(SearchCompaniesInputSchema, { query: '', limit: 10 }); console.log(` ❌ Empty query should have been rejected!`); } catch (error: any) { console.log(` ✅ Empty query correctly rejected`); } console.log(); console.log(' Testing GetCompanyDetailsInputSchema:'); try { const result = validateInput(GetCompanyDetailsInputSchema, { organisationsidentitet: '5560001712' }); console.log(` ✅ Valid org number accepted: ${result.organisationsidentitet}`); } catch (error: any) { console.log(` ❌ Valid org number rejected: ${error.message}`); } try { validateInput(GetCompanyDetailsInputSchema, { organisationsidentitet: '123' }); console.log(` ❌ Invalid org number should have been rejected!`); } catch (error: any) { console.log(` ✅ Invalid org number correctly rejected`); } console.log(); // Test 7: Request ID Generation console.log('7. Request ID Generation:'); import crypto from 'crypto'; const requestIds = Array.from({ length: 5 }, () => crypto.randomUUID()); console.log(` Generated ${requestIds.length} unique request IDs:`); requestIds.forEach((id, i) => { console.log(` ${i + 1}. ${id}`); }); console.log(); console.log('✅ All validation tests completed!\n');

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/isakskogstad/personupplysning-mcp'

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