Files
factorio-clusterio/test/lib/command.js
T

69 lines
2.5 KiB
JavaScript

"use strict";
const assert = require("assert").strict;
const lib = require("@clusterio/lib");
const mock = require("../mock");
const addr = lib.Address.fromShorthand;
describe("lib/command", function() {
let testRole = lib.RawRole.fromJSON({ id: 28, name: "Test Role", description: "Test", permissions: [] });
let [controlConnector, controllerConnector] = lib.VirtualConnector.makePair(
addr({ controlId: 1}), addr("controller")
);
let testControl = new mock.MockControl(controlConnector);
let testController = new lib.Link(controllerConnector);
testController.handle(
lib.HostListRequest, () => [new lib.HostDetails("test", "0.1", "Test Host", 11, false)]
);
testController.handle(
lib.InstanceDetailsListRequest, () => [new lib.InstanceDetails("Test Instance", 57, 4, undefined, "stopped")]
);
testController.handle(lib.RoleListRequest, () => [testRole]);
describe("resolveHost", function() {
it("should pass an integer like string back", async function() {
assert.equal(await lib.resolveHost(null, "123"), 123);
});
it("should resolve a host name with the controller", async function() {
assert.equal(await lib.resolveHost(testControl, "Test Host"), 11);
});
it("should throw if host is not found", async function() {
await assert.rejects(
lib.resolveHost(testControl, "invalid"),
new lib.CommandError("No host named invalid")
);
});
});
describe("resolveInstance", function() {
it("should pass an integer like string back", async function() {
assert.equal(await lib.resolveInstance(null, "123"), 123);
});
it("should resolve an instance name with the controller", async function() {
assert.equal(await lib.resolveInstance(testControl, "Test Instance"), 57);
});
it("should throw if instance is not found", async function() {
await assert.rejects(
lib.resolveInstance(testControl, "invalid"),
new lib.CommandError("No instance named invalid")
);
});
});
describe("retrieveRole", function() {
it("should retrieve a role by id from an integer like string", async function() {
assert.deepEqual(await lib.retrieveRole(testControl, "28"), testRole);
});
it("should retrieve a role by name from a string", async function() {
assert.deepEqual(await lib.retrieveRole(testControl, "Test Role"), testRole);
});
it("should throw if role is not found", async function() {
await assert.rejects(
lib.retrieveRole(testControl, "invalid"),
new lib.CommandError("No role named invalid")
);
});
});
});