UNPKG

envkey

Version:

EnvKey secures and simplifies application secrets and config.

148 lines (129 loc) 4.17 kB
const VALID_ENVKEY = "wYv78UmHsfEu6jSqMZrU-3w1kwyF35nRYwsAJ-env-staging.envkey.com", INVALID_ENVKEY = "Emzt4BE7C23QtsC7gb1z-3NvfNiG1Boy6XH2oinvalid-env-staging.envkey.com", INVALID_ENVKEY2 = "Emzt4BE7C23QtsC7gb1zinvalid-3NvfNiG1Boy6XH2o-env-staging.envkey.com", INVALID_ENVKEY3 = "invalid" function clearEnv(){ delete process.env.ENVKEY delete process.env.TEST delete process.env.TEST_2 } test('it should load and decrypt environment via require autoload', () => { process.env.ENVKEY = VALID_ENVKEY require("../index.js") expect(process.env.TEST).toBe("it") expect(process.env.TEST_2).toBe("works!") clearEnv() }) test('it should load and decrypt environment via loader - synchronously', () => { process.env.ENVKEY = VALID_ENVKEY var loader = require("../loader.js") loader.load() expect(process.env.TEST).toBe("it") expect(process.env.TEST_2).toBe("works!") clearEnv() }) test('it should load and decrypt environment via loader - async', done => { process.env.ENVKEY = VALID_ENVKEY var loader = require("../loader.js") loader.load((err, res)=> { expect(err).toBeFalsy() expect(process.env.TEST).toBe("it") expect(process.env.TEST_2).toBe("works!") clearEnv() done() }) }) test('it should raise an error with an invalid envkey - synchronously', ()=> { process.env.ENVKEY = INVALID_ENVKEY expect(()=> { var loader = require("../loader.js") loader.load() }).toThrow(/ENVKEY invalid/) clearEnv() process.env.ENVKEY = INVALID_ENVKEY2 expect(()=> { var loader = require("../loader.js") loader.load() }).toThrow(/ENVKEY invalid/) clearEnv() process.env.ENVKEY = INVALID_ENVKEY3 expect(()=> { var loader = require("../loader.js") loader.load() }).toThrow(/ENVKEY invalid/) clearEnv() }) test('it should call callback with an err - async', done => { process.env.ENVKEY = INVALID_ENVKEY var loader = require("../loader.js") loader.load((err, res)=> { expect(err).not.toBeUndefined() expect(process.env.TEST).toBeUndefined() expect(process.env.TEST_2).toBeUndefined() clearEnv() done() }) }) test('it should load and decrypt environment via fetch - synchronously', () => { process.env.ENVKEY = VALID_ENVKEY var loader = require("../loader.js"), res = loader.fetch() expect(res.TEST).toBe("it") expect(res.TEST_2).toBe("works!") clearEnv() }) test('it should load and decrypt environment via fetch - asynchronously', done => { process.env.ENVKEY = VALID_ENVKEY var loader = require("../loader.js") loader.fetch((err, res)=> { expect(err).toBeFalsy() expect(res.TEST).toBe("it") expect(res.TEST_2).toBe("works!") clearEnv() done() }) }) test('fetch should raise an error with an invalid envkey - synchronously', ()=> { process.env.ENVKEY = INVALID_ENVKEY expect(()=> { var loader = require("../loader.js") loader.fetch() }).toThrow(/ENVKEY invalid/) clearEnv() }) test('fetch should call callback with an invalid envkey - async', done => { process.env.ENVKEY = INVALID_ENVKEY var loader = require("../loader.js") loader.fetch((err, res)=>{ expect(err).not.toBeUndefined() expect(res).toBeUndefined() clearEnv() done() }) }) test('it should not overwrite an existing process.env var', () => { process.env.ENVKEY = VALID_ENVKEY process.env.TEST = "otherthing" var loader = require("../loader.js") loader.load() expect(process.env.TEST).toBe("otherthing") expect(process.env.TEST_2).toBe("works!") clearEnv() }) test('it uses whitelist with "permitted" option', () => { process.env.ENVKEY = VALID_ENVKEY var loader = require("../loader.js") loader.load({permitted: ["TEST"]}) expect(process.env.TEST).toBe("it") expect(process.env.TEST_2).toBeUndefined() clearEnv() }) test('it not ovewrrite existing process.env var with "permitted" option', () => { process.env.ENVKEY = VALID_ENVKEY process.env.TEST = "otherthing" var loader = require("../loader.js") loader.load({permitted: ["TEST"]}) expect(process.env.TEST).toBe("otherthing") expect(process.env.TEST_2).toBeUndefined() clearEnv() })