From bcb0d8f3afa53e6e778ba3eec9e7dc2ced0a7f43 Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Sat, 31 Aug 2013 08:26:39 -0400 Subject: [PATCH] =?UTF-8?q?test=20coverage,=20it's=20a=20good=20thing=20?= =?UTF-8?q?=E2=84=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/server.rootHandler.js | 126 +++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 test/server.rootHandler.js diff --git a/test/server.rootHandler.js b/test/server.rootHandler.js new file mode 100644 index 0000000..b5d6ba7 --- /dev/null +++ b/test/server.rootHandler.js @@ -0,0 +1,126 @@ +var assert = require("assert"); + +var sinon = require("sinon"); + +var yaps = require("../"); + +suite("Server.RootHandler", function(){ + test("should call default 404 when no handlers, setup or notFounds registered", function(done){ + var response_api = { + writeHead: function(){}, + end: function(){} + }; + + var response_writeHead = sinon.stub(response_api, "writeHead"); + var response_end = sinon.stub(response_api, "end", function(){ + assert.ok(this.writeHead.calledOnce); + assert.ok(this.end.calledOnce); + + assert.ok(this.writeHead.calledWith(404)); + assert.ok(this.end.calledWith("Not Found")); + done(); + }); + var server = new yaps.server(); + + server.rootHandler.call(server.server, { + url: "/test", + method: "GET", + }, response_api); + }); + + test("should call default 404 when no handlers respond", function(done){ + var handler = function(request, server, respond){ + respond(null); + }; + var handler_spy = sinon.spy(handler); + + var response_api = { + writeHead: function(){}, + end: function(){} + }; + var response_writeHead = sinon.stub(response_api, "writeHead"); + var response_end = sinon.stub(response_api, "end", function(){ + assert.ok(handler_spy.calledOnce); + + assert.ok(this.writeHead.calledOnce); + assert.ok(this.end.calledOnce); + + assert.ok(this.writeHead.calledWith(404)); + assert.ok(this.end.calledWith("Not Found")); + done(); + }); + + var server = new yaps.server(); + server.routes.GET = { + "/test": [ + handler_spy, + ] + }; + + server.rootHandler.call(server.server, { + url: "/test", + method: "GET", + }, response_api); + }); + + test("should call default 404 when route has no handlers", function(done){ + var response_api = { + writeHead: function(){}, + end: function(){} + }; + + var response_writeHead = sinon.stub(response_api, "writeHead"); + var response_end = sinon.stub(response_api, "end", function(){ + assert.ok(this.writeHead.calledOnce); + assert.ok(this.end.calledOnce); + + assert.ok(this.writeHead.calledWith(404)); + assert.ok(this.end.calledWith("Not Found")); + done(); + }); + var server = new yaps.server(); + server.routes.GET = { + "/test": [] + }; + + server.rootHandler.call(server.server, { + url: "/test", + method: "GET", + }, response_api); + }); + + test("should properly end response when handler responds", function(done){ + var handler = function(request, server, respond){ + respond(200, "here is a test", {extra: "header"}); + }; + var handler_spy = sinon.spy(handler); + + var response_api = { + writeHead: function(){}, + end: function(){} + }; + var response_writeHead = sinon.stub(response_api, "writeHead"); + var response_end = sinon.stub(response_api, "end", function(){ + assert.ok(handler_spy.calledOnce); + + assert.ok(this.writeHead.calledOnce); + assert.ok(this.end.calledOnce); + + assert.ok(this.writeHead.calledWith(200, {extra: "header"})); + assert.ok(this.end.calledWith("here is a test")); + done(); + }); + + var server = new yaps.server(); + server.routes.GET = { + "/test": [ + handler_spy, + ] + }; + + server.rootHandler.call(server.server, { + url: "/test", + method: "GET", + }, response_api); + }); +});