mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
Without a transport Winston will print annoying "Attempt to write logs with no transports" warnings all over the place. Setup a transport in tests that cause logging to suppress this.
91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import * as lib from "@clusterio/lib";
|
|
import "../setup_logging.js";
|
|
|
|
describe("rce_ops", function() {
|
|
describe("updatePackage", function() {
|
|
it("runs", async function() {
|
|
// In dev env no side effects occur, so best we can do is check it doesn't error
|
|
await lib.updatePackage("foo");
|
|
});
|
|
});
|
|
|
|
describe("installPackage", function() {
|
|
it("runs", async function() {
|
|
// In dev env no side effects occur, so best we can do is check it doesn't error
|
|
await lib.installPackage("foo");
|
|
});
|
|
});
|
|
|
|
describe("handlePluginUpdate", function() {
|
|
it("runs", async function() {
|
|
await lib.handlePluginUpdate("foo", [{ npmPackage: "foo" }]);
|
|
});
|
|
it("rejects when plugin not installed", async function() {
|
|
await assert.rejects(
|
|
lib.handlePluginUpdate("foo", []),
|
|
/Plugin foo is not installed on this machine/
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("handleUpdateAll", function() {
|
|
it("updates the core package and all npm plugins in one command", async function() {
|
|
const _audit = lib.logger.audit;
|
|
const messages = [];
|
|
lib.logger.audit = (msg) => { messages.push(msg); };
|
|
try {
|
|
await lib.handleUpdateAll("core", [{ npmPackage: "foo" }, { name: "local" }, { npmPackage: "bar" }]);
|
|
} finally {
|
|
lib.logger.audit = _audit;
|
|
}
|
|
assert.deepEqual(messages, ["RCE | npm update --save core foo bar"]);
|
|
});
|
|
});
|
|
|
|
describe("handlePluginInstall", function() {
|
|
const _fetch = global.fetch;
|
|
before(function() {
|
|
global.fetch = function() { return { ok: false }; };
|
|
});
|
|
after(function() {
|
|
global.fetch = _fetch;
|
|
});
|
|
|
|
it("runs", async function() {
|
|
let calledWith = "";
|
|
global.fetch = function(url) {
|
|
calledWith = url;
|
|
return { ok: true };
|
|
};
|
|
|
|
await lib.handlePluginInstall("foo");
|
|
assert.equal(calledWith, "https://registry.npmjs.com/foo");
|
|
});
|
|
it("rejects when name too long", async function() {
|
|
const pluginName = "a".repeat(215);
|
|
await assert.rejects(
|
|
lib.handlePluginInstall(pluginName),
|
|
{ message: `Invalid plugin name: ${pluginName}` }
|
|
);
|
|
});
|
|
it("rejects when invalid symbol present", async function() {
|
|
const pluginName = "?";
|
|
await assert.rejects(
|
|
lib.handlePluginInstall(pluginName),
|
|
{ message: `Invalid plugin name: ${pluginName}` },
|
|
);
|
|
});
|
|
it("rejects unregistered packages", async function() {
|
|
let calledWith = "";
|
|
global.fetch = function(url) {
|
|
calledWith = url;
|
|
return { ok: false };
|
|
};
|
|
|
|
await assert.rejects(lib.handlePluginInstall("foo"), /Unknown plugin: foo/);
|
|
assert.equal(calledWith, "https://registry.npmjs.com/foo");
|
|
});
|
|
});
|
|
});
|