* clean up helpers * shared in it's own top level folder * workspaces setup * build fix * disable workspaces? * run ci * rename job-flow to gradcracker * optional dependencies * formatting? * more optional modules * allow post install runs * node bump * remove post install * add optionals * add more * formatting * comments, but im unsure * run typescript DIRECTLY * better build * camoufox simplification * lint * build process doesn't exist * build fix * lockfile * type check everything, build only for client * rename steps correctly * import from package! * fix formatting * don't fetch twice * fix concern
69 lines
2.3 KiB
TypeScript
69 lines
2.3 KiB
TypeScript
import type { UpdateSettingsInput } from "@shared/settings-schema.js";
|
|
import { render, screen } from "@testing-library/react";
|
|
import { FormProvider, useForm } from "react-hook-form";
|
|
import { Accordion } from "@/components/ui/accordion";
|
|
import { EnvironmentSettingsSection } from "./EnvironmentSettingsSection";
|
|
|
|
const EnvironmentSettingsHarness = () => {
|
|
const methods = useForm<UpdateSettingsInput>({
|
|
defaultValues: {
|
|
rxresumeEmail: "resume@example.com",
|
|
ukvisajobsEmail: "visa@example.com",
|
|
basicAuthUser: "admin",
|
|
openrouterApiKey: "",
|
|
rxresumePassword: "",
|
|
ukvisajobsPassword: "",
|
|
basicAuthPassword: "",
|
|
webhookSecret: "",
|
|
enableBasicAuth: true,
|
|
},
|
|
});
|
|
|
|
return (
|
|
<FormProvider {...methods}>
|
|
<Accordion type="multiple" defaultValue={["environment"]}>
|
|
<EnvironmentSettingsSection
|
|
values={{
|
|
readable: {
|
|
rxresumeEmail: "resume@example.com",
|
|
ukvisajobsEmail: "visa@example.com",
|
|
basicAuthUser: "admin",
|
|
},
|
|
private: {
|
|
openrouterApiKeyHint: "sk-1",
|
|
rxresumePasswordHint: null,
|
|
ukvisajobsPasswordHint: "pass",
|
|
basicAuthPasswordHint: "abcd",
|
|
webhookSecretHint: "sec-",
|
|
},
|
|
basicAuthActive: true,
|
|
}}
|
|
isLoading={false}
|
|
isSaving={false}
|
|
/>
|
|
</Accordion>
|
|
</FormProvider>
|
|
);
|
|
};
|
|
|
|
describe("EnvironmentSettingsSection", () => {
|
|
it("renders values grouped logically and masks private secrets with hints", () => {
|
|
render(<EnvironmentSettingsHarness />);
|
|
|
|
expect(screen.getByDisplayValue("resume@example.com")).toBeInTheDocument();
|
|
expect(screen.getByDisplayValue("visa@example.com")).toBeInTheDocument();
|
|
|
|
expect(screen.getByText(/pass\*{8}/)).toBeInTheDocument();
|
|
expect(screen.getByText(/abcd\*{8}/)).toBeInTheDocument();
|
|
expect(screen.getByText("Not set")).toBeInTheDocument();
|
|
|
|
// Basic Auth
|
|
expect(screen.getByLabelText("Enable basic authentication")).toBeChecked();
|
|
expect(screen.getByDisplayValue("admin")).toBeInTheDocument();
|
|
|
|
// Sections
|
|
expect(screen.getByText("Service Accounts")).toBeInTheDocument();
|
|
expect(screen.getByText("Security")).toBeInTheDocument();
|
|
});
|
|
});
|