diff --git a/lib/interfaces.js b/lib/interfaces.js index c205462..3911569 100644 --- a/lib/interfaces.js +++ b/lib/interfaces.js @@ -95,12 +95,13 @@ function mqttsFactory(iface, fallback, mosca) { return tls.createServer(credentials, buildWrap(mosca)); } - function httpFactory(iface, fallback, mosca) { var serve = buildServe(iface, mosca); var server = http.createServer(serve); - mosca.attachHttpServer(server); + server.on('listening', function () { + mosca.attachHttpServer(server); + }); return server; } diff --git a/test/server_error.js b/test/server_error.js index cdeb098..4477d78 100644 --- a/test/server_error.js +++ b/test/server_error.js @@ -1,47 +1,77 @@ -var steed = require("steed"); +var steed = require('steed'); +var assert = chai.assert; -var moscaSettings = function() { - return { - port: 1883 - }; +var moscaSettings = function () { + return { + port: 1883, + http: { + port: 8000 + } + }; }; -describe("mosca.Server.error", function() { - var instance; - var secondInstance; - var settings; +var moscaSettings2 = function () { + return { + port: 1884, + http: { + port: 8000 + } + }; +}; - beforeEach(function(done) { - settings = moscaSettings(); - settings.publishNewClient = false; - settings.publishClientDisconnect = false; - instance = new mosca.Server(settings, done); - this.instance = instance; - this.settings = settings; - secondInstance = null; - }); +describe('mosca.Server.error', function () { + var instance; + var secondInstance; - afterEach(function(done) { - var instances = [this.instance]; + beforeEach(function (done) { + instance = null; + secondInstance = null; + done(); + }); - if (secondInstance) { - instances.push(secondInstance); - } + afterEach(function (done) { + this.instance = instance; + var instances = [this.instance]; - steed.each(instances, function(instance, cb) { - instance.close(cb); - }, function() { - setImmediate(done); - }); + if (secondInstance) { + instances.push(secondInstance); + } + + steed.each(instances, function (instance, cb) { + instance.close(cb); + }, function () { + setImmediate(done); + }); + }); + it('should get MQTT port Error: listen EADDRINUSE', function (done) { + this.timeout(10000); // have to wait for the inject with delay of two seconds + instance = new mosca.Server(moscaSettings(), function (err, server) { + assert.ifError(err); + expect(server === instance).to.be.true; + }); + secondInstance = new mosca.Server(moscaSettings(), function (err, server) { + assert.ifError(err); + expect(server === secondInstance).to.be.true; + }); + secondInstance.on('error', function (err) { + expect(err.toString().substr(0, 24)).to.be.equal('Error: listen EADDRINUSE'); + done(); + }); + }); + it('should get HTTP port Error: listen EADDRINUSE', function (done) { + this.timeout(10000); // have to wait for the inject with delay of two seconds + instance = new mosca.Server(moscaSettings(), function (err, server) { + assert.ifError(err); + expect(server === instance).to.be.true; + }); + secondInstance = new mosca.Server(moscaSettings2(), function (err, server) { + assert.ifError(err); + expect(server === secondInstance).to.be.true; }); - it("should get Error: listen EADDRINUSE :::1883", function(done) { - secondInstance = new mosca.Server(moscaSettings(), function(err, server) { - expect(server === secondInstance).to.be.true; - }); - secondInstance.on('error', function(err) { - expect(err.toString()).to.be.equal("Error: listen EADDRINUSE :::1883"); - done(); - }); + secondInstance.on('error', function (err) { + expect(err.toString().substr(0, 24)).to.be.equal('Error: listen EADDRINUSE'); + done(); }); + }); }); \ No newline at end of file