mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 06:05:24 +00:00
fix(hosts): preserve plugin settings when reopening the editor (#1499)
This commit is contained in:
1 parent
718717554d
commit
24def2b613
2 files changed
+62
No files matched your search
@@ -91,6 +91,7 @@ export function sshHostToHost(h: SSHHostWithStatus): Host {
|
|||||||
statusCheckEnabled: h.statusCheckEnabled !== false,
|
statusCheckEnabled: h.statusCheckEnabled !== false,
|
||||||
statusCheckInterval: h.statusCheckInterval ?? null,
|
statusCheckInterval: h.statusCheckInterval ?? null,
|
||||||
forceKeyboardInteractive: h.forceKeyboardInteractive ?? false,
|
forceKeyboardInteractive: h.forceKeyboardInteractive ?? false,
|
||||||
|
pluginSettings: h.pluginSettings,
|
||||||
useSocks5: h.useSocks5,
|
useSocks5: h.useSocks5,
|
||||||
socks5Host: h.socks5Host,
|
socks5Host: h.socks5Host,
|
||||||
socks5Port: h.socks5Port,
|
socks5Port: h.socks5Port,
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||||
|
import { cleanup, fireEvent, render, screen } from "@testing-library/react";
|
||||||
|
import type { PluginSummary } from "@/api/plugins-api";
|
||||||
|
import { sshHostToHost } from "@/sidebar/HostManagerData";
|
||||||
|
import { createHostEditorForm } from "@/sidebar/HostEditorData";
|
||||||
|
import { HostPluginSections } from "@/settings/HostPluginSections";
|
||||||
|
import manifest from "../../../../plugins/session-sharing/manifest.json";
|
||||||
|
|
||||||
|
vi.mock("react-i18next", () => ({
|
||||||
|
useTranslation: () => ({ t: (key: string) => key }),
|
||||||
|
}));
|
||||||
|
|
||||||
|
afterEach(cleanup);
|
||||||
|
|
||||||
|
describe("host sharing settings on reopening the editor", () => {
|
||||||
|
it.each([false, true])("retains the saved sharing value %s", (saved) => {
|
||||||
|
const pluginSettings = {
|
||||||
|
"session-sharing": { allowSessionSharing: saved },
|
||||||
|
"ssh-terminal": { enableCommandHistory: false },
|
||||||
|
};
|
||||||
|
const host = sshHostToHost({
|
||||||
|
id: 1,
|
||||||
|
name: "server",
|
||||||
|
ip: "192.0.2.1",
|
||||||
|
port: 22,
|
||||||
|
username: "alice",
|
||||||
|
folder: "",
|
||||||
|
tags: [],
|
||||||
|
pin: false,
|
||||||
|
authType: "password",
|
||||||
|
status: "online",
|
||||||
|
createdAt: "2026-09-29T00:00:00Z",
|
||||||
|
updatedAt: "2026-09-29T00:00:00Z",
|
||||||
|
pluginSettings,
|
||||||
|
});
|
||||||
|
const form = createHostEditorForm(host);
|
||||||
|
const setValue = vi.fn();
|
||||||
|
render(
|
||||||
|
<HostPluginSections
|
||||||
|
plugins={[
|
||||||
|
{
|
||||||
|
...manifest,
|
||||||
|
enabled: true,
|
||||||
|
state: "running",
|
||||||
|
} as unknown as PluginSummary,
|
||||||
|
]}
|
||||||
|
values={form.pluginSettings}
|
||||||
|
setValue={setValue}
|
||||||
|
/>,
|
||||||
|
);
|
||||||
|
|
||||||
|
// The toggle starts from the server value, including false despite its true default.
|
||||||
|
fireEvent.click(screen.getByRole("button"));
|
||||||
|
expect(setValue).toHaveBeenCalledWith(
|
||||||
|
"session-sharing",
|
||||||
|
"allowSessionSharing",
|
||||||
|
!saved,
|
||||||
|
);
|
||||||
|
expect(form.pluginSettings).toEqual(pluginSettings);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in new issue
Block a user