| @ -0,0 +1,6 @@ | |||
| var assert = require("assert"); | |||
| var yaps = require("../"); | |||
| suite("Plugin.addRoute", function(){ | |||
| }); | |||
| @ -0,0 +1,51 @@ | |||
| var assert = require("assert"); | |||
| var yaps = require("../"); | |||
| suite("Plugin.on", function(){ | |||
| test("on setup should add setup handler", function(){ | |||
| var plugin = new yaps.plugin(); | |||
| var handler = function(request, server, done){}; | |||
| plugin.on("setup", handler); | |||
| assert.ok(plugin.setup); | |||
| assert.equal(plugin.setup.length, 1); | |||
| assert.equal(plugin.setup[0], handler); | |||
| }); | |||
| test("on not-found should set not-found handler", function(){ | |||
| var plugin = new yaps.plugin(); | |||
| var handler = function(request, server, respond){}; | |||
| plugin.on("not-found", handler); | |||
| assert.ok(plugin.notFound); | |||
| assert.equal(plugin.notFound, handler); | |||
| }); | |||
| test("calling on not-found twice should overwrite not-found handler", function(){ | |||
| var plugin = new yaps.plugin(); | |||
| var handler = function(request, server, respond){}; | |||
| plugin.on("not-found", false); | |||
| plugin.on("not-found", handler); | |||
| assert.ok(plugin.notFound); | |||
| assert.equal(plugin.notFound, handler); | |||
| }); | |||
| test("on 404 should set not-found handler", function(){ | |||
| var plugin = new yaps.plugin(); | |||
| var handler = function(request, server, respond){}; | |||
| plugin.on("404", handler); | |||
| assert.ok(plugin.notFound); | |||
| assert.equal(plugin.notFound, handler); | |||
| }); | |||
| test("on with unknown event should raise Error", function(){ | |||
| var plugin = new yaps.plugin(); | |||
| assert.throws(function(){ | |||
| plugin.on("uknown-event", false); | |||
| }, Error); | |||
| }); | |||
| }); | |||
| @ -0,0 +1,42 @@ | |||
| var assert = require("assert"); | |||
| 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); | |||
| }); | |||
| }); | |||
| @ -0,0 +1,12 @@ | |||
| var assert = require("assert"); | |||
| var yaps = require("../"); | |||
| 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); | |||
| }); | |||
| }); | |||
| @ -1,260 +0,0 @@ | |||
| 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.RegisterPlugin", function(){ | |||
| test("should push an instance of the plugin to server.enabledPlugins", function(){ | |||
| var plugin = function(options){ | |||
| this.test = true; | |||
| this.settings = options; | |||
| }; | |||
| var server = new yaps.server({ | |||
| some: "setting", | |||
| }); | |||
| server.registerPlugin(plugin); | |||
| assert.equal(server.enabledPlugins.length, 1); | |||
| assert.equal(server.enabledPlugins[0].test, true); | |||
| assert.deepEqual(server.enabledPlugins[0].settings, { | |||
| some: "setting", | |||
| }); | |||
| }); | |||
| test("should transfer routes from plugin to server", function(){ | |||
| var plugin = function(options){ | |||
| this.routes = { | |||
| GET: { | |||
| "/test": [ | |||
| "handler_1", | |||
| "handler_2", | |||
| ] | |||
| }, | |||
| TEST: { | |||
| "/test": [ | |||
| "handler_3", | |||
| "handler_4", | |||
| ] | |||
| } | |||
| }; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin); | |||
| assert.ok(server.routes.GET); | |||
| assert.ok(server.routes.TEST); | |||
| assert.deepEqual(server.routes.GET["/test"], ["handler_1", "handler_2"]); | |||
| assert.deepEqual(server.routes.TEST["/test"], ["handler_3", "handler_4"]); | |||
| }); | |||
| test("should transfer routes from multiple plugins without overwriting any", function(){ | |||
| var plugin_1 = function(options){ | |||
| this.routes = { | |||
| GET: { | |||
| "/test": [ | |||
| "handler_1", | |||
| "handler_2", | |||
| ] | |||
| }, | |||
| }; | |||
| }; | |||
| var plugin_2 = function(options){ | |||
| this.routes = { | |||
| GET: { | |||
| "/test": [ | |||
| "handler_3", | |||
| "handler_4", | |||
| ] | |||
| }, | |||
| }; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin_1); | |||
| server.registerPlugin(plugin_2); | |||
| assert.ok(server.routes.GET); | |||
| assert.deepEqual(server.routes.GET["/test"], ["handler_1", "handler_2", "handler_3", "handler_4"]); | |||
| }); | |||
| test("should append plugins notFound to server", function(){ | |||
| var plugin = function(options){ | |||
| this.notFound = "handler"; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin); | |||
| assert.deepEqual(server.notFound, ["handler"]); | |||
| }); | |||
| test("should append notFound from multiple plugins", function(){ | |||
| var plugin_1 = function(options){ | |||
| this.notFound = "handler_1"; | |||
| }; | |||
| var plugin_2 = function(options){ | |||
| this.notFound = "handler_2"; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin_1); | |||
| server.registerPlugin(plugin_2); | |||
| assert.deepEqual(server.notFound, ["handler_1", "handler_2"]); | |||
| }); | |||
| test("should append plugins setup to server", function(){ | |||
| var plugin = function(options){ | |||
| this.setup = ["handler_1", "handler_2"]; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin); | |||
| assert.deepEqual(server.setup, ["handler_1", "handler_2"]); | |||
| }); | |||
| test("should append setup from multiple plugins", function(){ | |||
| var plugin_1 = function(options){ | |||
| this.setup = ["handler_1", "handler_2"]; | |||
| }; | |||
| var plugin_2 = function(options){ | |||
| this.setup = ["handler_3", "handler_4"]; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin_1); | |||
| server.registerPlugin(plugin_2); | |||
| assert.deepEqual(server.setup, ["handler_1", "handler_2", "handler_3", "handler_4"]); | |||
| }); | |||
| }); | |||
| 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_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(); | |||
| }); | |||
| }); | |||
| @ -0,0 +1,122 @@ | |||
| var assert = require("assert"); | |||
| var yaps = require("../"); | |||
| suite("Server.RegisterPlugin", function(){ | |||
| test("should push an instance of the plugin to server.enabledPlugins", function(){ | |||
| var plugin = function(options){ | |||
| this.test = true; | |||
| this.settings = options; | |||
| }; | |||
| var server = new yaps.server({ | |||
| some: "setting", | |||
| }); | |||
| server.registerPlugin(plugin); | |||
| assert.equal(server.enabledPlugins.length, 1); | |||
| assert.equal(server.enabledPlugins[0].test, true); | |||
| assert.deepEqual(server.enabledPlugins[0].settings, { | |||
| some: "setting", | |||
| }); | |||
| }); | |||
| test("should transfer routes from plugin to server", function(){ | |||
| var plugin = function(options){ | |||
| this.routes = { | |||
| GET: { | |||
| "/test": [ | |||
| "handler_1", | |||
| "handler_2", | |||
| ] | |||
| }, | |||
| TEST: { | |||
| "/test": [ | |||
| "handler_3", | |||
| "handler_4", | |||
| ] | |||
| } | |||
| }; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin); | |||
| assert.ok(server.routes.GET); | |||
| assert.ok(server.routes.TEST); | |||
| assert.deepEqual(server.routes.GET["/test"], ["handler_1", "handler_2"]); | |||
| assert.deepEqual(server.routes.TEST["/test"], ["handler_3", "handler_4"]); | |||
| }); | |||
| test("should transfer routes from multiple plugins without overwriting any", function(){ | |||
| var plugin_1 = function(options){ | |||
| this.routes = { | |||
| GET: { | |||
| "/test": [ | |||
| "handler_1", | |||
| "handler_2", | |||
| ] | |||
| }, | |||
| }; | |||
| }; | |||
| var plugin_2 = function(options){ | |||
| this.routes = { | |||
| GET: { | |||
| "/test": [ | |||
| "handler_3", | |||
| "handler_4", | |||
| ] | |||
| }, | |||
| }; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin_1); | |||
| server.registerPlugin(plugin_2); | |||
| assert.ok(server.routes.GET); | |||
| assert.deepEqual(server.routes.GET["/test"], ["handler_1", "handler_2", "handler_3", "handler_4"]); | |||
| }); | |||
| test("should append plugins notFound to server", function(){ | |||
| var plugin = function(options){ | |||
| this.notFound = "handler"; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin); | |||
| assert.deepEqual(server.notFound, ["handler"]); | |||
| }); | |||
| test("should append notFound from multiple plugins", function(){ | |||
| var plugin_1 = function(options){ | |||
| this.notFound = "handler_1"; | |||
| }; | |||
| var plugin_2 = function(options){ | |||
| this.notFound = "handler_2"; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin_1); | |||
| server.registerPlugin(plugin_2); | |||
| assert.deepEqual(server.notFound, ["handler_1", "handler_2"]); | |||
| }); | |||
| test("should append plugins setup to server", function(){ | |||
| var plugin = function(options){ | |||
| this.setup = ["handler_1", "handler_2"]; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin); | |||
| assert.deepEqual(server.setup, ["handler_1", "handler_2"]); | |||
| }); | |||
| test("should append setup from multiple plugins", function(){ | |||
| var plugin_1 = function(options){ | |||
| this.setup = ["handler_1", "handler_2"]; | |||
| }; | |||
| var plugin_2 = function(options){ | |||
| this.setup = ["handler_3", "handler_4"]; | |||
| }; | |||
| var server = new yaps.server(); | |||
| server.registerPlugin(plugin_1); | |||
| server.registerPlugin(plugin_2); | |||
| assert.deepEqual(server.setup, ["handler_1", "handler_2", "handler_3", "handler_4"]); | |||
| }); | |||
| }); | |||
| @ -0,0 +1,80 @@ | |||
| var assert = require("assert"); | |||
| var sinon = require("sinon"); | |||
| var yaps = require("../"); | |||
| 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_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(); | |||
| }); | |||
| }); | |||
| @ -0,0 +1,18 @@ | |||
| var assert = require("assert"); | |||
| var sinon = require("sinon"); | |||
| var yaps = require("../"); | |||
| 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(); | |||
| }); | |||
| }); | |||