| @ -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); | |||
| }); | |||
| }); | |||