UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

66 lines • 2.6 kB
#!/usr/bin/env node /** * Test that SQLBuilder uses view-only mode by default */ import { SQLBuilder } from '../intelligent-query-engine/SQLBuilder.js'; import { FieldCatalog } from '../intelligent-query-engine/FieldCatalog.js'; console.log('Testing SQLBuilder View-Only Mode\n'); console.log('='.repeat(60)); // Create field catalog and SQL builder const fieldCatalog = new FieldCatalog(); const sqlBuilder = new SQLBuilder(fieldCatalog); // Test query const testQuery = { find: 'flags', select: ['flag_key', 'environment_key', 'enabled'], where: [ { field: 'project_id', operator: '=', value: '20224828075' }, { field: 'enabled', operator: '=', value: 1 } ] }; async function runTest() { console.log('šŸ“‹ Test Query:'); console.log(JSON.stringify(testQuery, null, 2)); console.log('\n' + '-'.repeat(40) + '\n'); try { const sql = await sqlBuilder.buildSQL(testQuery); console.log('SQL Generated:'); console.log(sql); // Check if it's using views if (sql.includes('_view')) { console.log('\nSUCCESS: SQLBuilder is using VIEW-ONLY mode!'); console.log(' The query targets a view, not base tables.'); } else { console.log('\nFAILURE: SQLBuilder is NOT using views!'); console.log(' The query appears to target base tables.'); } } catch (error) { console.log('Error:', error instanceof Error ? error.message : String(error)); // If the error is about fields not being in views, that's actually good! if (error instanceof Error && error.message.includes('not available in any view')) { console.log('\nGOOD: SQLBuilder correctly rejected query for missing view fields!'); } } console.log('\n' + '='.repeat(60)); // Now test with a field that doesn't exist in views console.log('\nšŸ“‹ Test 2: Query with non-view field'); const badQuery = { find: 'flags', select: ['flag_key', 'some_field_not_in_views'], where: [] }; try { const sql = await sqlBuilder.buildSQL(badQuery); console.log('UNEXPECTED: Query succeeded when it should have failed!'); console.log('Generated SQL:', sql); } catch (error) { console.log('EXPECTED ERROR:', error instanceof Error ? error.message : String(error)); console.log(' This confirms view-only mode is enforced!'); } console.log('\nTesting complete!'); } runTest().catch(console.error); //# sourceMappingURL=test-sql-builder-view-mode.js.map