UNPKG

buddyworks-cli

Version:

Command line tool for managing pipelines in Buddy Works

230 lines (208 loc) 8.35 kB
const mocha = require('mocha'); const chai = require('chai'); const cfg = require('../src/config'); const utils = require('./utils'); const { expect } = chai; const { describe } = mocha; const { it } = mocha; describe('config', () => { describe('.setAlias()', () => { it('should save alias', () => { const key = utils.randomString(10); const val = utils.randomString(10); cfg.setAlias(key, val); expect(cfg.getAlias(key)).equal(val); }); it('should clear alias', () => { const key = utils.randomString(10); const val = utils.randomString(10); cfg.setAlias(key, val); cfg.setAlias(key, ''); expect(cfg.getAlias(key)).equal(''); }); it('should save alias on disc', () => { const key = utils.randomString(10); const val = utils.randomString(10); cfg.setAlias(key, val); const cfg2 = new cfg.constructor(); expect(cfg2.getAlias(key)).equal(val); }); }); describe('.set()', () => { it('should throw error while using wrong key', () => { expect(cfg.set.bind(cfg, 'key', 'val')).throw('Wrong key'); }); it('should set value in object', () => { const token = utils.randomString(10); const url = utils.randomString(10); const workspace = utils.randomString(10); const project = utils.randomString(10); const pipeline = utils.randomString(10); cfg.set(cfg.KEY_TOKEN, token); cfg.set(cfg.KEY_URL, url); cfg.set(cfg.KEY_WORKSPACE, workspace); cfg.set(cfg.KEY_PROJECT, project); cfg.set(cfg.KEY_PIPELINE, pipeline); expect(cfg.get(cfg.KEY_TOKEN)).equal(token); expect(cfg.get(cfg.KEY_URL)).equal(url); expect(cfg.get(cfg.KEY_WORKSPACE)).equal(workspace); expect(cfg.get(cfg.KEY_PROJECT)).equal(project); expect(cfg.get(cfg.KEY_PIPELINE)).equal(pipeline); }); it('should save value on disc', () => { const key = cfg.KEY_TOKEN; const val = utils.randomString(10); cfg.set(key, val); const cfg2 = new cfg.constructor(); expect(cfg2.get(key)).equal(val); }); }); describe('.isAllowedKey()', () => { it('should return true for every valid key', () => { expect(cfg.isAllowedKey(cfg.KEY_URL)).equal(true); expect(cfg.isAllowedKey(cfg.KEY_TOKEN)).equal(true); expect(cfg.isAllowedKey(cfg.KEY_WORKSPACE)).equal(true); expect(cfg.isAllowedKey(cfg.KEY_PROJECT)).equal(true); expect(cfg.isAllowedKey(cfg.KEY_PIPELINE)).equal(true); }); it('should return false for every invalid key', () => { expect(cfg.isAllowedKey('key')).equal(false); }); }); describe('.getAllKeys()', () => { it('should return all keys', () => { const arr = cfg.getAllKeys(); expect(arr).instanceof(Array); expect(arr).members([ cfg.KEY_PROJECT, cfg.KEY_WORKSPACE, cfg.KEY_TOKEN, cfg.KEY_URL, cfg.KEY_PIPELINE, ]); expect(arr).lengthOf(5); }); }); describe('.getAll()', () => { it('should return all key values', () => { const obj = cfg.getAll(); expect(obj).an('object'); expect(Object.keys(obj)).lengthOf(cfg.getAllKeys().length); }); }); describe('.getAllAliases()', () => { it('should return all aliases', () => { const key = utils.randomString(10); const val = utils.randomString(10); cfg.clearAliases(); cfg.setAlias(key, val); const arr = cfg.getAllAliases(); expect(arr).an('object'); expect(Object.keys(arr)).lengthOf(1); expect(arr).property(key, val); }); }); describe('.clearAliases()', () => { it('should clear all aliases', () => { cfg.setAlias(utils.randomString(10), utils.randomString(10)); cfg.clearAliases(); expect(Object.keys(cfg.getAllAliases())).lengthOf(0); }); it('should clear all aliases on disc', () => { cfg.setAlias(utils.randomString(10), utils.randomString(10)); cfg.clearAliases(); const cfg2 = new cfg.constructor(); expect(Object.keys(cfg2.getAllAliases())).lengthOf(0); }); }); describe('.clear()', () => { it('should clear all keys in object', () => { cfg.set(cfg.KEY_URL, utils.randomString(10)); cfg.set(cfg.KEY_PROJECT, utils.randomString(10)); cfg.set(cfg.KEY_TOKEN, utils.randomString(10)); cfg.set(cfg.KEY_WORKSPACE, utils.randomString(10)); cfg.set(cfg.KEY_PIPELINE, utils.randomString(10)); cfg.clear(); expect(cfg.get(cfg.KEY_TOKEN)).equal(''); expect(cfg.get(cfg.KEY_PROJECT)).equal(''); expect(cfg.get(cfg.KEY_WORKSPACE)).equal(''); expect(cfg.get(cfg.KEY_URL)).equal('api.buddy.works'); expect(cfg.get(cfg.KEY_PIPELINE)).equal(''); }); it('should clear all keys on disc', () => { cfg.set(cfg.KEY_URL, utils.randomString(10)); cfg.set(cfg.KEY_PROJECT, utils.randomString(10)); cfg.set(cfg.KEY_TOKEN, utils.randomString(10)); cfg.set(cfg.KEY_WORKSPACE, utils.randomString(10)); cfg.set(cfg.KEY_PIPELINE, utils.randomString(10)); cfg.clear(); const cfg2 = new cfg.constructor(); expect(cfg2.get(cfg.KEY_TOKEN)).equal(''); expect(cfg2.get(cfg.KEY_PROJECT)).equal(''); expect(cfg2.get(cfg.KEY_WORKSPACE)).equal(''); expect(cfg2.get(cfg.KEY_PIPELINE)).equal(''); expect(cfg2.get(cfg.KEY_URL)).equal('api.buddy.works'); }); }); describe('.mergeOptions()', () => { it('should set all keys in object', () => { const opts = {}; opts[cfg.KEY_TOKEN] = utils.randomString(10); opts[cfg.KEY_URL] = utils.randomString(10); opts[cfg.KEY_PROJECT] = utils.randomString(10); opts[cfg.KEY_WORKSPACE] = utils.randomString(10); opts[cfg.KEY_PIPELINE] = utils.randomString(10); cfg.clearAliases(); cfg.mergeOptions(opts); expect(cfg.get(cfg.KEY_TOKEN)).equal(opts[cfg.KEY_TOKEN]); expect(cfg.get(cfg.KEY_URL)).equal(opts[cfg.KEY_URL]); expect(cfg.get(cfg.KEY_PROJECT)).equal(opts[cfg.KEY_PROJECT]); expect(cfg.get(cfg.KEY_WORKSPACE)).equal(opts[cfg.KEY_WORKSPACE]); expect(cfg.get(cfg.KEY_PIPELINE)).equal(opts[cfg.KEY_PIPELINE]); }); it('should set aliases in object', () => { cfg.clearAliases(); const aliasKey = utils.randomString(10); const aliasVal = utils.randomString(10); cfg.setAlias(aliasKey, aliasVal); const opts = {}; opts[cfg.KEY_PROJECT] = aliasKey; cfg.mergeOptions(opts); expect(cfg.get(cfg.KEY_PROJECT)).equal(aliasVal); }); it('must not set other keys', () => { const opts = {}; opts.key = utils.randomString(10); cfg.mergeOptions(opts); expect(cfg.get.bind(cfg, 'key')).throw('Wrong key'); }); it('must not save value on disc', () => { const opts = {}; opts[cfg.KEY_TOKEN] = utils.randomString(10); opts[cfg.KEY_URL] = utils.randomString(10); opts[cfg.KEY_PROJECT] = utils.randomString(10); opts[cfg.KEY_WORKSPACE] = utils.randomString(10); opts[cfg.KEY_PIPELINE] = utils.randomString(10); cfg.mergeOptions(opts); const cfg2 = new cfg.constructor(); expect(cfg2.get(cfg.KEY_TOKEN)).not.equal(opts[cfg.KEY_TOKEN]); expect(cfg2.get(cfg.KEY_URL)).not.equal(opts[cfg.KEY_URL]); expect(cfg2.get(cfg.KEY_PROJECT)).not.equal(opts[cfg.KEY_PROJECT]); expect(cfg2.get(cfg.KEY_WORKSPACE)).not.equal(opts[cfg.KEY_WORKSPACE]); expect(cfg2.get(cfg.KEY_PIPELINE)).not.equal(opts[cfg.KEY_PIPELINE]); }); it('should merge keys from env variables', () => { process.env[cfg.ENV_TOKEN] = utils.randomString(10); process.env[cfg.ENV_URL] = utils.randomString(10); process.env[cfg.ENV_PROJECT] = utils.randomString(10); process.env[cfg.ENV_WORKSPACE] = utils.randomString(10); process.env[cfg.ENV_PIPELINE] = utils.randomString(10); cfg.mergeOptions({}); expect(cfg.get(cfg.KEY_TOKEN)).equal(process.env[cfg.ENV_TOKEN]); expect(cfg.get(cfg.KEY_URL)).equal(process.env[cfg.ENV_URL]); expect(cfg.get(cfg.KEY_PROJECT)).equal(process.env[cfg.ENV_PROJECT]); expect(cfg.get(cfg.KEY_WORKSPACE)).equal(process.env[cfg.ENV_WORKSPACE]); expect(cfg.get(cfg.KEY_PIPELINE)).equal(process.env[cfg.ENV_PIPELINE]); }); }); });