From 8abb4f395ffaa66e753797313cb20ecc5353e63e Mon Sep 17 00:00:00 2001 From: Roman Shtylman Date: Sun, 20 Apr 2014 11:05:57 -0400 Subject: [PATCH] add test for invalid subdomain requests --- package.json | 4 ++-- server.js | 5 ++--- test/basic.js | 13 +++++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6058eb9..abd4544 100644 --- a/package.json +++ b/package.json @@ -30,10 +30,10 @@ }, "devDependencies": { "mocha": "1.18.2", - "localtunnel": "1.1.1" + "localtunnel": "1.1.2" }, "scripts": { - "test": "mocha --ui qunit -- test", + "test": "mocha --ui qunit --reporter list -- test", "start": "./bin/server" } } diff --git a/server.js b/server.js index 7cb2ab6..4ef9dc8 100644 --- a/server.js +++ b/server.js @@ -183,7 +183,7 @@ module.exports = function(opt) { // limit requested hostnames to 20 characters if (! /^[A-Za-z0-9]{4,20}$/.test(req_id)) { - var err = new Error(''); + var err = new Error('Invalid subdomain. Subdomains must be between 4 and 20 alphanumeric characters.'); err.statusCode = 403; return next(err); } @@ -191,8 +191,7 @@ module.exports = function(opt) { debug('making new client with id %s', req_id); new_client(req_id, opt, function(err, info) { if (err) { - res.statusCode = 500; - return res.end(err.message); + return next(err); } var url = schema + '://' + req_id + '.' + req.headers.host; diff --git a/test/basic.js b/test/basic.js index cff62f6..6a15d0d 100644 --- a/test/basic.js +++ b/test/basic.js @@ -91,6 +91,19 @@ test('request specific domain', function(done) { }); }); +test('request domain that is too long', function(done) { + var opt = { + host: 'http://localhost:' + lt_server_port, + subdomain: 'thisdomainisoutsidethesizeofwhatweallow' + }; + + localtunnel(test._fake_port, opt, function(err, tunnel) { + assert(err); + assert.equal(err.message, 'Invalid subdomain. Subdomains must be between 4 and 20 alphanumeric characters.'); + done(); + }); +}); + test('shutdown', function() { localtunnel_server.close(); });