cobox-config
Version:
load and save a cobox configuration
148 lines (103 loc) • 3.53 kB
JavaScript
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()
})
})