UNPKG

express-subdomain

Version:

Simple and lightweight middleware to handle subdomains

92 lines (74 loc) 2.2 kB
var colors = require('colors'); var request = require('request'); var expect = require('chai').expect; var express = require('express'); var subdomain = require('../'); var config = require('./config.json'); ////////////////////////////// // expected responses // ////////////////////////////// var responses = { main: { '/': 'Simple example homepage!' }, api: { '/': 'Welcome to our simple API!', '/users': [{ name: "Brian" }] } }; ////////////////////////////// // routes // ////////////////////////////// var router = express.Router(); //api specific routes router.get('/', function(req, res) { res.send(responses.api['/']); }); router.get('/users', function(req, res) { res.json(responses.api['/users']); }); ////////////////////////////// // express app // ////////////////////////////// var app = express(); app.use(subdomain('api', router)); app.get('/', function (req, res) { res.send(responses.main['/']); }); describe('Simple tests', function () { //to be assigned in the 'before' hook (below) var server; before(function (done) { server = app.listen(config.PORT, config.HOSTNAME, done); }); /////////////////////////////// // example.com // /////////////////////////////// it('GET ' + config.urls.BASE_URL, function (done) { request('http://'+ config.urls.BASE_URL, function (error, res, body) { expect(body).to.equal(responses.main['/']); done(); }); }); /////////////////////////////// // api.example.com // /////////////////////////////// it('GET ' + config.urls.API_URL, function (done) { request('http://' + config.urls.API_URL, function (error, res, body) { expect(body).to.equal(responses.api['/']); done(); }); }); it('GET ' + config.urls.API_URL + '/users', function (done) { request('http://' + config.urls.API_URL + '/users', function (error, res, body) { expect(body).to.equal( JSON.stringify(responses.api['/users']) ); done(); }); }); after(function(done) { server.close(function() { console.log(' ♻ server recycled'.cyan); done(); }); }); });