Skip to main content
Glama
integration.test.ts3.6 kB
import { describe, it, expect, beforeAll, jest } from '@jest/globals'; import { JenkinsService } from '../tools/jenkins-service.js'; // Mock environment variables beforeAll(() => { process.env.JENKINS_URL = 'https://test-jenkins.com'; process.env.JENKINS_USERNAME = 'test-user'; process.env.JENKINS_PASSWORD = 'test-password'; }); describe('Jenkins MCP Integration Tests', () => { let jenkinsService: JenkinsService; beforeAll(() => { jenkinsService = new JenkinsService(); }); describe('JenkinsService', () => { it('should initialize with correct configuration', () => { expect(jenkinsService).toBeDefined(); }); it('should validate app names correctly', () => { // Test that the service is initialized expect(jenkinsService).toBeDefined(); // Note: We can't test actual HTTP calls without mocking axios // The validation happens inside the async methods }); it('should handle missing environment variables', () => { const originalEnv = process.env; // Clear environment variables delete process.env.JENKINS_URL; delete process.env.JENKINS_USERNAME; delete process.env.JENKINS_PASSWORD; expect(() => new JenkinsService()).toThrow('Jenkins configuration missing'); // Restore environment variables process.env = originalEnv; }); }); describe('Configuration', () => { it('should require all necessary environment variables', () => { // Test that the service was initialized successfully expect(jenkinsService).toBeDefined(); // If the service was created, it means the env vars were properly set // (because the constructor would throw if they weren't) expect(true).toBe(true); }); }); describe('Error Handling', () => { it('should handle network errors gracefully', () => { // This would require more sophisticated mocking to test properly // For now, we just verify the service can be instantiated expect(jenkinsService).toBeDefined(); }); }); }); describe('Utility Functions', () => { describe('validateAppName', () => { it('should validate app names correctly', async () => { const { validateAppName } = await import('../common/utils.js'); // Valid names expect(validateAppName('my-app')).toBe(true); expect(validateAppName('myapp123')).toBe(true); expect(validateAppName('my_app')).toBe(true); expect(validateAppName('MyApp')).toBe(true); // Invalid names expect(validateAppName('my app')).toBe(false); expect(validateAppName('my@app')).toBe(false); expect(validateAppName('my.app')).toBe(false); expect(validateAppName('')).toBe(false); }); }); describe('formatDuration', () => { it('should format durations correctly', async () => { const { formatDuration } = await import('../common/utils.js'); expect(formatDuration(0)).toBe('N/A'); expect(formatDuration(30000)).toBe('30s'); expect(formatDuration(90000)).toBe('1m 30s'); expect(formatDuration(3690000)).toBe('1h 1m 30s'); }); }); describe('sanitizeInput', () => { it('should sanitize input correctly', async () => { const { sanitizeInput } = await import('../common/utils.js'); expect(sanitizeInput(' normal-input ')).toBe('normal-input'); expect(sanitizeInput('input<script>alert()</script>')).toBe('inputscriptalert()/script'); expect(sanitizeInput('input"with\'quotes')).toBe('inputwithquotes'); }); }); });

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/gcorroto/mcp-jenkins'

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