Skip to main content
Glama
environment.test.ts3.47 kB
/** * Unit tests for environment configuration */ import { describe, it, expect, beforeEach } from '@jest/globals'; import { getMocoConfig } from '../../../src/config/environment'; describe('environment', () => { const originalEnv = process.env; beforeEach(() => { // Reset environment variables before each test process.env = { ...originalEnv }; }); afterAll(() => { // Restore original environment process.env = originalEnv; }); describe('getMocoConfig', () => { it('should return valid config when environment variables are set', () => { process.env.MOCO_API_KEY = 'test-api-key'; process.env.MOCO_SUBDOMAIN = 'test-company'; const config = getMocoConfig(); expect(config).toEqual({ apiKey: 'test-api-key', subdomain: 'test-company', baseUrl: 'https://test-company.mocoapp.com/api/v1' }); }); it('should throw error when MOCO_API_KEY is missing', () => { delete process.env.MOCO_API_KEY; process.env.MOCO_SUBDOMAIN = 'test-company'; expect(() => getMocoConfig()).toThrow('MOCO_API_KEY environment variable is required'); }); it('should throw error when MOCO_SUBDOMAIN is missing', () => { process.env.MOCO_API_KEY = 'test-api-key'; delete process.env.MOCO_SUBDOMAIN; expect(() => getMocoConfig()).toThrow('MOCO_SUBDOMAIN environment variable is required'); }); it('should throw error when both environment variables are missing', () => { delete process.env.MOCO_API_KEY; delete process.env.MOCO_SUBDOMAIN; expect(() => getMocoConfig()).toThrow('MOCO_API_KEY environment variable is required'); }); it('should throw error when subdomain contains invalid characters', () => { process.env.MOCO_API_KEY = 'test-api-key'; process.env.MOCO_SUBDOMAIN = 'test-company.mocoapp.com'; expect(() => getMocoConfig()).toThrow( 'MOCO_SUBDOMAIN should only contain the subdomain name (e.g., "yourcompany", not "yourcompany.mocoapp.com")' ); }); it('should throw error when subdomain contains http protocol', () => { process.env.MOCO_API_KEY = 'test-api-key'; process.env.MOCO_SUBDOMAIN = 'https://test-company'; expect(() => getMocoConfig()).toThrow( 'MOCO_SUBDOMAIN should only contain the subdomain name (e.g., "yourcompany", not "yourcompany.mocoapp.com")' ); }); it('should accept valid subdomain names', () => { process.env.MOCO_API_KEY = 'test-api-key'; // Test various valid subdomain formats const validSubdomains = [ 'company', 'test-company', 'company123', 'my_company', 'company-name-with-dashes' ]; validSubdomains.forEach(subdomain => { process.env.MOCO_SUBDOMAIN = subdomain; const config = getMocoConfig(); expect(config.subdomain).toBe(subdomain); expect(config.baseUrl).toBe(`https://${subdomain}.mocoapp.com/api/v1`); }); }); it('should handle empty string environment variables', () => { process.env.MOCO_API_KEY = ''; process.env.MOCO_SUBDOMAIN = 'test-company'; expect(() => getMocoConfig()).toThrow('MOCO_API_KEY environment variable is required'); process.env.MOCO_API_KEY = 'test-api-key'; process.env.MOCO_SUBDOMAIN = ''; expect(() => getMocoConfig()).toThrow('MOCO_SUBDOMAIN environment variable is required'); }); }); });

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/niondigital/moco-mcp'

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