IKHSAN
EN Read in EnglishID

homeio

Publik

Fork dari doctor-io/homeio

Branch
main
Commit terakhir
958d74616 Oktober 2026

route.test.ts

Buka raw
import { NextRequest, NextResponse } from "next/server";
import { describe, expect, it, vi } from "vitest";

vi.mock("@/lib/server/modules/docker/maintenance-service", () => ({
  pruneDockerVolumes: vi.fn(),
}));

import { POST } from "@/app/api/v1/docker/prune/volumes/route";
import { requireApiSession } from "@/lib/server/modules/auth/api";
import { pruneDockerVolumes } from "@/lib/server/modules/docker/maintenance-service";

describe("/api/v1/docker/prune/volumes", () => {
  it("returns 401 for unauthenticated requests", async () => {
    vi.mocked(requireApiSession).mockResolvedValueOnce({
      session: null,
      response: NextResponse.json({ error: "Unauthorized" }, { status: 401 }),
    });

    const response = await POST(
      new NextRequest("http://localhost/api/v1/docker/prune/volumes"),
    );

    expect(response.status).toBe(401);
  });

  it("prunes docker volumes for authenticated users", async () => {
    vi.mocked(pruneDockerVolumes).mockResolvedValueOnce({
      command: "volumes",
      output: "Deleted Volumes:\nold-volume",
    });

    const response = await POST(
      new NextRequest("http://localhost/api/v1/docker/prune/volumes", {
        method: "POST",
        headers: {
          cookie: "homeio_session=session-token",
        },
      }),
    );
    const json = (await response.json()) as {
      data: { command: string; output: string };
    };

    expect(response.status).toBe(200);
    expect(pruneDockerVolumes).toHaveBeenCalledTimes(1);
    expect(json.data.command).toBe("volumes");
  });

  it("returns 500 when prune fails", async () => {
    vi.mocked(pruneDockerVolumes).mockRejectedValueOnce(new Error("docker volume prune failed"));

    const response = await POST(
      new NextRequest("http://localhost/api/v1/docker/prune/volumes", {
        method: "POST",
        headers: {
          cookie: "homeio_session=session-token",
        },
      }),
    );
    const json = (await response.json()) as { error: string };

    expect(response.status).toBe(500);
    expect(json.error).toBe("Failed to prune Docker volumes");
  });
});
byte
2.106
baris
66
Jenis
ts
Commit terakhir
16 Oktober 2026