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.
 
 

129 lines
3.9 KiB

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.enabledPlugins = [{}];
server.routes.GET = {
"/test": [
[handler_spy, 0],
]
};
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){
request.addHeader("extra", "header");
respond(200, "here is a test");
};
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.enabledPlugins = [{}];
server.routes.GET = {
"/test": [
[handler_spy, 0],
]
};
server.rootHandler.call(server.server, {
url: "/test",
method: "GET",
}, response_api);
});
});