UNPKG

cobox-config

Version:

load and save a cobox configuration

148 lines (103 loc) 3.53 kB
const { describe } = require('tape-plus') const Config = require('../') const crypto = require('cobox-crypto') const fs = require('fs') const path = require('path') const yaml = require('js-yaml') const randomWords = require('random-words') const { tmp, cleanup } = require('./util') describe('set', (context) => { var storage context.beforeEach((c) => { storage = tmp() }) context.afterEach((c) => { cleanup(storage) }) context('byKey', (assert, next) => { var config = Config(storage) var group = { address: crypto.address(), name: randomWords(1).pop() } config.groups.set(group.address, group) config.save() var reload = yaml.safeLoad(fs.readFileSync(path.join(storage, 'config.yml'))) var rawGroup = reload.groups.byKey[group.address.toString('hex')] assert.same(config.groups.get(group.address), rawGroup, 'saves groups to storage') next() }) context('byName', (assert, next) => { var config = Config(storage) var group = Object.assign({ name: 'group-a' }, crypto.unpack(crypto.accessKey())) config.groups.set(group.address, group) config.save() var reload = yaml.safeLoad(fs.readFileSync(path.join(storage, 'config.yml'))) var rawGroup = reload.groups.byKey[group.address.toString('hex')] assert.ok(rawGroup.name, 'saves group with a name') assert.same(config.groups.get(group.name), rawGroup, 'gets the group using a name') var reload = Config(storage) assert.same(reload._groups, config._groups, 'load groups from storage') next() }) }) describe('get', (context) => { var storage context.beforeEach((c) => { storage = tmp() }) context.afterEach((c) => { cleanup(storage) }) context('works with buffers or strings', (assert, next) => { var config = Config(storage) var group = crypto.unpack(crypto.accessKey()) config.groups.set(group.address, group) config.save() assert.ok(config.groups.get(group.address), 'get group works with a buffer') assert.ok(config.groups.get(group.address.toString('hex')), 'get group works with a hex') next() }) }) describe('del', (context) => { var storage context.beforeEach((c) => { storage = tmp() }) context.afterEach((c) => { cleanup(storage) }) context('deletes relevant entry using buffers', (assert, next) => { var config = Config(storage) var group = crypto.unpack(crypto.accessKey()) config.groups.set(group.address, group) config.save() config.load() config.groups.delete(group.address) assert.same(config.groups.list(), [], 'deleted the group') next() }) context('deletes relevant entry using buffers', (assert, next) => { var config = Config(storage) var group = crypto.unpack(crypto.accessKey()) config.groups.set(group.address, group) config.save() config.load() config.groups.delete(group.address.toString('hex')) assert.same(config.groups.list(), [], 'deleted the group') next() }) context('deletes relevant entry using names', (assert, next) => { var config = Config(storage) var group = Object.assign({ name: 'group-a' }, crypto.unpack(crypto.accessKey())) config.groups.set(group.address, group) config.save() config.load() assert.same(config.groups.list().length, 1, 'saved the group') config.groups.delete(group.name) config.save() config.load() assert.same(config.groups.list(), [], 'deleted the group') next() }) })