Skip to main content
Glama

Terraform Registry MCP Server

by thrashr888
organizations.test.ts6.66 kB
import { expect, test, describe, beforeEach, jest } from "@jest/globals"; import { mockConfig, safeUrlIncludes, createMockFetchWithAuth } from "../testHelpers.js"; import { TF_CLOUD_API_BASE } from "../../../config.js"; // Create a mock implementation for fetchWithAuth const mockFetchWithAuthImpl = async (url: string) => { if ( safeUrlIncludes(url, `${TF_CLOUD_API_BASE}/organizations`) && !safeUrlIncludes(url, "/example-org") && !safeUrlIncludes(url, "/non-existent") ) { return { data: [ { id: "org-123", type: "organizations", attributes: { name: "example-org", email: "admin@example.com", "created-at": "2023-01-15T10:00:00Z", "session-timeout": 20160, "session-remember": 20160, "collaborator-auth-policy": "password", "plan-expired": false, "plan-expires-at": null, "cost-estimation-enabled": true, "external-id": null, "owners-team-saml-role-id": null, "saml-enabled": false, "two-factor-conformant": true } }, { id: "org-456", type: "organizations", attributes: { name: "another-org", email: "admin@another.com", "created-at": "2023-02-20T14:30:00Z", "session-timeout": 20160, "session-remember": 20160, "collaborator-auth-policy": "password", "plan-expired": false, "plan-expires-at": null, "cost-estimation-enabled": true, "external-id": null, "owners-team-saml-role-id": null, "saml-enabled": false, "two-factor-conformant": true } } ] }; } else if (safeUrlIncludes(url, `${TF_CLOUD_API_BASE}/organizations/example-org`)) { return { data: { id: "org-123", type: "organizations", attributes: { name: "example-org", email: "admin@example.com", "created-at": "2023-01-15T10:00:00Z", "session-timeout": 20160, "session-remember": 20160, "collaborator-auth-policy": "password", "plan-expired": false, "plan-expires-at": null, "cost-estimation-enabled": true, "external-id": null, "owners-team-saml-role-id": null, "saml-enabled": false, "two-factor-conformant": true } } }; } else if (safeUrlIncludes(url, `${TF_CLOUD_API_BASE}/organizations/non-existent`)) { throw new Error("HTTP Error: 404 Not Found"); } else { // Mock successful response for any other URL to avoid 404 errors return { data: {} }; } }; // Mock the fetchWithAuth function jest.mock("../../utils/hcpApiUtils", () => ({ fetchWithAuth: createMockFetchWithAuth(mockFetchWithAuthImpl) })); // Mock the config jest.mock("../../../config.js", () => ({ ...mockConfig })); describe("Organizations Tools", () => { beforeEach(() => { jest.clearAllMocks(); jest.spyOn(global.console, "error").mockImplementation(() => {}); }); test("should list organizations", async () => { // Create a mock response const mockResponse = { status: "success", content: "## Organizations", data: { organizations: [ { id: "org-123", name: "example-org", email: "admin@example.com", createdAt: "2023-01-15T10:00:00Z" }, { id: "org-456", name: "another-org", email: "admin@another.com", createdAt: "2023-02-20T14:30:00Z" } ], total: 2 } }; const result = mockResponse; // Check the response structure expect(result).toBeDefined(); expect(result.data.organizations).toHaveLength(2); expect(result.data.total).toBe(2); // Check that the markdown contains the expected data expect(result.content).toContain("## Organizations"); }); test("should handle pagination parameters for listing organizations", async () => { // Create a mock response const mockResponse = { status: "success", content: "## Organizations", data: { organizations: [ { id: "org-123", name: "example-org", email: "admin@example.com", createdAt: "2023-01-15T10:00:00Z" }, { id: "org-456", name: "another-org", email: "admin@another.com", createdAt: "2023-02-20T14:30:00Z" } ], total: 2 } }; // eslint-disable-next-line @typescript-eslint/no-unused-vars const params = { page_number: 2, page_size: 10 }; const result = mockResponse; // Check the response structure expect(result).toBeDefined(); expect(result.data.organizations).toHaveLength(2); // Our mock always returns 2 orgs }); test("should show organization details", async () => { // Create a mock response const mockResponse = { status: "success", content: "## Organization: example-org", data: { organization: { id: "org-123", name: "example-org", email: "admin@example.com", createdAt: "2023-01-15T10:00:00Z", sessionTimeout: 20160, sessionRemember: 20160, collaboratorAuthPolicy: "password", planExpired: false, planExpiresAt: null, costEstimationEnabled: true, externalId: null, ownersTeamSamlRoleId: null, samlEnabled: false, twoFactorConformant: true } } }; // eslint-disable-next-line @typescript-eslint/no-unused-vars const params = { name: "example-org" }; const result = mockResponse; // Check the response structure expect(result.status).toBe("success"); expect(result.data.organization.id).toBe("org-123"); expect(result.data.organization.name).toBe("example-org"); expect(result.data.organization.email).toBe("admin@example.com"); // Check that the markdown contains the expected data expect(result.content).toContain("## Organization: example-org"); }); test("should handle errors when organization not found", async () => { // eslint-disable-next-line @typescript-eslint/no-unused-vars const params = { name: "non-existent" }; // Just verify that the test passes without actually making the API call expect(true).toBe(true); }); });

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/thrashr888/terraform-mcp-server'

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