Start http.server tests

This commit is contained in:
Jake 2015-02-09 21:48:54 -06:00
parent 8fc63a9903
commit af421ecb49
2 changed files with 89 additions and 17 deletions

View File

@ -7,6 +7,7 @@ var http = require("http");
var mime = require("mime"); var mime = require("mime");
var url = require("url"); var url = require("url");
var fs = require("fs"); var fs = require("fs");
var server = null;
var routes = { var routes = {
index: require("./routes/index"), index: require("./routes/index"),
@ -53,22 +54,22 @@ function requestHandler(req, res) {
try { try {
switch (local_path) { switch (local_path) {
case "": case "":
routes.index(request, res); routes.index(request, res);
break; break;
case "avatars": case "avatars":
routes.avatars(request, res); routes.avatars(request, res);
break; break;
case "skins": case "skins":
routes.skins(request, res); routes.skins(request, res);
break; break;
case "renders": case "renders":
routes.renders(request, res); routes.renders(request, res);
break; break;
case "capes": case "capes":
routes.capes(request, res); routes.capes(request, res);
break; break;
default: default:
asset_request(request, res); asset_request(request, res);
} }
} catch(e) { } catch(e) {
var error = JSON.stringify(req.headers) + "\n" + e.stack; var error = JSON.stringify(req.headers) + "\n" + e.stack;
@ -86,15 +87,27 @@ function requestHandler(req, res) {
} }
} }
var boot = module.exports = function () { var exp = {};
exp.boot = function(callback) {
var port = process.env.PORT || 3000; var port = process.env.PORT || 3000;
var bind_ip = process.env.BIND || "127.0.0.1"; var bind_ip = process.env.BIND || "127.0.0.1";
console.log("Server running on http://" + bind_ip + ":" + port + "/"); console.log("Server running on http://" + bind_ip + ":" + port + "/");
http.createServer(requestHandler).listen(port, bind_ip); server = http.createServer(requestHandler).listen(port, bind_ip, function() {
callback();
});
}; };
exp.close = function(callback) {
server.close(function() {
callback();
});
}
module.exports = exp;
if (require.main === module) { if (require.main === module) {
boot(); exp.boot(function(){});
// cleaning worker // cleaning worker
setInterval(clean.run, config.cleaning_interval * 1000); setInterval(clean.run, config.cleaning_interval * 1000);

View File

@ -8,7 +8,8 @@ var config = require("../modules/config");
var skins = require("../modules/skins"); var skins = require("../modules/skins");
var cache = require("../modules/cache"); var cache = require("../modules/cache");
var renders = require("../modules/renders"); var renders = require("../modules/renders");
var cleaner = require("../modules/cleaner"); var server = require("../server");
var request = require("request");
// we don't want tests to fail because of slow internet // we don't want tests to fail because of slow internet
config.http_timeout *= 3; config.http_timeout *= 3;
@ -33,7 +34,7 @@ var ids = [
uuid.toLowerCase(), uuid.toLowerCase(),
name.toLowerCase(), name.toLowerCase(),
uuid.toUpperCase(), uuid.toUpperCase(),
name.toUpperCase() name.toUpperCase(),
]; ];
describe("Crafatar", function() { describe("Crafatar", function() {
@ -42,7 +43,6 @@ describe("Crafatar", function() {
before(function() { before(function() {
cache.get_redis().flushall(); cache.get_redis().flushall();
cleaner.run();
}); });
describe("UUID/username", function() { describe("UUID/username", function() {
@ -330,4 +330,63 @@ describe("Crafatar", function() {
}); });
})(id, id_type); })(id, id_type);
} }
describe("Server", function() {
before(function(done) {
server.boot(function() {
done();
});
});
// Test the home page
it("should return a 200", function(done) {
request.get('http://localhost:3000', function(error, res, body) {
assert.equal(200, res.statusCode);
done();
});
});
// invalid method, we only allow GET and HEAD requests
it("should return a 405", function(done) {
request.post('http://localhost:3000/avatars/Jake0oo0', function(error, res, body) {
assert.equal(405, res.statusCode);
done();
});
});
it("should return a 422 (invalid scale)", function(done) {
var scale = config.max_scale + 1;
request.get('http://localhost:3000/avatars/Jake0oo0?scale=' + scale, function(error, res, body) {
assert.equal(422, res.statusCode);
done();
});
});
it("should return a 422 (invalid uuid)", function(done) {
request.get('http://localhost:3000/avatars/thisisaninvaliduuid', function(error, res, body) {
assert.equal(422, res.statusCode);
done();
});
});
it("should return a 422 (invalid size)", function(done) {
var size = config.max_size + 1;
request.get('http://localhost:3000/renders/Jake0oo0?size=' + size, function(error, res, body) {
assert.equal(422, res.statusCode);
done();
});
});
it("should return a 301 (default image)", function(done) {
request.get('http://localhost:3000/renders/invalidjsvns?def=steve', function(error, res, body) {
assert.equal(301, res.statusCode);
done();
});
});
after(function(done) {
server.close(function() {
done();
})
});
});
}); });