mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
Replace current configuration mess with a trimmed down version of the original vision of #200. Configs are collection of config groups that have fields that can be set. These groups allow organizing the fields as well as opertunity for plugins to add their own groups. By default plugins have an auto generated group with the enabled field.
77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
const assert = require('assert').strict;
|
|
const request = require('supertest');
|
|
const validateHTML = require('html5-validator');
|
|
const parallel = require('mocha.parallel');
|
|
|
|
const config = require("lib/config");
|
|
const plugin = require("lib/plugin");
|
|
const mock = require('./mock');
|
|
const master = require('../master');
|
|
|
|
|
|
master._db.slaves = new Map();
|
|
|
|
before(async function() {
|
|
let pluginInfos = await plugin.loadPluginInfos("plugins");
|
|
config.registerPluginConfigGroups(pluginInfos);
|
|
config.finalizeConfigs();
|
|
let masterConfig = new config.MasterConfig();
|
|
await masterConfig.load({
|
|
groups: [{
|
|
name: "master",
|
|
fields: {
|
|
auth_secret: "TestSecretDoNotUse",
|
|
http_port: 8880,
|
|
https_port: 4443,
|
|
},
|
|
}]
|
|
});
|
|
|
|
master._setConfig(masterConfig);
|
|
})
|
|
|
|
async function get(path) {
|
|
return await request(master.app).get(path).expect(200);
|
|
}
|
|
|
|
async function getValidate(path) {
|
|
let res = await get(path);
|
|
let validation = await validateHTML(res.text);
|
|
let filtered = validation.messages.filter(msg => msg.type !== "info");
|
|
assert(filtered.length === 0, "there are HTML errors on the page, please fix: "+JSON.stringify(validation.messages, null, 4));
|
|
}
|
|
|
|
describe('Master testing', function() {
|
|
describe('#GET /api/getFactorioLocale', function() {
|
|
it('should get the basegame factorio locale', async function() {
|
|
let res = await get('/api/getFactorioLocale');
|
|
let object = res.body;
|
|
|
|
// test that it is looks like a factorio locale
|
|
assert.equal(typeof object, "object");
|
|
assert.equal(object["entity-name"]["fish"], "Fish");
|
|
assert.equal(object["entity-name"]["small-lamp"], "Lamp");
|
|
});
|
|
});
|
|
// describe("#GET /api/")
|
|
parallel("#GET static website data", function() {
|
|
this.timeout(6000);
|
|
|
|
let paths = ["/", "/nodes", "/settings", "/nodeDetails"];
|
|
for (let path of paths) {
|
|
it(`sends some HTML when accessing ${path}`, () => getValidate(path));
|
|
}
|
|
});
|
|
|
|
describe("class SocketIOServerConnector", function() {
|
|
let testConnector = new master._SocketIOServerConnector(new mock.MockSocket());
|
|
describe(".disconnect()", function() {
|
|
it("should call disconnect on the socket", function() {
|
|
testConnector._socket.disconnectCalled = false;
|
|
testConnector.disconnect();
|
|
assert(testConnector._socket.disconnectCalled, "Disconnect was not called");
|
|
});
|
|
});
|
|
});
|
|
});
|