IKHSAN
ENID Baca dalam Bahasa Indonesia

homeio

Public

Forked from doctor-io/homeio

Branch
main
Latest commit
958d74616 October 2026

route.test.ts

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

vi.mock("@/lib/server/modules/system/backup-service", () => ({
  getSystemBackupsSnapshot: vi.fn(),
}));

import { GET } from "@/app/api/v1/system/backups/route";
import { requireApiSession } from "@/lib/server/modules/auth/api";
import { getSystemBackupsSnapshot } from "@/lib/server/modules/system/backup-service";

describe("GET /api/v1/system/backups", () => {
  it("returns backups snapshot for authenticated users", async () => {
    vi.mocked(getSystemBackupsSnapshot).mockResolvedValueOnce({
      settings: {
        enabled: false,
        frequency: "weekly",
        dayOfWeek: "sunday",
        time: "03:00",
        retentionCount: 7,
      },
      backups: [],
      backupRoot: "/DATA/Backups/homeio",
    });

    const request = new NextRequest("http://localhost/api/v1/system/backups", {
      headers: {
        cookie: "homeio_session=session-token",
      },
    });

    const response = await GET(request);
    const json = (await response.json()) as { data: { backupRoot: string } };

    expect(response.status).toBe(200);
    expect(json.data.backupRoot).toBe("/DATA/Backups/homeio");
  });

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

    const response = await GET(new NextRequest("http://localhost/api/v1/system/backups"));

    expect(response.status).toBe(401);
    expect(getSystemBackupsSnapshot).not.toHaveBeenCalled();
  });
});
bytes
1,661
lines
51
Type
ts
Latest commit
16 October 2026