CH-J Toolsupravljanje strežnikov prek SSH
Meni
Objavljen vir

CH-J Tools

Brskajte po imenikih in datotekah za določeno izdajo programa.

Prenos vir ZIP
CH-J / Server Manager 406 datoteke
core-20261024T135205Z-7c487d719de2 Dodano: · Zgrajena:
disksWindowsIntegration.test.js Dodano: Datum, ki ni zabeležen 3,3 KB · 48 vrstice
Oznaka Prenesi datoteko
1"use strict";
3// chj.disks against an isolated Windows test VM: the platform is detected, no Linux disk tool is ever started and
4// every disk operation is refused cleanly. Read-only. Environment: CHJ_DISKS_WINDOWS_HOST, CHJ_DISKS_WINDOWS_FINGERPRINT
5// (SHA256:...), CHJ_DISKS_WINDOWS_KEY (private key path), CHJ_DISKS_WINDOWS_USER (default ai).
6const test = require("node:test");
7const assert = require("node:assert/strict");
8const { SessionManager } = require("../src/main/sessions/sessionManager");
9const { PrivilegedExecutor } = require("../src/main/sessions/privilegedExec");
10const { DiskService } = require("../src/main/disks/diskService");
12const env = process.env;
13const skip = env.CHJ_DISKS_WINDOWS_HOST && env.CHJ_DISKS_WINDOWS_FINGERPRINT && env.CHJ_DISKS_WINDOWS_KEY ? false : "Set CHJ_DISKS_WINDOWS_* to run against an isolated Windows test VM.";
15test("chj.disks on an isolated Windows test VM is refused without running Linux tools", { skip, timeout: 180000 }, async (t) => {
16 const hostKeys = new Map();
17 const profileService = {
18 get: () => ({ id: "win", label: "win", host: env.CHJ_DISKS_WINDOWS_HOST, port: 22, username: env.CHJ_DISKS_WINDOWS_USER || "ai", authMethod: "privateKey", privateKeyPath: env.CHJ_DISKS_WINDOWS_KEY }),
19 getHostKey: (h, p) => hostKeys.get(`${h}:${p}`) || null, trustHostKey: (h, p, fp) => hostKeys.set(`${h}:${p}`, fp), getStoredPassword: () => "", markUsed() {}
20 };
21 const manager = new SessionManager({ profileService });
22 try { await manager.connect({ sessionId: "win", profileId: "win" }); }
23 catch (error) {
24 if (error.code !== "HOST_KEY_UNKNOWN") throw error;
25 assert.equal(`SHA256:${Buffer.from(error.fingerprint, "hex").toString("base64").replace(/=+$/, "")}`, env.CHJ_DISKS_WINDOWS_FINGERPRINT, "documented host key");
26 manager.trustPending({ sessionId: "win", profileId: "win", fingerprint: error.fingerprint });
27 await manager.connect({ sessionId: "win", profileId: "win" });
28 }
29 t.after(() => manager.disconnectAll("test"));
30 const executor = new PrivilegedExecutor({ sessionManager: manager });
31 const runs = [];
32 const original = executor.run.bind(executor);
33 executor.run = (...args) => { runs.push(args[1]?.args?.[0]); return original(...args); };
34 const disks = new DiskService({ sessionManager: manager, privilegedExecutor: executor });
36 const inventory = await disks.inspect("win");
37 t.diagnostic(`${inventory.os} -> supported=${inventory.supported} reason=${inventory.reason}`);
38 assert.equal(inventory.supported, false); assert.equal(inventory.platform, "windows"); assert.equal(inventory.reason, "WINDOWS");
39 assert.match(inventory.os, /Windows/);
40 await assert.rejects(() => disks.plan("win", { operations: [{ type: "grow-fs", device: "/dev/sda1" }] }), { code: "DISKS_PLATFORM_UNSUPPORTED" });
41 await assert.rejects(() => disks.smart("win", { device: "/dev/sda" }), { code: "DISKS_PLATFORM_UNSUPPORTED" });
42 await assert.rejects(() => disks.autoExpand("win", { suggestionId: "partition:sda:1" }), { code: "DISKS_PLATFORM_UNSUPPORTED" });
43 assert.deepEqual(await disks.jobs("win"), { jobs: [] });
44 assert.deepEqual(runs, [], "the Linux helper was never started on Windows");
45 // The shared SSH layer stays usable for the other plugins.
46 const metrics = await manager.readSystemMetrics("win");
47 assert.equal(metrics.os, "windows");
48});
SHA-256c7c0e9c74f67e01d0ba88d43f564b7d0b70f8748cd32629cdc9f7edfd6ffa7f8

CH-J Proprietary Software License 1.14 · Vir je na voljo pod CH-J Proprietary Software License 1.14. Njena razpoložljivost ne spreminja pogojev licence ali dodeljuje dodatnih pravic.

Arhiv SHA-256476ed8aef0f1e96a5acdf223127b6692acdf4492eeaf5d0816b6e2a634fbbda6
Datoteke