mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
Replace socket.io with plain WebSocket using the ws library as it doesn't really provide any useful tools over plain WebSocket when it comes to implementing reliable communication that works across reconnects. The widespread browser support for WebSocket also means it has little value to add for the web interface over WebSocket.
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 WebSocketServerConnector", function() {
|
|
let testConnector = new master._WebSocketServerConnector(new mock.MockSocket());
|
|
describe(".disconnect()", function() {
|
|
it("should call disconnect on the socket", function() {
|
|
testConnector._socket.terminateCalled = false;
|
|
testConnector.disconnect();
|
|
assert(testConnector._socket.terminateCalled, "Terminate was not called");
|
|
});
|
|
});
|
|
});
|
|
});
|