mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
Remove connection and client subclasses of Link and put the connection logic into a "connector" class. The connector deals with sending and receiving messages, handling the connection and reconnection of lost connections and giving sequence numbers to messages. This move the logic of the actual connection away from the link sub-classes, which in turn means the connection should be a lot easier to mock in tests.
59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
const assert = require('assert').strict;
|
|
const request = require('supertest');
|
|
const validateHTML = require('html5-validator');
|
|
const parallel = require('mocha.parallel');
|
|
|
|
const mock = require('./mock');
|
|
const master = require('../master');
|
|
|
|
|
|
master._db.slaves = new Map();
|
|
|
|
// Fields required in the config
|
|
master._config.factorioDirectory = "factorio";
|
|
|
|
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");
|
|
});
|
|
});
|
|
});
|
|
});
|