Skip to main content
Glama
sondt2709

Docker MCP

by sondt2709
DockerService.test.ts3.71 kB
/** * Docker Service Tests * These tests define the behavior for DockerService class * Use TDD: Write tests first, then implement the service methods */ // Import your actual service - this will fail until you implement it // import { DockerService } from '../../services/DockerService.js'; describe('DockerService (TDD)', () => { let mockDockerode: any; beforeEach(() => { // Create mock dockerode instance for testing mockDockerode = { listContainers: jest.fn(), getContainer: jest.fn(() => ({ inspect: jest.fn(), start: jest.fn(), stop: jest.fn(), restart: jest.fn(), logs: jest.fn() })), version: jest.fn(), info: jest.fn(), }; }); describe('listContainers method', () => { it('should return formatted container list', async () => { // Arrange - Mock docker response const mockContainers = [ { Id: 'abc123def456', Names: ['/test-container'], Image: 'nginx:latest', State: 'running', Status: 'Up 2 hours', Ports: [{ PrivatePort: 80, PublicPort: 8080, Type: 'tcp' }] } ]; mockDockerode.listContainers.mockResolvedValue(mockContainers); // Act - Call the service method (to be implemented) // const dockerService = new DockerService(mockDockerode); // const result = await dockerService.listContainers(); // Assert - Define expected format const expectedFormat = { id: 'abc123def456', name: 'test-container', image: 'nginx:latest', state: 'running', status: 'Up 2 hours', ports: '80:8080/tcp' }; // TODO: Uncomment when implementing // expect(mockDockerode.listContainers).toHaveBeenCalledWith({ all: true }); // expect(result).toHaveLength(1); // expect(result[0]).toMatchObject(expectedFormat); // Placeholder validation expect(expectedFormat.id).toBe('abc123def456'); }); it('should handle empty container list', async () => { mockDockerode.listContainers.mockResolvedValue([]); // TODO: Implement and uncomment // const dockerService = new DockerService(mockDockerode); // const result = await dockerService.listContainers(); // expect(result).toEqual([]); expect(true).toBe(true); // Placeholder }); }); describe('getContainerLogs method', () => { it('should return formatted container logs', async () => { // Define expected log format for TDD const expectedLogFormat = { containerId: 'abc123', logs: expect.any(String), timestamp: expect.any(String), lines: expect.any(Number) }; expect(expectedLogFormat.containerId).toBe('abc123'); }); }); describe('getSystemInfo method', () => { it('should return formatted system information', async () => { const mockSystemInfo = { Containers: 5, ContainersRunning: 2, ContainersPaused: 0, ContainersStopped: 3, Images: 10, MemTotal: 8589934592, NCPU: 4 }; mockDockerode.info.mockResolvedValue(mockSystemInfo); // TODO: Implement and test // const dockerService = new DockerService(mockDockerode); // const result = await dockerService.getSystemInfo(); // Define expected format const expectedFormat = { containers: { total: 5, running: 2, stopped: 3 }, images: 10, memory: expect.any(String), // Human readable format cpus: 4 }; expect(expectedFormat.containers.total).toBe(5); }); }); });

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/sondt2709/docker-mcp'

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