mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-13 15:19:15 +00:00
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import {
|
|
getTailscaleDevices,
|
|
setTailscaleApi,
|
|
} from "../../src/frontend/tailscale-api";
|
|
|
|
const api = { get: vi.fn() };
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
setTailscaleApi(api as never);
|
|
});
|
|
|
|
describe("getTailscaleDevices", () => {
|
|
it("reads the plugin's own devices route", async () => {
|
|
api.get.mockResolvedValue({ data: { devices: [], hasApiKey: false } });
|
|
|
|
await expect(getTailscaleDevices()).resolves.toEqual({
|
|
devices: [],
|
|
hasApiKey: false,
|
|
});
|
|
expect(api.get).toHaveBeenCalledWith("/devices");
|
|
});
|
|
|
|
it("preserves configured-key state when discovery fails", async () => {
|
|
api.get.mockRejectedValue({
|
|
isAxiosError: true,
|
|
response: {
|
|
data: {
|
|
devices: [],
|
|
hasApiKey: true,
|
|
error: "Failed to fetch Tailscale devices",
|
|
},
|
|
},
|
|
});
|
|
|
|
await expect(getTailscaleDevices()).resolves.toEqual({
|
|
devices: [],
|
|
hasApiKey: true,
|
|
error: "Failed to fetch Tailscale devices",
|
|
});
|
|
});
|
|
|
|
it("rethrows when no structured state is available", async () => {
|
|
const error = { isAxiosError: true, response: { data: {} } };
|
|
api.get.mockRejectedValue(error);
|
|
|
|
await expect(getTailscaleDevices()).rejects.toBe(error);
|
|
});
|
|
|
|
it("refuses while the plugin is off", async () => {
|
|
setTailscaleApi(null);
|
|
await expect(getTailscaleDevices()).rejects.toThrow(/not active/);
|
|
});
|
|
});
|