mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-30 07:05:24 +00:00
feat: harden plugin api for separate repos, signed updates and generic external login
This commit is contained in:
1 parent
fb9c168b6b
commit
80944301dd
310 files changed
+6577
-4927
No files matched your search
@@ -6,10 +6,29 @@
|
||||
"scripts": {
|
||||
"build": "termix-plugin build",
|
||||
"test": "termix-plugin test",
|
||||
"typecheck": "tsc -b ../../tsconfig.plugins.backend.json ../../tsconfig.plugins.frontend.json",
|
||||
"typecheck": "tsc -p .",
|
||||
"validate": "termix-plugin validate"
|
||||
},
|
||||
"dependencies": {
|
||||
"lucide-react": "^1.33.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@termix/plugin-sdk": "*"
|
||||
"@termix/plugin-sdk": "^1.0.0",
|
||||
"@testing-library/dom": "^10.4.2",
|
||||
"@testing-library/react": "^16.3.3",
|
||||
"@types/node": "^26.2.0",
|
||||
"@types/react": "^19.2.18",
|
||||
"@types/react-dom": "^19.2.4",
|
||||
"better-sqlite3": "^13.0.3",
|
||||
"jsdom": "^30.0.1",
|
||||
"vitest": "^4.1.11"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@termix/plugin-sdk": "^1.0.0",
|
||||
"drizzle-orm": "^0.45.2",
|
||||
"express": "^5.2.1",
|
||||
"react": "^19.2.8",
|
||||
"sonner": "^2.0.8",
|
||||
"ssh2": "^1.17.0"
|
||||
}
|
||||
}
|
||||
@@ -13,10 +13,6 @@ import locales from "../../locales/en.json";
|
||||
const manifest = manifestJson as unknown as PluginManifest;
|
||||
|
||||
const linked = vi.hoisted(() => ({ serverUrl: null as string | null }));
|
||||
vi.mock("@/lib/linked-server", () => ({
|
||||
getLinkedSession: async () =>
|
||||
linked.serverUrl ? { serverUrl: linked.serverUrl, token: "t" } : null,
|
||||
}));
|
||||
|
||||
let rendered: RenderedPluginApp | null = null;
|
||||
|
||||
@@ -76,7 +72,11 @@ function stubApi(options: { identity?: boolean; linked?: number[] } = {}) {
|
||||
|
||||
describe(`${manifest.id} activate`, () => {
|
||||
it("registers the rail item, panel, tab and credential badge", async () => {
|
||||
rendered = await renderWithApp(plugin, { manifest, locales });
|
||||
rendered = await renderWithApp(plugin, {
|
||||
manifest,
|
||||
locales,
|
||||
remoteServerUrl: () => linked.serverUrl,
|
||||
});
|
||||
expect(rendered.registered.railItems()).toEqual([
|
||||
expect.objectContaining({
|
||||
id: "termix-id",
|
||||
@@ -106,7 +106,11 @@ describe(`${manifest.id} activate`, () => {
|
||||
isElectron: true,
|
||||
invoke: vi.fn(async () => null),
|
||||
};
|
||||
rendered = await renderWithApp(plugin, { manifest, locales });
|
||||
rendered = await renderWithApp(plugin, {
|
||||
manifest,
|
||||
locales,
|
||||
remoteServerUrl: () => linked.serverUrl,
|
||||
});
|
||||
await waitFor(() =>
|
||||
expect(rendered!.registered.railItems()).toEqual([
|
||||
expect.objectContaining({ id: "termix-id", hidden: true }),
|
||||
@@ -120,7 +124,11 @@ describe(`${manifest.id} activate`, () => {
|
||||
isElectron: true,
|
||||
invoke: vi.fn(async () => null),
|
||||
};
|
||||
rendered = await renderWithApp(plugin, { manifest, locales });
|
||||
rendered = await renderWithApp(plugin, {
|
||||
manifest,
|
||||
locales,
|
||||
remoteServerUrl: () => linked.serverUrl,
|
||||
});
|
||||
await waitFor(() =>
|
||||
expect(rendered!.registered.railItems()[0]?.hidden).toBe(true),
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user