* feat: update prettier configuration for print width * chore: apply code formatting to entire repository * fix: remove build files * fix: format issue --------- Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
132 lines
3.4 KiB
TypeScript
132 lines
3.4 KiB
TypeScript
import SuperJSON from "superjson";
|
|
import { describe, expect, test, vi } from "vitest";
|
|
|
|
import type { Session } from "@homarr/auth";
|
|
import { createId } from "@homarr/db";
|
|
import { serverSettings } from "@homarr/db/schema/sqlite";
|
|
import { createDb } from "@homarr/db/test";
|
|
import { defaultServerSettings, defaultServerSettingsKeys } from "@homarr/server-settings";
|
|
|
|
import { serverSettingsRouter } from "../serverSettings";
|
|
|
|
// Mock the auth module to return an empty session
|
|
vi.mock("@homarr/auth", () => ({ auth: () => ({}) as Session }));
|
|
|
|
const defaultSession = {
|
|
user: {
|
|
id: createId(),
|
|
permissions: [],
|
|
},
|
|
expires: new Date().toISOString(),
|
|
} satisfies Session;
|
|
|
|
describe("getAll server settings", () => {
|
|
test("getAll should throw error when unauthorized", async () => {
|
|
const db = createDb();
|
|
const caller = serverSettingsRouter.createCaller({
|
|
db,
|
|
session: null,
|
|
});
|
|
|
|
await db.insert(serverSettings).values([
|
|
{
|
|
settingKey: defaultServerSettingsKeys[0],
|
|
value: SuperJSON.stringify(defaultServerSettings.analytics),
|
|
},
|
|
]);
|
|
|
|
const actAsync = async () => await caller.getAll();
|
|
|
|
await expect(actAsync()).rejects.toThrow();
|
|
});
|
|
test("getAll should return server", async () => {
|
|
const db = createDb();
|
|
const caller = serverSettingsRouter.createCaller({
|
|
db,
|
|
session: defaultSession,
|
|
});
|
|
|
|
await db.insert(serverSettings).values([
|
|
{
|
|
settingKey: defaultServerSettingsKeys[0],
|
|
value: SuperJSON.stringify(defaultServerSettings.analytics),
|
|
},
|
|
]);
|
|
|
|
const result = await caller.getAll();
|
|
|
|
expect(result).toStrictEqual({
|
|
analytics: {
|
|
enableGeneral: true,
|
|
enableWidgetData: false,
|
|
enableIntegrationData: false,
|
|
enableUserData: false,
|
|
},
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("saveSettings", () => {
|
|
test("saveSettings should return false when it did not update one", async () => {
|
|
const db = createDb();
|
|
const caller = serverSettingsRouter.createCaller({
|
|
db,
|
|
session: defaultSession,
|
|
});
|
|
|
|
const result = await caller.saveSettings({
|
|
settingsKey: "analytics",
|
|
value: {
|
|
enableGeneral: true,
|
|
enableWidgetData: true,
|
|
enableIntegrationData: true,
|
|
enableUserData: true,
|
|
},
|
|
});
|
|
|
|
expect(result).toBe(false);
|
|
|
|
const dbSettings = await db.select().from(serverSettings);
|
|
expect(dbSettings.length).toBe(0);
|
|
});
|
|
test("saveSettings should update settings and return true when it updated only one", async () => {
|
|
const db = createDb();
|
|
const caller = serverSettingsRouter.createCaller({
|
|
db,
|
|
session: defaultSession,
|
|
});
|
|
|
|
await db.insert(serverSettings).values([
|
|
{
|
|
settingKey: defaultServerSettingsKeys[0],
|
|
value: SuperJSON.stringify(defaultServerSettings.analytics),
|
|
},
|
|
]);
|
|
|
|
const result = await caller.saveSettings({
|
|
settingsKey: "analytics",
|
|
value: {
|
|
enableGeneral: true,
|
|
enableWidgetData: true,
|
|
enableIntegrationData: true,
|
|
enableUserData: true,
|
|
},
|
|
});
|
|
|
|
expect(result).toBe(true);
|
|
|
|
const dbSettings = await db.select().from(serverSettings);
|
|
expect(dbSettings).toStrictEqual([
|
|
{
|
|
settingKey: "analytics",
|
|
value: SuperJSON.stringify({
|
|
enableGeneral: true,
|
|
enableWidgetData: true,
|
|
enableIntegrationData: true,
|
|
enableUserData: true,
|
|
}),
|
|
},
|
|
]);
|
|
});
|
|
});
|