Skip to main content
Glama

hypertool-mcp

feature-flag.test.tsโ€ข3.43 kB
/** * Tests for configuration mode feature flag */ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { getFeatureFlagService } from "../../../config/featureFlagService.js"; describe("Configuration Tools Menu Feature Flag", () => { let originalEnv: NodeJS.ProcessEnv; beforeEach(() => { // Save original environment originalEnv = { ...process.env }; // Reset feature flag service const service = getFeatureFlagService(); service.reset(); }); afterEach(() => { // Restore original environment process.env = originalEnv; // Reset service again const service = getFeatureFlagService(); service.reset(); }); describe("Default Behavior", () => { it("should be disabled by default", async () => { const service = getFeatureFlagService(); await service.initialize(); expect(service.isConfigToolsMenuEnabled()).toBe(false); }); }); describe("Environment Variable Override", () => { it("should respect HYPERTOOL_ENABLE_CONFIG_TOOLS_MENU=false", async () => { process.env.HYPERTOOL_ENABLE_CONFIG_TOOLS_MENU = "false"; const service = getFeatureFlagService(); await service.initialize(); expect(service.isConfigToolsMenuEnabled()).toBe(false); }); it("should respect HYPERTOOL_ENABLE_CONFIG_TOOLS_MENU=true", async () => { process.env.HYPERTOOL_ENABLE_CONFIG_TOOLS_MENU = "true"; const service = getFeatureFlagService(); await service.initialize(); expect(service.isConfigToolsMenuEnabled()).toBe(true); }); it("should handle various truthy values", async () => { const truthyValues = ["true", "1", "yes", "on", "TRUE", "YES", "ON"]; for (const value of truthyValues) { const service = getFeatureFlagService(); service.reset(); process.env.HYPERTOOL_ENABLE_CONFIG_TOOLS_MENU = value; await service.initialize(); expect(service.isConfigToolsMenuEnabled()).toBe(true); } }); it("should handle various falsy values", async () => { const falsyValues = ["false", "0", "no", "off", "FALSE", "NO", "OFF"]; for (const value of falsyValues) { const service = getFeatureFlagService(); service.reset(); process.env.HYPERTOOL_ENABLE_CONFIG_TOOLS_MENU = value; await service.initialize(); expect(service.isConfigToolsMenuEnabled()).toBe(false); } }); }); describe("Convenience Function", () => { it("should work with isConfigToolsMenuEnabledViaService", async () => { // Import the convenience function const { isConfigToolsMenuEnabledViaService } = await import( "../../../config/featureFlagService.js" ); // Default should be false const service = getFeatureFlagService(); service.reset(); const enabled = await isConfigToolsMenuEnabledViaService(); expect(enabled).toBe(false); }); it("should respect environment variable with convenience function", async () => { process.env.HYPERTOOL_ENABLE_CONFIG_TOOLS_MENU = "false"; const { isConfigToolsMenuEnabledViaService } = await import( "../../../config/featureFlagService.js" ); const service = getFeatureFlagService(); service.reset(); const enabled = await isConfigToolsMenuEnabledViaService(); expect(enabled).toBe(false); }); }); });

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/toolprint/hypertool-mcp'

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