cloudinary-mcp-server

by yoavniran
Verified
import { createCloudinaryMock } from "../../test/cloudinary.mock"; import getDeleteTool from "./deleteAssetTool.js"; describe("deleteAssetTool", () => { let cloudinaryMock; let deleteTool; global.fetch = vi.fn(); beforeEach(() => { cloudinaryMock = createCloudinaryMock(); deleteTool = getDeleteTool(cloudinaryMock); vi.clearAllMocks(); }); it("should delete asset by publicId", async () => { const mockResult = { deleted: { "test123": "deleted" } }; cloudinaryMock.api.delete_resources.mockResolvedValue(mockResult); const result = await deleteTool({ publicId: "test123", }); expect(cloudinaryMock.api.delete_resources).toHaveBeenCalledWith("test123"); expect(result.content[0].text).toContain("Successfully deleted asset: 'test123'"); expect(result.isError).toBe(false); }); it("should return error if deletion fails for nonexistent public ID", async () => { const mockResult = { deleted: { "test123": "not_found" } }; cloudinaryMock.api.delete_resources.mockResolvedValue(mockResult); const result = await deleteTool({ publicId: "test123", }); expect(result.content[0].text).toContain("Failed to delete asset with publicId: 'test123'"); expect(result.isError).toBe(true); expect(result.content[0].text).toContain(`(cloud: ${cloudinaryMock.config().cloud_name}, key: ${cloudinaryMock.config().api_key.slice(0, 4)}...)`) }); it("should return error when neither publicId nor assetId is provided", async () => { const result = await deleteTool({}); expect(result.content[0].text).toContain("Must provide either publicId or assetId to delete"); expect(result.isError).toBe(true); expect(result.content[0].text).toContain(`(cloud: ${cloudinaryMock.config().cloud_name}, key: ${cloudinaryMock.config().api_key.slice(0, 4)}...)`) }); it("should handle API errors", async () => { cloudinaryMock.api.delete_resources.mockRejectedValue(new Error("Permission denied")); const result = await deleteTool({ publicId: "test123", }); expect(result.content[0].text).toContain("Error deleting asset: Permission denied"); expect(result.isError).toBe(true); expect(result.content[0].text).toContain(`(cloud: ${cloudinaryMock.config().cloud_name}, key: ${cloudinaryMock.config().api_key.slice(0, 4)}...)`) }); });