@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
66 lines ⢠2.6 kB
JavaScript
/**
* 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