2016-12-23 11:50:11 +00:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
const Helper = require("../src/helper");
|
|
|
|
const expect = require("chai").expect;
|
|
|
|
const request = require("request");
|
|
|
|
const io = require("socket.io-client");
|
|
|
|
|
|
|
|
describe("Server", () => {
|
|
|
|
const server = require("../src/server");
|
|
|
|
server();
|
|
|
|
|
|
|
|
const webURL = `http://${Helper.config.host}:${Helper.config.port}/`;
|
|
|
|
|
|
|
|
describe("Express", () => {
|
2017-04-08 12:34:31 +00:00
|
|
|
it("should run a web server on " + webURL, (done) => {
|
2016-12-23 11:50:11 +00:00
|
|
|
request(webURL, (error, response, body) => {
|
|
|
|
expect(error).to.be.null;
|
|
|
|
expect(body).to.include("<title>The Lounge</title>");
|
|
|
|
expect(body).to.include("https://thelounge.github.io/");
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-04-08 12:34:31 +00:00
|
|
|
it("should serve static content correctly", (done) => {
|
2016-12-23 11:50:11 +00:00
|
|
|
request(webURL + "manifest.json", (error, response, body) => {
|
|
|
|
expect(error).to.be.null;
|
|
|
|
|
|
|
|
body = JSON.parse(body);
|
|
|
|
expect(body.name).to.equal("The Lounge");
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe("WebSockets", () => {
|
|
|
|
let client;
|
|
|
|
|
|
|
|
beforeEach(() => {
|
|
|
|
client = io(webURL, {
|
|
|
|
path: "/socket.io/",
|
|
|
|
autoConnect: false,
|
|
|
|
reconnection: false,
|
|
|
|
timeout: 1000,
|
|
|
|
transports: [
|
|
|
|
"websocket"
|
|
|
|
]
|
|
|
|
});
|
|
|
|
|
|
|
|
// Server emits events faster than the test can bind them
|
|
|
|
setTimeout(() => {
|
|
|
|
client.open();
|
|
|
|
}, 1);
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(() => {
|
|
|
|
client.close();
|
|
|
|
});
|
|
|
|
|
2017-04-08 12:34:31 +00:00
|
|
|
it("should emit authorized message", (done) => {
|
2016-12-23 11:50:11 +00:00
|
|
|
client.on("authorized", done);
|
|
|
|
});
|
|
|
|
|
2017-04-08 12:34:31 +00:00
|
|
|
it("should create network", (done) => {
|
2016-12-23 11:50:11 +00:00
|
|
|
client.on("init", () => {
|
|
|
|
client.emit("conn", {
|
|
|
|
username: "test-user",
|
|
|
|
realname: "The Lounge Test",
|
|
|
|
nick: "test-user",
|
|
|
|
join: "#thelounge, #spam",
|
|
|
|
name: "Test Network",
|
|
|
|
host: Helper.config.host,
|
|
|
|
port: 6667,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-04-08 12:34:31 +00:00
|
|
|
client.on("network", (data) => {
|
2016-12-23 11:50:11 +00:00
|
|
|
expect(data.networks).to.be.an("array");
|
|
|
|
expect(data.networks).to.have.lengthOf(1);
|
|
|
|
expect(data.networks[0].realname).to.equal("The Lounge Test");
|
|
|
|
expect(data.networks[0].channels).to.have.lengthOf(3);
|
|
|
|
expect(data.networks[0].channels[0].name).to.equal("Test Network");
|
|
|
|
expect(data.networks[0].channels[1].name).to.equal("#thelounge");
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-04-08 12:34:31 +00:00
|
|
|
it("should emit init message", (done) => {
|
|
|
|
client.on("init", (data) => {
|
2016-12-23 11:50:11 +00:00
|
|
|
expect(data.active).to.equal(-1);
|
|
|
|
expect(data.networks).to.be.an("array");
|
|
|
|
expect(data.networks).to.be.empty;
|
|
|
|
expect(data.token).to.be.null;
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|