CH-J Server Managerspráva serverů přes SSH
Menu
Vydané zdroje

CH-J Server Manager

Procházejte adresáře a soubory konkrétního vydání aplikace.

Stáhnout zdroje ZIP
CH-J Proprietary Software License 1.14

Zdroje jsou zveřejněny pod CH-J Proprietary Software License 1.14. Jejich dostupnost nemění licenční podmínky ani neposkytuje další oprávnění.

2,3 KB · 49 řádkůStáhnout soubor
1"use strict";
3const test = require("node:test");
4const assert = require("node:assert/strict");
5const fs = require("node:fs");
6const os = require("node:os");
7const path = require("node:path");
8const { PluginRegistry, validateManifest } = require("../src/main/plugins/pluginRegistry");
10function manifest(version, overrides = {}) {
11 return {
12 schemaVersion: 1,
13 id: "chj.system-monitor",
14 name: "System Monitor",
15 version,
16 publisher: "CH-J",
17 entry: "ui/index.html",
18 pluginApi: "^1.0.0",
19 minAppVersion: "0.0.1",
20 permissions: ["session.read", "system.metrics.read"],
21 ...overrides
22 };
25test("manifest validator rejects traversal and unknown permissions", () => {
26 assert.throws(() => validateManifest(manifest("0.0.1", { entry: "../main.js" })), /entry/);
27 assert.throws(() => validateManifest(manifest("0.0.1", { permissions: ["electron.full"] })), /permission/);
28});
30test("registry returns the newest valid installed plugin and can remove all of its versions", (t) => {
31 const root = fs.mkdtempSync(path.join(os.tmpdir(), "chj-plugins-"));
32 t.after(() => fs.rmSync(root, { recursive: true, force: true }));
33 for (const version of ["0.0.1", "0.0.2"]) {
34 const versionRoot = path.join(root, "plugins", "chj.system-monitor", version, "ui");
35 fs.mkdirSync(versionRoot, { recursive: true });
36 fs.writeFileSync(path.join(versionRoot, "index.html"), "<!doctype html>");
37 fs.writeFileSync(path.join(versionRoot, "..", "manifest.json"), JSON.stringify(manifest(version)));
38 fs.writeFileSync(path.join(versionRoot, "..", ".installation.json"), JSON.stringify({ releaseId: `release-${version}`, sha512: version === "0.0.2" ? "b".repeat(128) : "a".repeat(128), installedAt: "2026-08-07T20:00:00Z" }));
39 }
40 const registry = new PluginRegistry(root);
41 const plugins = registry.listInstalled();
42 assert.equal(plugins.length, 1);
43 assert.equal(plugins[0].version, "0.0.2");
44 assert.equal(plugins[0].installedReleaseId, "release-0.0.2");
45 assert.equal(plugins[0].installedSha512, "b".repeat(128));
46 assert.deepEqual(registry.removeInstalled("chj.system-monitor"), { removed: true, pluginId: "chj.system-monitor" });
47 assert.deepEqual(registry.listInstalled(), []);
48 assert.deepEqual(registry.removeInstalled("chj.system-monitor"), { removed: false, pluginId: "chj.system-monitor" });
49});

SHA-256: 2646c916d2eb5998a17e00211a4f48d709f3e2e50510b4fad990e139161c673e

SHA-256 archivu: 5ac91caf4fa32a6fdb114f2430deed486fbe7489d5eea343d1f034169fafb5e0