homeio
PublikFork dari doctor-io/homeio
route.test.ts
import { describe, expect, it, vi } from "vitest";
vi.mock("@/lib/server/modules/network/service", () => ({
NetworkServiceError: class NetworkServiceError extends Error {
code: string;
statusCode: number;
constructor(message: string, code = "internal_error", statusCode = 500) {
super(message);
this.code = code;
this.statusCode = statusCode;
}
},
connectNetwork: vi.fn(),
}));
import { POST } from "@/app/api/v1/network/connect/route";
import {
NetworkServiceError,
connectNetwork,
} from "@/lib/server/modules/network/service";
describe("POST /api/v1/network/connect", () => {
it("starts network connect flow", async () => {
vi.mocked(connectNetwork).mockResolvedValueOnce({
connected: true,
iface: "wlan0",
ssid: "HomeNet",
ipv4: "192.168.1.12",
signalPercent: 65,
});
const response = await POST(
new Request("http://localhost/api/v1/network/connect", {
method: "POST",
body: JSON.stringify({
ssid: "HomeNet",
password: "secret",
}),
}),
);
expect(response.status).toBe(202);
});
it("returns mapped service errors", async () => {
vi.mocked(connectNetwork).mockRejectedValueOnce(
new NetworkServiceError("invalid", "invalid_request", 400),
);
const response = await POST(
new Request("http://localhost/api/v1/network/connect", {
method: "POST",
body: JSON.stringify({
ssid: "",
}),
}),
);
expect(response.status).toBe(400);
});
});