// @ts-check import axios from "axios"; import MockAdapter from "axios-mock-adapter"; import { afterEach, describe, expect, it, vi } from "vitest"; import pin from "../../api-renamed/pin.js"; import { renderError } from "../../src/common/render.js"; import { data_user } from "../test-data/pin-data.js"; const mock = new MockAdapter(axios); afterEach(() => { mock.reset(); }); describe("Test /api/pin", () => { it("should render error card if username in blacklist", async () => { const req = { query: { username: "renovate-bot", repo: "convoychat", }, }; const res = { setHeader: vi.fn(), send: vi.fn(), }; mock.onPost("https://api.github.com/graphql").reply(200, data_user); await pin(req, res); expect(res.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml"); expect(res.send).toHaveBeenCalledWith( renderError({ message: "This username is blacklisted", secondaryMessage: "Please deploy your own instance", renderOptions: { show_repo_link: false }, }), ); }); it("should render error card if missing required parameters", async () => { const req = { query: {}, }; const res = { setHeader: vi.fn(), send: vi.fn(), }; mock.onPost("https://api.github.com/graphql").reply(200, data_user); await pin(req, res); expect(res.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml"); expect(res.send).toHaveBeenCalledWith( renderError({ message: 'Missing params "username", "repo" make sure you pass the parameters in URL', secondaryMessage: "/api/pin?username=USERNAME&repo=REPO_NAME", renderOptions: { show_repo_link: false }, }), ); }); });