Skip to main content
Glama
configuration-integration.test.ts11 kB
/** * Configuration Integration Tests * * Tests configuration modes and feature toggles in integrated environment */ import { getServerConfig } from '../../src/config/server-config.js'; import { getWordPressConfig, validateWordPressConfig } from '../../src/config/wordpress-config.js'; describe('Configuration Integration Tests', () => { const originalEnv = process.env; beforeEach(() => { // Reset environment before each test process.env = { ...originalEnv }; }); afterAll(() => { // Restore original environment process.env = originalEnv; }); describe('Configuration Mode Switching', () => { it('should switch between all configuration modes', () => { const modes = ['essential', 'standard', 'advanced', 'full']; modes.forEach(mode => { process.env.ELEMENTOR_MCP_MODE = mode; const config = getServerConfig(); expect(config.mode).toBe(mode); expect(config.basicWordPressOperations).toBe(true); expect(config.basicElementorOperations).toBe(true); }); }); it('should enable appropriate features for each mode', () => { // Essential mode process.env.ELEMENTOR_MCP_MODE = 'essential'; const essentialConfig = getServerConfig(); expect(essentialConfig.basicWordPressOperations).toBe(true); expect(essentialConfig.basicElementorOperations).toBe(true); expect(essentialConfig.sectionContainerCreation).toBe(false); expect(essentialConfig.templateManagement).toBe(false); // Standard mode process.env.ELEMENTOR_MCP_MODE = 'standard'; const standardConfig = getServerConfig(); expect(standardConfig.basicWordPressOperations).toBe(true); expect(standardConfig.sectionContainerCreation).toBe(true); expect(standardConfig.widgetAddition).toBe(true); expect(standardConfig.templateManagement).toBe(false); // Advanced mode process.env.ELEMENTOR_MCP_MODE = 'advanced'; const advancedConfig = getServerConfig(); expect(advancedConfig.basicWordPressOperations).toBe(true); expect(advancedConfig.performanceOptimization).toBe(true); expect(advancedConfig.advancedElementOperations).toBe(true); expect(advancedConfig.templateManagement).toBe(false); // Full mode process.env.ELEMENTOR_MCP_MODE = 'full'; const fullConfig = getServerConfig(); expect(fullConfig.basicWordPressOperations).toBe(true); expect(fullConfig.templateManagement).toBe(true); expect(fullConfig.globalSettings).toBe(true); expect(fullConfig.customFieldsIntegration).toBe(true); }); }); describe('Feature Toggle Integration', () => { it('should override individual features', () => { process.env.ELEMENTOR_MCP_MODE = 'standard'; process.env.ELEMENTOR_ENABLE_TEMPLATES = 'true'; process.env.ELEMENTOR_ENABLE_GLOBAL_SETTINGS = 'true'; const config = getServerConfig(); expect(config.mode).toBe('standard'); expect(config.templateManagement).toBe(true); expect(config.globalSettings).toBe(true); }); it('should respect ELEMENTOR_ENABLE_ALL flag', () => { process.env.ELEMENTOR_ENABLE_ALL = 'true'; const config = getServerConfig(); expect(config.mode).toBe('full'); expect(config.basicWordPressOperations).toBe(true); expect(config.basicElementorOperations).toBe(true); expect(config.sectionContainerCreation).toBe(true); expect(config.widgetAddition).toBe(true); expect(config.elementManagement).toBe(true); expect(config.pageStructure).toBe(true); expect(config.performanceOptimization).toBe(true); expect(config.advancedElementOperations).toBe(true); expect(config.templateManagement).toBe(true); expect(config.globalSettings).toBe(true); }); it('should respect ELEMENTOR_MINIMAL_MODE flag', () => { process.env.ELEMENTOR_MINIMAL_MODE = 'true'; const config = getServerConfig(); expect(config.mode).toBe('essential'); expect(config.basicWordPressOperations).toBe(true); expect(config.basicElementorOperations).toBe(true); expect(config.sectionContainerCreation).toBe(false); }); }); describe('WordPress Configuration Integration', () => { it('should validate complete WordPress configuration', () => { process.env.WORDPRESS_BASE_URL = 'https://test-site.com'; process.env.WORDPRESS_USERNAME = 'testuser'; process.env.WORDPRESS_APPLICATION_PASSWORD = 'test-app-password'; const config = getWordPressConfig(); expect(config).not.toBeNull(); expect(config?.baseUrl).toBe('https://test-site.com'); expect(config?.username).toBe('testuser'); expect(config?.applicationPassword).toBe('test-app-password'); expect(() => validateWordPressConfig(config!)).not.toThrow(); }); it('should handle missing WordPress configuration gracefully', () => { delete process.env.WORDPRESS_BASE_URL; delete process.env.WORDPRESS_USERNAME; delete process.env.WORDPRESS_APPLICATION_PASSWORD; const config = getWordPressConfig(); expect(config).toBeNull(); }); it('should validate WordPress configuration fields', () => { const validConfig = { baseUrl: 'https://valid-site.com', username: 'validuser', applicationPassword: 'valid-password' }; expect(() => validateWordPressConfig(validConfig)).not.toThrow(); const invalidConfigs = [ { baseUrl: '', username: 'user', applicationPassword: 'pass' }, { baseUrl: 'https://site.com', username: '', applicationPassword: 'pass' }, { baseUrl: 'https://site.com', username: 'user', applicationPassword: '' }, { baseUrl: 'not-a-url', username: 'user', applicationPassword: 'pass' } ]; invalidConfigs.forEach(config => { expect(() => validateWordPressConfig(config)).toThrow(); }); }); }); describe('Configuration Helper Methods', () => { it('should list enabled features', () => { process.env.ELEMENTOR_MCP_MODE = 'full'; const config = getServerConfig(); const enabledFeatures = config.getEnabledFeatures(); expect(Array.isArray(enabledFeatures)).toBe(true); expect(enabledFeatures.length).toBeGreaterThan(0); expect(enabledFeatures).toContain('basicWordPressOperations'); expect(enabledFeatures).toContain('basicElementorOperations'); expect(enabledFeatures).toContain('templateManagement'); }); it('should list disabled features', () => { process.env.ELEMENTOR_MCP_MODE = 'essential'; const config = getServerConfig(); const disabledFeatures = config.getDisabledFeatures(); expect(Array.isArray(disabledFeatures)).toBe(true); expect(disabledFeatures.length).toBeGreaterThan(0); expect(disabledFeatures).toContain('sectionContainerCreation'); expect(disabledFeatures).toContain('templateManagement'); }); it('should count total enabled features', () => { const modes = ['essential', 'standard', 'advanced', 'full']; const expectedCounts = { essential: 2, standard: 6, advanced: 8, full: 12 }; modes.forEach(mode => { process.env.ELEMENTOR_MCP_MODE = mode; const config = getServerConfig(); const count = config.getTotalEnabledFeatures(); expect(count).toBeGreaterThan(0); expect(count).toBe(expectedCounts[mode as keyof typeof expectedCounts]); }); }); it('should serialize configuration to JSON', () => { process.env.ELEMENTOR_MCP_MODE = 'standard'; const config = getServerConfig(); const json = config.toJSON(); expect(json).toBeDefined(); expect(json.mode).toBe('standard'); expect(json.features).toBeDefined(); expect(json.features.basicWordPressOperations).toBe(true); expect(json.features.basicElementorOperations).toBe(true); expect(json.totalEnabledFeatures).toBe(6); }); }); describe('Configuration Persistence', () => { it('should maintain configuration across multiple accesses', () => { process.env.ELEMENTOR_MCP_MODE = 'advanced'; const config1 = getServerConfig(); const config2 = getServerConfig(); expect(config1.mode).toBe(config2.mode); expect(config1.basicWordPressOperations).toBe(config2.basicWordPressOperations); expect(config1.performanceOptimization).toBe(config2.performanceOptimization); }); it('should reflect environment changes', () => { process.env.ELEMENTOR_MCP_MODE = 'essential'; const config1 = getServerConfig(); expect(config1.mode).toBe('essential'); process.env.ELEMENTOR_MCP_MODE = 'full'; const config2 = getServerConfig(); expect(config2.mode).toBe('full'); }); }); describe('Configuration Edge Cases', () => { it('should handle invalid mode gracefully', () => { process.env.ELEMENTOR_MCP_MODE = 'invalid-mode'; const config = getServerConfig(); // Should default to standard mode expect(['essential', 'standard', 'advanced', 'full']).toContain(config.mode); }); it('should handle conflicting environment variables', () => { process.env.ELEMENTOR_MCP_MODE = 'essential'; process.env.ELEMENTOR_ENABLE_ALL = 'true'; // This should override const config = getServerConfig(); expect(config.mode).toBe('full'); }); it('should handle case-insensitive mode names', () => { const modes = ['FULL', 'Full', 'fUlL']; modes.forEach(mode => { process.env.ELEMENTOR_MCP_MODE = mode; const config = getServerConfig(); expect(config.mode).toBe('full'); }); }); }); describe('Integration with Other Components', () => { it('should work with WordPress configuration when both are set', () => { process.env.ELEMENTOR_MCP_MODE = 'full'; process.env.WORDPRESS_BASE_URL = 'https://integrated-test.com'; process.env.WORDPRESS_USERNAME = 'integrationuser'; process.env.WORDPRESS_APPLICATION_PASSWORD = 'integration-password'; const serverConfig = getServerConfig(); const wpConfig = getWordPressConfig(); expect(serverConfig).toBeDefined(); expect(wpConfig).not.toBeNull(); expect(serverConfig.mode).toBe('full'); expect(wpConfig?.baseUrl).toBe('https://integrated-test.com'); }); it('should allow server configuration without WordPress', () => { process.env.ELEMENTOR_MCP_MODE = 'standard'; delete process.env.WORDPRESS_BASE_URL; delete process.env.WORDPRESS_USERNAME; delete process.env.WORDPRESS_APPLICATION_PASSWORD; const serverConfig = getServerConfig(); const wpConfig = getWordPressConfig(); expect(serverConfig).toBeDefined(); expect(serverConfig.mode).toBe('standard'); expect(wpConfig).toBeNull(); }); }); });

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/mbrown1837/Ultimate-Elementor-MCP'

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