Merge pull request #838 from thelounge/xpaw/web-server-tests

Add web server tests
This commit is contained in:
Pavel Djundik 2016-12-29 13:31:32 +02:00 committed by GitHub
commit ac99828298
3 changed files with 110 additions and 0 deletions

View File

@ -3,5 +3,8 @@
var config = require("../../../defaults/config.js"); var config = require("../../../defaults/config.js");
config.prefetch = true; config.prefetch = true;
config.host = config.bind = "127.0.0.1";
config.port = 61337;
config.transports = ["websocket"];
module.exports = config; module.exports = config;

View File

@ -1,4 +1,11 @@
"use strict"; "use strict";
global.log = {
error: () => console.error.apply(console, arguments),
warn: () => {},
info: () => {},
debug: () => {},
};
var home = require("path").join(__dirname, ".lounge"); var home = require("path").join(__dirname, ".lounge");
require("../../src/helper").setHome(home); require("../../src/helper").setHome(home);

100
test/server.js Normal file
View File

@ -0,0 +1,100 @@
"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", () => {
it("should run a web server on " + webURL, done => {
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();
});
});
it("should serve static content correctly", done => {
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();
});
it("should emit authorized message", done => {
client.on("authorized", done);
});
it("should create network", done => {
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,
});
});
client.on("network", data => {
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();
});
});
it("should emit init message", done => {
client.on("init", data => {
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();
});
});
});
});