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 } from "next/server";
import { describe, expect, it, vi } from "vitest";

vi.mock("@/lib/server/modules/auth/service", () => {
  class AuthError extends Error {
    constructor(
      message: string,
      public readonly statusCode: number,
    ) {
      super(message);
    }
  }

  return {
    AuthError,
    verifyUnlockPassword: vi.fn(),
  };
});

import { POST } from "@/app/api/auth/unlock/route";
import { AuthError, verifyUnlockPassword } from "@/lib/server/modules/auth/service";

describe("POST /api/auth/unlock", () => {
  it("unlocks session when password is valid", async () => {
    vi.mocked(verifyUnlockPassword).mockResolvedValueOnce({
      userId: "u1",
      username: "admin",
    });

    const request = new NextRequest("http://localhost/api/auth/unlock", {
      method: "POST",
      headers: {
        cookie: "homeio_session=session-token",
      },
      body: JSON.stringify({ password: "StrongPass123" }),
    });

    const response = await POST(request);

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

  it("returns auth error when password is invalid", async () => {
    vi.mocked(verifyUnlockPassword).mockRejectedValueOnce(
      new AuthError("Invalid password", 401),
    );

    const request = new NextRequest("http://localhost/api/auth/unlock", {
      method: "POST",
      headers: {
        cookie: "homeio_session=session-token",
      },
      body: JSON.stringify({ password: "bad-pass" }),
    });

    const response = await POST(request);

    expect(response.status).toBe(401);
  });
});
byte
1.562
baris
61
Jenis
ts
Commit terakhir
16 Oktober 2026