Skip to main content
Glama
test-environment.ts3.03 kB
import { config } from 'dotenv'; // Load test environment variables config({ path: '.env.test' }); // Test environment configuration export const TEST_ENV = { // API Configuration FLOAT_API_KEY: process.env.FLOAT_API_KEY || 'test_key', FLOAT_API_BASE_URL: process.env.FLOAT_API_BASE_URL || 'https://api.float.com/v3', // Test Configuration NODE_ENV: 'test', LOG_LEVEL: process.env.LOG_LEVEL || 'warn', LOG_FORMAT: 'json', // Rate Limiting (relaxed for tests) RATE_LIMIT_WINDOW_MS: 60000, RATE_LIMIT_MAX_REQUESTS: 200, // Health Check (disabled for tests) HEALTH_CHECK_INTERVAL: 0, HEALTH_CHECK_TIMEOUT: 1000, // Test-specific settings TEST_TIMEOUT: 30000, TEST_RETRY_ATTEMPTS: 3, TEST_RETRY_DELAY: 1000, TEST_REAL_API: process.env.TEST_REAL_API === 'true', TEST_MOCK_MODE: process.env.TEST_MOCK_MODE === 'true', TEST_SKIP_SLOW: process.env.TEST_SKIP_SLOW === 'true', TEST_DATA_PREFIX: 'test_integration_', TEST_CLEANUP_ENABLED: process.env.TEST_CLEANUP_ENABLED !== 'false', // Test data for common scenarios TEST_CLIENT_ID: parseInt(process.env.TEST_CLIENT_ID || '1', 10), TEST_PROJECT_ID: parseInt(process.env.TEST_PROJECT_ID || '1', 10), TEST_PERSON_ID: parseInt(process.env.TEST_PERSON_ID || '1', 10), TEST_DEPARTMENT_ID: parseInt(process.env.TEST_DEPARTMENT_ID || '1', 10), TEST_PHASE_ID: parseInt(process.env.TEST_PHASE_ID || '1', 10), } as const; // Apply test environment variables export const applyTestEnvironment = (): void => { Object.entries(TEST_ENV).forEach(([key, value]) => { process.env[key] = String(value); }); }; // Validate test environment export const validateTestEnvironment = (): void => { const errors: string[] = []; if (TEST_ENV.TEST_REAL_API) { if (!process.env.FLOAT_API_KEY || process.env.FLOAT_API_KEY === 'test_key') { errors.push('FLOAT_API_KEY is required for real API tests'); } if (!process.env.FLOAT_API_BASE_URL || !process.env.FLOAT_API_BASE_URL.startsWith('https://')) { errors.push('FLOAT_API_BASE_URL must be a valid HTTPS URL'); } } if (errors.length > 0) { throw new Error(`Test environment validation failed:\n${errors.join('\n')}`); } }; // Mock environment for testing export const mockEnvironment = { FLOAT_API_KEY: 'atest_float_api_key_mock_12345=', FLOAT_API_BASE_URL: 'https://api.float.com/v3', NODE_ENV: 'test', LOG_LEVEL: 'error', LOG_FORMAT: 'json', RATE_LIMIT_WINDOW_MS: '60000', RATE_LIMIT_MAX_REQUESTS: '200', HEALTH_CHECK_INTERVAL: '0', HEALTH_CHECK_TIMEOUT: '1000', }; // Setup test environment export const setupTestEnvironment = (): void => { // Apply test environment applyTestEnvironment(); // Validate environment validateTestEnvironment(); // Set Jest timeout jest.setTimeout(TEST_ENV.TEST_TIMEOUT); }; // Teardown test environment export const teardownTestEnvironment = (): void => { // Reset environment variables if needed Object.keys(TEST_ENV).forEach((key) => { delete process.env[key]; }); };

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/asachs01/float-mcp'

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