UNPKG

wgc

Version:

The official CLI tool to manage the GraphQL Federation Platform Cosmo

134 lines 4.96 kB
import { describe, it, expect } from 'vitest'; import { validateRouterConfig } from '../verify-router-config.js'; describe('validateRouterConfig', () => { describe('valid configs', () => { it('should validate correct JSON config', () => { const validConfig = JSON.stringify({ version: '1', listen_addr: 'localhost:8080', graph: { token: 'test-token', }, }); const result = validateRouterConfig(validConfig); expect(result).toMatchObject({ isValid: true, }); }); it('should validate correct YAML config', () => { const validConfig = ` version: '1' listen_addr: localhost:8080 graph: token: test-token `; const result = validateRouterConfig(validConfig); expect(result).toMatchObject({ isValid: true, }); }); it('should validate correct rate limiting config', () => { const validConfig = JSON.stringify({ rate_limit: { enabled: true, storage: { cluster_enabled: false, // Set to true if using a Redis Cluster urls: ['redis://localhost:6379'], key_prefix: 'cosmo_rate_limit', }, strategy: 'simple', simple_strategy: { rate: 100, burst: 200, period: '1s', }, }, }); const result = validateRouterConfig(validConfig); expect(result).toMatchObject({ isValid: true, }); }); }); describe('invalid configs', () => { it('should reject invalid JSON', () => { const invalidConfig = '}'; const result = validateRouterConfig(invalidConfig); expect(result).toMatchObject({ isValid: false, errors: [ { message: 'Invalid config format. Please provide valid JSON or YAML.', }, ], }); }); it('should reject invalid YAML', () => { const invalidConfig = 'invalid: yaml: :'; const result = validateRouterConfig(invalidConfig); expect(result).toMatchObject({ isValid: false, errors: [ { message: 'Invalid config format. Please provide valid JSON or YAML.', }, ], }); }); it('should reject config with invalid listen_addr', () => { const invalidConfig = JSON.stringify({ // listen_addr is not a string listen_addr: true, }); const result = validateRouterConfig(invalidConfig); expect(result).toMatchObject({ isValid: false, errors: [ { instancePath: '/listen_addr', keyword: 'type', message: 'must be string', params: { type: 'string', }, schemaPath: '#/properties/listen_addr/type', }, ], }); }); it('should reject config with invalid rate limiting config', () => { const invalidConfig = JSON.stringify({ rate_limit: { enabled: true, storage: { cluster_enabled: false, // Set to true if using a Redis Cluster urls: ['redis://localhost:6379'], key_prefix: 'cosmo_rate_limit', }, strategy: 'complex', simple_strategy: { rate: 100, burst: 200, period: '1s', }, }, }); const result = validateRouterConfig(invalidConfig); expect(result).toMatchObject({ isValid: false, errors: [ { instancePath: '/rate_limit/strategy', keyword: 'enum', message: 'must be equal to one of the allowed values', params: { allowedValues: ['simple'], }, schemaPath: '#/properties/rate_limit/properties/strategy/enum', }, ], }); }); }); }); //# sourceMappingURL=verify-router-config.test.js.map