Yet Another Plugin Server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

143 lines
3.8 KiB

var assert = require("assert");
var sinon = require("sinon");
var yaps = require("../");
suite("Server.Constructor", function(){
test("should setup default attributes", function(){
var server = new yaps.server();
assert.deepEqual(server.settings, {});
assert.equal(server.bind, "0.0.0.0:8000");
assert.deepEqual(server.enabledPlugins, []);
assert.deepEqual(server.routes, {});
assert.deepEqual(server.notFound, []);
assert.deepEqual(server.setup, []);
assert.ok(server.server.yaps);
});
test("should take our provided settings", function(){
var server = new yaps.server({
test: true,
bind: "127.0.0.1:9090",
});
assert.deepEqual(server.settings, {
test: true,
bind: "127.0.0.1:9090",
});
assert.equal(server.bind, "127.0.0.1:9090");
});
test("should take out provided http server", function(){
var server = new yaps.server({}, {
test: true,
});
var keys = [];
for(var key in server.server){
keys.push(key);
}
assert.deepEqual(keys, ["test", "yaps"]);
assert.equal(server.server.test, true);
assert.ok(server.server.yaps);
});
});
suite("Server.Stop", function(){
test("should call http_server.close on stop", function(){
var http_server_api = {
close: function(){}
};
var http_server = sinon.mock(http_server_api);
http_server.expects("close").once();
var server = new yaps.server({}, http_server_api);
server.stop();
http_server.verify();
});
});
suite("Server.ErrorHandler", function(){
test("should raise Error when errorHandler is called", function(){
var server = new yaps.server();
assert.throws(function(){
server.errorHandler("test error message");
}, Error);
});
});
suite("Server.Start", function(){
test("should call http_server.on and http_server.listen", function(){
var http_server_api = {
on: function(){},
listen: function(){}
};
var http_server = sinon.mock(http_server_api);
http_server.expects("listen").withArgs("8000", "0.0.0.0").once();
http_server.expects("on").twice();
var server = new yaps.server({}, http_server_api);
server.start();
http_server.verify();
});
test("should call http_server.listen with different http bind", function(){
var http_server_api = {
on: function(){},
listen: function(){}
};
var http_server = sinon.mock(http_server_api);
http_server.expects("listen").withArgs("9090", "127.0.0.1").once();
http_server.expects("on").twice();
var server = new yaps.server({
bind: "127.0.0.1:9090",
}, http_server_api);
server.start();
http_server.verify();
});
test("should call http_server.listen with unix socket", function(){
var http_server_api = {
on: function(){},
listen: function(){}
};
var http_server = sinon.mock(http_server_api);
http_server.expects("listen").withArgs("unix://tmp/my.sock").once();
http_server.expects("on").twice();
var server = new yaps.server({
bind: "unix://tmp/my.sock",
}, http_server_api);
server.start();
http_server.verify();
});
test("should raise error when bind has more than 1 :", function(){
var http_server = sinon.stub();
var http_server_api = {
on: function(){},
listen: function(){}
};
var http_server = sinon.mock(http_server_api);
var server = new yaps.server({
bind: "127.0.0.1:90:90",
}, http_server_api);
assert.throws(function(){
server.start();
}, Error);
});
test("should call http_server.listen properly with only port number", function(){
var http_server_api = {
on: function(){},
listen: function(){}
};
var http_server = sinon.mock(http_server_api);
http_server.expects("listen").withArgs("9090", "0.0.0.0").once();
http_server.expects("on").twice();
var server = new yaps.server({
bind: "9090",
}, http_server_api);
server.start();
http_server.verify();
});
});