mirror of
https://github.com/azures04/crafatar.git
synced 2026-03-22 16:01:16 +01:00
Test invalid UUIDs on all routes
This commit is contained in:
parent
df56c38d03
commit
04cd39ae9f
329
test/test.js
329
test/test.js
@ -31,10 +31,10 @@ function getRandomInt(min, max) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var ids = [
|
var ids = [
|
||||||
uuid.toLowerCase(),
|
uuid.toLowerCase(),
|
||||||
name.toLowerCase(),
|
name.toLowerCase(),
|
||||||
uuid.toUpperCase(),
|
uuid.toUpperCase(),
|
||||||
name.toUpperCase(),
|
name.toUpperCase(),
|
||||||
];
|
];
|
||||||
|
|
||||||
describe("Crafatar", function() {
|
describe("Crafatar", function() {
|
||||||
@ -101,7 +101,7 @@ describe("Crafatar", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("Avatar", function() {
|
describe("Avatar", function() {
|
||||||
// profile "Alex" - hoping it'll never have a skin
|
// profile "Alex" - hoping it'll never have a skin
|
||||||
var alex_uuid = "ec561538f3fd461daff5086b22154bce";
|
var alex_uuid = "ec561538f3fd461daff5086b22154bce";
|
||||||
// profile "Steven" (Steve doesn't exist) - hoping it'll never have a skin
|
// profile "Steven" (Steve doesn't exist) - hoping it'll never have a skin
|
||||||
@ -125,54 +125,132 @@ describe("Crafatar", function() {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe("Errors", function() {
|
describe("Errors", function() {
|
||||||
it("should time out on uuid info download", function(done) {
|
it("should time out on uuid info download", function(done) {
|
||||||
var original_timeout = config.http_timeout;
|
var original_timeout = config.http_timeout;
|
||||||
config.http_timeout = 1;
|
config.http_timeout = 1;
|
||||||
networking.get_profile(rid, "069a79f444e94726a5befca90e38aaf5", function(err, profile) {
|
networking.get_profile(rid, "069a79f444e94726a5befca90e38aaf5", function(err, profile) {
|
||||||
assert.strictEqual(err.code, "ETIMEDOUT");
|
assert.strictEqual(err.code, "ETIMEDOUT");
|
||||||
config.http_timeout = original_timeout;
|
config.http_timeout = original_timeout;
|
||||||
done();
|
done();
|
||||||
});
|
|
||||||
});
|
});
|
||||||
it("should time out on username info download", function(done) {
|
});
|
||||||
var original_timeout = config.http_timeout;
|
it("should time out on username info download", function(done) {
|
||||||
config.http_timeout = 1;
|
var original_timeout = config.http_timeout;
|
||||||
networking.get_username_url(rid, "jomo", 0, function(err, url) {
|
config.http_timeout = 1;
|
||||||
assert.strictEqual(err.code, "ETIMEDOUT");
|
networking.get_username_url(rid, "jomo", 0, function(err, url) {
|
||||||
config.http_timeout = original_timeout;
|
assert.strictEqual(err.code, "ETIMEDOUT");
|
||||||
done();
|
config.http_timeout = original_timeout;
|
||||||
});
|
done();
|
||||||
});
|
});
|
||||||
it("should time out on skin download", function(done) {
|
});
|
||||||
var original_timeout = config.http_timeout;
|
it("should time out on skin download", function(done) {
|
||||||
config.http_timeout = 1;
|
var original_timeout = config.http_timeout;
|
||||||
networking.get_from(rid, "http://textures.minecraft.net/texture/477be35554684c28bdeee4cf11c591d3c88afb77e0b98da893fd7bc318c65184", function(body, res, error) {
|
config.http_timeout = 1;
|
||||||
assert.strictEqual(error.code, "ETIMEDOUT");
|
networking.get_from(rid, "http://textures.minecraft.net/texture/477be35554684c28bdeee4cf11c591d3c88afb77e0b98da893fd7bc318c65184", function(body, res, error) {
|
||||||
config.http_timeout = original_timeout;
|
assert.strictEqual(error.code, "ETIMEDOUT");
|
||||||
done();
|
config.http_timeout = original_timeout;
|
||||||
});
|
done();
|
||||||
});
|
});
|
||||||
it("should not find the skin", function(done) {
|
});
|
||||||
assert.doesNotThrow(function() {
|
it("should not find the skin", function(done) {
|
||||||
networking.get_from(rid, "http://textures.minecraft.net/texture/this-does-not-exist", function(img, response, err) {
|
assert.doesNotThrow(function() {
|
||||||
|
networking.get_from(rid, "http://textures.minecraft.net/texture/this-does-not-exist", function(img, response, err) {
|
||||||
assert.strictEqual(err, null); // no error here, but it shouldn't throw exceptions
|
assert.strictEqual(err, null); // no error here, but it shouldn't throw exceptions
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
|
||||||
});
|
});
|
||||||
it("should ignore file updates on invalid files", function(done) {
|
});
|
||||||
assert.doesNotThrow(function() {
|
it("should ignore file updates on invalid files", function(done) {
|
||||||
cache.update_timestamp(rid, "0123456789abcdef0123456789abcdef", "invalid-file.png");
|
assert.doesNotThrow(function() {
|
||||||
});
|
cache.update_timestamp(rid, "0123456789abcdef0123456789abcdef", "invalid-file.png");
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
it("should not find the file", function(done) {
|
||||||
|
skins.open_skin(rid, 'non/existant/path', function(err, img) {
|
||||||
|
assert.notStrictEqual(err, null);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
it("should not find the file", function(done) {
|
});
|
||||||
skins.open_skin(rid, 'non/existant/path', function(err, img) {
|
});
|
||||||
assert.notStrictEqual(err, null);
|
|
||||||
|
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();
|
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 size)", function(done) {
|
||||||
|
var size = config.max_size + 1;
|
||||||
|
request.get('http://localhost:3000/avatars/Jake0oo0?size=' + size, function(error, res, body) {
|
||||||
|
assert.equal(422, res.statusCode);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var locations = ["avatars", "capes", "skins", "renders/head"]
|
||||||
|
for (var l in locations) {
|
||||||
|
var location = locations[l];
|
||||||
|
it("should return a 422 (invalid uuid " + location + ")", function(done) {
|
||||||
|
request.get('http://localhost:3000/' + location + '/thisisaninvaliduuid', function(error, res, body) {
|
||||||
|
assert.equal(422, res.statusCode);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
it("should return a 422 (invalid scale)", function(done) {
|
||||||
|
var scale = config.max_scale + 1;
|
||||||
|
request.get('http://localhost:3000/renders/head/Jake0oo0?scale=' + scale, function(error, res, body) {
|
||||||
|
assert.equal(422, res.statusCode);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return a 404 (default steve image)", function(done) {
|
||||||
|
request.get('http://localhost:3000/avatars/invalidjsvns?default=steve', function(error, res, body) {
|
||||||
|
assert.equal(404, res.statusCode);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return a 200 (default external image)", function(done) {
|
||||||
|
request.get('http://localhost:3000/avatars/invalidjsvns?default=https%3A%2F%2Fi.imgur.com%2FocJVWAc.png', function(error, res, body) {
|
||||||
|
assert.equal(200, res.statusCode);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return a 404 (no cape)", function(done) {
|
||||||
|
request.get('http://localhost:3000/capes/Jake0oo0', function(error, res, body) {
|
||||||
|
assert.equal(404, res.statusCode);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
after(function(done) {
|
||||||
|
server.close(function() {
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// we have to make sure that we test both a 32x64 and 64x64 skin
|
// we have to make sure that we test both a 32x64 and 64x64 skin
|
||||||
@ -273,120 +351,61 @@ describe("Crafatar", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("Networking: Skin", function() {
|
describe("Networking: Skin", function() {
|
||||||
it("should not fail (uuid)", function(done) {
|
it("should not fail (uuid)", function(done) {
|
||||||
helpers.get_skin(rid, id, function(err, hash, img) {
|
helpers.get_skin(rid, id, function(err, hash, img) {
|
||||||
assert.strictEqual(err, null);
|
assert.strictEqual(err, null);
|
||||||
done();
|
done();
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("Networking: Render", function() {
|
|
||||||
it("should not fail (full body)", function(done) {
|
|
||||||
helpers.get_render(rid, id, 6, true, true, function(err, hash, img) {
|
|
||||||
assert.strictEqual(err, null);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it("should not fail (only head)", function(done) {
|
|
||||||
helpers.get_render(rid, id, 6, true, false, function(err, hash, img) {
|
|
||||||
assert.strictEqual(err, null);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("Networking: Cape", function() {
|
|
||||||
it("should not fail (possible cape)", function(done) {
|
|
||||||
helpers.get_cape(rid, id, function(err, hash, img) {
|
|
||||||
assert.strictEqual(err, null);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
describe("Errors", function() {
|
|
||||||
before(function() {
|
|
||||||
cache.get_redis().flushall();
|
|
||||||
});
|
|
||||||
|
|
||||||
if (id_type == "uuid") {
|
|
||||||
it("uuid should be rate limited", function(done) {
|
|
||||||
networking.get_profile(rid, id, function(err, profile) {
|
|
||||||
assert.strictEqual(profile.error, "TooManyRequestsException");
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
it("username should NOT be rate limited (username)", function(done) {
|
|
||||||
helpers.get_avatar(rid, id, false, 160, function(err, status, image) {
|
|
||||||
assert.strictEqual(err, null);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})(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();
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Networking: Render", function() {
|
||||||
|
it("should not fail (full body)", function(done) {
|
||||||
|
helpers.get_render(rid, id, 6, true, true, function(err, hash, img) {
|
||||||
|
assert.strictEqual(err, null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it("should not fail (only head)", function(done) {
|
||||||
|
helpers.get_render(rid, id, 6, true, false, function(err, hash, img) {
|
||||||
|
assert.strictEqual(err, null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Networking: Cape", function() {
|
||||||
|
it("should not fail (possible cape)", function(done) {
|
||||||
|
helpers.get_cape(rid, id, function(err, hash, img) {
|
||||||
|
assert.strictEqual(err, null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
describe("Errors", function() {
|
||||||
|
before(function() {
|
||||||
|
cache.get_redis().flushall();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (id_type == "uuid") {
|
||||||
|
it("uuid should be rate limited", function(done) {
|
||||||
|
networking.get_profile(rid, id, function(err, profile) {
|
||||||
|
assert.strictEqual(profile.error, "TooManyRequestsException");
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
it("username should NOT be rate limited (username)", function(done) {
|
||||||
|
helpers.get_avatar(rid, id, false, 160, function(err, status, image) {
|
||||||
|
assert.strictEqual(err, null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(id, id_type);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
Loading…
x
Reference in New Issue
Block a user