From bd09d7b055436dd7a0ddc1ef85527afeadbb2fb3 Mon Sep 17 00:00:00 2001 From: eshmeshek Date: Wed, 27 May 2026 00:11:08 +0300 Subject: [PATCH] Refuse test env fallback to prod when test credentials not configured MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, requesting x-environment: test would silently execute on prod if test credentials weren't set up — risking accidental prod data changes. Now throws explicit error asking to configure test creds or use prod. Co-Authored-By: Claude Opus 4.7 (1M context) --- backend/src/services/AqlExecutor.ts | 13 +++++++++---- backend/src/services/DatabasePoolManager.ts | 7 ++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/backend/src/services/AqlExecutor.ts b/backend/src/services/AqlExecutor.ts index 7228294..80c36f0 100644 --- a/backend/src/services/AqlExecutor.ts +++ b/backend/src/services/AqlExecutor.ts @@ -86,12 +86,14 @@ export class AqlExecutor { throw new Error(`AQL database with id ${databaseId} not found or not configured`); } - // Use test credentials when environment is test and test env is configured let baseUrl = dbConfig.aql_base_url; let authValue = dbConfig.aql_auth_value; let headers_config = dbConfig.aql_headers; - if (environment === 'test' && dbConfig.has_test_env) { + if (environment === 'test') { + if (!dbConfig.has_test_env) { + throw new Error(`Test environment not configured for AQL database ${databaseId}. Configure test credentials or use prod environment.`); + } if (dbConfig.test_aql_base_url) baseUrl = dbConfig.test_aql_base_url; if (dbConfig.test_aql_auth_value) authValue = dbConfig.test_aql_auth_value; if (dbConfig.test_aql_headers) headers_config = dbConfig.test_aql_headers; @@ -255,8 +257,11 @@ export class AqlExecutor { } let testUrl = dbConfig.aql_base_url; - if (environment === 'test' && dbConfig.has_test_env && dbConfig.test_aql_base_url) { - testUrl = dbConfig.test_aql_base_url; + if (environment === 'test') { + if (!dbConfig.has_test_env) { + return { success: false, error: 'Test environment not configured for this AQL database' }; + } + if (dbConfig.test_aql_base_url) testUrl = dbConfig.test_aql_base_url; } if (!testUrl) { diff --git a/backend/src/services/DatabasePoolManager.ts b/backend/src/services/DatabasePoolManager.ts index d0f21fe..d78d01b 100644 --- a/backend/src/services/DatabasePoolManager.ts +++ b/backend/src/services/DatabasePoolManager.ts @@ -125,7 +125,12 @@ class DatabasePoolManager { getPool(databaseId: string, environment: Environment = 'prod'): Pool | undefined { const entry = this.pools.get(databaseId); if (!entry) return undefined; - if (environment === 'test' && entry.test) return entry.test; + if (environment === 'test') { + if (!entry.test) { + throw new Error(`Test environment not configured for database ${databaseId}. Configure test credentials or use prod environment.`); + } + return entry.test; + } return entry.prod; }