UNPKG

env-contract-check

Version:

Create a contract of environment varaibles for different environments.

157 lines (148 loc) 4.25 kB
const debug = require('debug')('TEST'); const { spawn } = require('child_process'); describe('Test Scenarios', () => { describe('base case', () => { it('varaible set - exit cleanly', (done) => { const p = spawn('node', ['./test/scenarios/base-case.js'], { stdio: 'pipe', env: { NODE_ENV: 'development', MONGO_URL: 'EXTERNAL', }, }); p.stdout.on('data', data => debug(data.toString())); p.on('exit', (code) => { if (code === 0) { done(); } else { throw new Error(`test failed ${code}`); } }); }); it('NODE_ENV not set - exit cleanly', (done) => { const p = spawn('node', ['./test/scenarios/base-case.js'], { stdio: 'pipe', env: { // NODE_ENV: 'development', MONGO_URL: 'EXTERNAL', }, }); p.stdout.on('data', data => debug(data.toString())); p.on('exit', (code) => { if (code === 0) { done(); } else { throw new Error(`test failed ${code}`); } }); }); it('should error if missing the env varaible', (done) => { const p = spawn('node', ['./test/scenarios/base-case.js'], { stdio: 'pipe', env: { NODE_ENV: 'development', // MONGO_URL: 'EXTERNAL', }, }); p.stdout.on('data', data => debug(data.toString())); p.on('exit', (code) => { if (code !== 0) { done(); } else { throw new Error(`test failed ${code}`); } }); }); }); describe('base case with default', () => { it('should pass even thought env varaible is not set', (done) => { const p = spawn('node', ['./test/scenarios/base-case-default.js'], { stdio: 'pipe', env: { NODE_ENV: 'development', // MONGO_URL: 'EXTERNAL', }, }); p.stdout.on('data', data => debug(data.toString())); p.on('exit', (code) => { if (code === 0) { done(); } else { throw new Error(`test failed ${code}`); } }); }); it('should error becasue of missing env in production', (done) => { const p = spawn('node', ['./test/scenarios/base-case-default.js'], { stdio: 'pipe', env: { NODE_ENV: 'production', // MONGO_URL: 'EXTERNAL', }, }); p.stdout.on('data', data => debug(data.toString())); p.on('exit', (code) => { if (code !== 0) { done(); } else { throw new Error(`test failed ${code}`); } }); }); }); describe('base case optional true', () => { it('should not error if missing the env varaible', (done) => { const p = spawn('node', ['./test/scenarios/base-case-optional.js'], { stdio: 'pipe', env: { NODE_ENV: 'development', // MONGO_URL: 'EXTERNAL', }, }); p.stdout.on('data', data => debug(data.toString())); p.on('exit', (code) => { if (code === 0) { done(); } else { throw new Error(`test failed ${code}`); } }); }); }); describe('test strict', () => { it('should pass beacuse NODE_ENV is set', (done) => { const p = spawn('node', ['./test/scenarios/strict-test.js'], { stdio: 'pipe', env: { NODE_ENV: 'development', // MONGO_URL: 'EXTERNAL', }, }); p.stdout.on('data', data => debug(data.toString())); p.on('exit', (code) => { if (code === 0) { done(); } else { throw new Error(`test failed ${code}`); } }); }); it('should fail beacuse NODE_ENV is not set', (done) => { const p = spawn('node', ['./test/scenarios/strict-test.js'], { stdio: 'pipe', env: { // NODE_ENV: 'development', // MONGO_URL: 'EXTERNAL', }, }); p.stdout.on('data', data => debug(data.toString())); p.on('exit', (code) => { if (code !== 0) { done(); } else { throw new Error(`test failed ${code}`); } }); }); }); });