Skip to main content
Glama
GitlabRawApiTool.test.ts1.86 kB
import { describe, it, expect, jest, beforeEach } from "@jest/globals"; import dotenv from "dotenv"; import * as gitlabClientFactory from "../../utils/gitlabClientFactory"; import { GitlabRawApiTool } from "../GitlabRawApiTool"; import type { Context, ContentResult, TextContent } from "fastmcp"; dotenv.config(); describe("GitlabRawApiTool", () => { const tool = GitlabRawApiTool; const mockContext = {} as Context<Record<string, unknown> | undefined>; // Create mock client instance const mockClient = { apiRequest: jest.fn() as any, isValidResponse: jest.fn() as any, }; beforeEach(() => { jest.restoreAllMocks(); // Mock factory to return our mock client jest .spyOn(gitlabClientFactory, "createGitlabClientFromContext") .mockReturnValue(mockClient as any); }); it("should fetch projects list", async () => { const mockProjects = [ { id: 1, name: "Project Alpha" }, { id: 2, name: "Project Beta" }, ]; mockClient.apiRequest.mockResolvedValue(mockProjects); mockClient.isValidResponse.mockReturnValue(true); const input = { endpoint: "/projects", method: "GET" as const, params: { membership: true, per_page: 5 }, }; const result = (await tool.execute(input, mockContext)) as ContentResult; expect(result).toHaveProperty("content"); if (result.isError) { expect((result.content[0] as TextContent).text).toContain( "GitLab MCP 工具调用异常", ); } else { const responseText = (result.content[0] as TextContent).text; const parsedResponse = JSON.parse(responseText); expect(Array.isArray(parsedResponse)).toBe(true); if (parsedResponse.length > 0) { expect(parsedResponse[0]).toHaveProperty("id"); expect(parsedResponse[0]).toHaveProperty("name"); } } }); });

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/ZephyrDeng/mcp-server-gitlab'

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