jsperf/jsperf.com

View on GitHub
test/unit/config.js

Summary

Maintainability
C
1 day
Test Coverage
const Lab = require('lab');
const Code = require('code');
const Proxyquire = require('proxyquire').noPreserveCache();

const Config = Proxyquire('../../config', {
  'dotenv': {
    config: () => {
      // set environment variables that should be in .env file
      [
        'GITHUB_CLIENT_SECRET',
        'GITHUB_CLIENT_ID',
        'GITHUB_CALLBACK',
        'BELL_COOKIE_PASS',
        'COOKIE_PASS',
        'BROWSERSCOPE',
        'MYSQL_USER',
        'MYSQL_PASSWORD',
        'MYSQL_DATABASE'
      ].map((k) => {
        process.env[k] = k;
      });
    }
  }
});

const lab = exports.lab = Lab.script();

lab.experiment('Config', function () {
  lab.test('it gets config data', function (done) {
    Code.expect(Config.get('/')).to.be.an.object();
    done();
  });

  lab.test('it gets config meta data', function (done) {
    Code.expect(Config.meta('/')).to.match(/jsPerf/i);
    done();
  });

  lab.experiment('defaults', () => {
    lab.test('it gets scheme', (done) => {
      Code.expect(Config.get('/scheme')).to.equal('http');
      done();
    });

    lab.test('it gets port', (done) => {
      Code.expect(Config.get('/port')).to.equal(3000);
      done();
    });

    lab.test('it gets domain', (done) => {
      Code.expect(Config.get('/domain')).to.equal('localhost');
      done();
    });

    lab.test('it gets mysql host', (done) => {
      Code.expect(Config.get('/mysql/host')).to.equal('localhost');
      done();
    });

    lab.test('it gets mysql port', (done) => {
      Code.expect(Config.get('/mysql/port')).to.equal(3306);
      done();
    });
  });

  lab.experiment('Cookies', function () {
    lab.test('it secures the bell cookie if the scheme is https', function (done) {
      Code.expect(Config.get('/auth/oauth/secure', {scheme: 'https'})).to.equal(true);
      done();
    });

    lab.test('it does not secure the bell cookie if the scheme is http', function (done) {
      Code.expect(Config.get('/auth/oauth/secure', {scheme: 'http'})).to.equal(false);
      done();
    });

    lab.test('it does not secure the general cookie if the scheme is http', function (done) {
      Code.expect(Config.get('/auth/session/secure', {scheme: 'http'})).to.equal(false);
      done();
    });

    lab.test('it secures the general cookie if the scheme is https', function (done) {
      Code.expect(Config.get('/auth/session/secure', {scheme: 'https'})).to.equal(true);
      done();
    });
  });

  lab.test('validates process.env', (done) => {
    Code.expect(function () {
      Proxyquire('../../config', {
        'joi': {
          validate: () => ({
            error: {
              details: [
                {
                  path: 'TESTING'
                }
              ]
            }
          })
        }
      });
    }).to.throw(Error);

    done();
  });
});