Veröffentlichte Quellen
Quellen als ZIP herunterladen
CH-J Server Manager
Durchsuchen Sie Verzeichnisse und Dateien einer bestimmten Anwendungsausgabe.
CH-J / Server Manager
161 Dateien
core-20261011T114645Z-f5edc312d101
1
"use strict";3
const test = require("node:test");4
const assert = require("node:assert/strict");5
const fs = require("node:fs");6
const os = require("node:os");7
const path = require("node:path");8
const { PluginRegistry, validateManifest } = require("../src/main/plugins/pluginRegistry");10
function 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
...overrides22
};23
}25
test("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
});30
test("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
2646c916d2eb5998a17e00211a4f48d709f3e2e50510b4fad990e139161c673eCH-J Proprietary Software License 1.14 · Die Quellen werden unter der CH-J Proprietary Software License 1.14 bereitgestellt. Ihre Verfügbarkeit ändert die Lizenzbedingungen nicht und gewährt keine zusätzlichen Rechte.
SHA-256 des Archivs
5ac91caf4fa32a6fdb114f2430deed486fbe7489d5eea343d1f034169fafb5e0