UNPKG

subdomain-router

Version:

Routes incoming traffic to different ports based on subdomain

151 lines (123 loc) 4.07 kB
'use strict'; var proxy = require('..'); var testUtil = require('./testUtil'); var hostBase = 'subdomain-router-test.com'; // These hosts are added to the hosts file temporarily var hosts = [ hostBase, '.' + hostBase, 'a.' + hostBase, 'b.' + hostBase, 'c.' + hostBase, 'd.' + hostBase, 'd.e.f.' + hostBase ]; // Used to start and stop the proxy server var proxyServer; describe('subdomain-router', function () { before(function (done) { testUtil.addHostsFileEntries(hosts, function () { testUtil.startServers(done); }); }); after(function (done) { testUtil.removeHostsFileEntries(function () { testUtil.stopServers(done); }); }); describe('basic config', function() { before(function (done) { proxyServer = proxy({ host: hostBase, subdomains: { '': 10000, 'a': 10001, 'b': 10002, // c purposefully not defined 'd': 10005, 'd.e.f': 10004 } }); proxyServer.listen(80, done); }); after(function (done) { proxyServer.close(done); }); it('should get home page', function (done) { testUtil.assertResponse(hostBase, 'home page', done); }); it('should get subdomain a', function (done) { testUtil.assertResponse('a.' + hostBase, 'server a', done); }); it('should respond when server b is down', function (done) { var downText = 'There is usually something here, but it is down right now.'; testUtil.assertResponse('b.' + hostBase, downText, done); }); it('should respond when the proxy does not know about server c', function (done) { var invalidText = 'There is nothing running here.'; testUtil.assertResponse('c.' + hostBase, invalidText, done); }); it('should respond with an error message on a weird error', function (done) { var errorText = 'Server error.'; testUtil.errorServer().listen(10005, function () { testUtil.assertResponse('d.' + hostBase, errorText, done); }); }) it('should respond for multiple subdomains', function (done) { testUtil.assertResponse('d.e.f.' + hostBase, 'server d.e.f', done); }); it('should hit the home page for a missing Host header', function (done) { testUtil.assertMissingHostResponse(hostBase, 'home page', done); }); }); describe('no subdomain config', function () { before(function (done) { proxyServer = proxy({ host: hostBase, }); proxyServer.listen(80, done); }); after(function (done) { proxyServer.close(done); }); it('should return default home page text', function (done) { var homeText = 'This is the home page.'; testUtil.assertResponse(hostBase, homeText, done); }); }); describe('custom messages config', function () { before(function (done) { proxyServer = proxy({ host: hostBase, messages: { home: 'custom home message', down: 'custom down message', invalid: 'custom invalid message', error: 'custom error message' }, subdomains: { 'b': 10002, 'd': 10005 } }); proxyServer.listen(80, done); }); after(function (done) { proxyServer.close(done); }); it('should return a custom home message', function (done) { testUtil.assertResponse(hostBase, 'custom home message', done); }); it('should return a custom down message', function (done) { testUtil.assertResponse('b.' + hostBase, 'custom down message', done); }); it('should return a custom invalid message', function (done) { testUtil.assertResponse('c.' + hostBase, 'custom invalid message', done); }); it('should return a custom error message', function (done) { testUtil.errorServer().listen(10005, function () { testUtil.assertResponse('d.' + hostBase, 'custom error message', done); }); }); }); });