Skip to main content
Glama
storage-utils.test.ts1.58 kB
import { describe, it, expect, vi } from "vitest"; import { safeRedisCall, safeD1Call, parseJsonSafe } from "./storage-utils.js"; import { Logger } from "../observability/logger.js"; const createLogger = () => new Logger(1); describe("storage utils", () => { it("returns fallback when Redis operation fails", async () => { const logger = createLogger(); const warnSpy = vi.spyOn(logger, "warn"); const result = await safeRedisCall(logger, { operation: "redis.test", context: { key: "sample" }, fn: async () => { throw new Error("redis down"); }, fallbackValue: false, }); expect(result).toBe(false); expect(warnSpy).toHaveBeenCalled(); }); it("rethrows when D1 operation fails", async () => { const logger = createLogger(); const errorSpy = vi.spyOn(logger, "error"); await expect( safeD1Call(logger, { operation: "d1.test", context: { query: "INSERT" }, fn: async () => { throw new Error("d1 down"); }, }) ).rejects.toThrow("d1 down"); expect(errorSpy).toHaveBeenCalled(); }); it("parses JSON safely with fallback", () => { const logger = createLogger(); const warnSpy = vi.spyOn(logger, "warn"); const parsed = parseJsonSafe<{ value: number }>("{\"value\":42}", "payload", logger); expect(parsed).toEqual({ value: 42 }); const fallback = parseJsonSafe("not json", "payload", logger, undefined, { value: 0 }); expect(fallback).toEqual({ value: 0 }); expect(warnSpy).toHaveBeenCalled(); }); });

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/hummbl-dev/mcp-server'

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