63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
import type { CliDeps } from "../cli/deps.js";
|
|
import type { RuntimeEnv } from "../runtime.js";
|
|
|
|
import { webhookCommand } from "./webhook.js";
|
|
|
|
const runtime: RuntimeEnv = {
|
|
log: vi.fn(),
|
|
error: vi.fn(),
|
|
exit: vi.fn(() => {
|
|
throw new Error("exit");
|
|
}),
|
|
};
|
|
|
|
const deps: CliDeps = {
|
|
ensurePortAvailable: vi.fn().mockResolvedValue(undefined),
|
|
startWebhook: vi.fn().mockResolvedValue({ server: true }),
|
|
};
|
|
|
|
describe("webhookCommand", () => {
|
|
it("throws on invalid port", async () => {
|
|
await expect(() =>
|
|
webhookCommand({ port: "70000", path: "/hook" }, deps, runtime),
|
|
).rejects.toThrow("Port must be between 1 and 65535");
|
|
});
|
|
|
|
it("logs dry run instead of starting server", async () => {
|
|
runtime.log.mockClear();
|
|
const res = await webhookCommand(
|
|
{ port: "42873", path: "/hook", reply: "dry-run", ingress: "none" },
|
|
deps,
|
|
runtime,
|
|
);
|
|
expect(res).toBeUndefined();
|
|
expect(runtime.log).toHaveBeenCalledWith(
|
|
"[dry-run] would start webhook on port 42873 path /hook",
|
|
);
|
|
});
|
|
|
|
it("starts webhook when valid", async () => {
|
|
const res = await webhookCommand(
|
|
{
|
|
port: "42873",
|
|
path: "/hook",
|
|
reply: "ok",
|
|
verbose: true,
|
|
ingress: "none",
|
|
},
|
|
deps,
|
|
runtime,
|
|
);
|
|
expect(deps.startWebhook).toHaveBeenCalledWith(
|
|
42873,
|
|
"/hook",
|
|
"ok",
|
|
true,
|
|
runtime,
|
|
);
|
|
expect(res).toEqual({ server: true });
|
|
});
|
|
});
|