migrate-options unit test added
This commit is contained in:
parent
dc1ed52357
commit
cdfc84a96a
2 changed files with 65 additions and 27 deletions
|
|
@ -13,7 +13,7 @@ const paths = _.wrap(_.split, path.sep)
|
||||||
// /usr/lib/node_modules/lamassu-server/certs/Lamassu_OP.pem => 3
|
// /usr/lib/node_modules/lamassu-server/certs/Lamassu_OP.pem => 3
|
||||||
const indexOfLs = _.flow(paths, _.wrap(_.indexOf, 'lamassu-server'))
|
const indexOfLs = _.flow(paths, _.wrap(_.indexOf, 'lamassu-server'))
|
||||||
|
|
||||||
module.exports = {run, mapKeyValuesDeep}
|
module.exports = {run, mapKeyValuesDeep, updateOptionBasepath}
|
||||||
|
|
||||||
function mapKeyValuesDeep (cb, obj, key) {
|
function mapKeyValuesDeep (cb, obj, key) {
|
||||||
if (_.isArray(obj)) {
|
if (_.isArray(obj)) {
|
||||||
|
|
@ -25,6 +25,32 @@ function mapKeyValuesDeep (cb, obj, key) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateOptionBasepath (result, optionName) {
|
||||||
|
const currentPath = _.get(optionName, result)
|
||||||
|
|
||||||
|
// process only keys that contains
|
||||||
|
// lamassu-server dir in its path
|
||||||
|
const i = indexOfLs(currentPath)
|
||||||
|
if (i === -1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// workout the relative path
|
||||||
|
// /usr/lib/node_modules/lamassu-server/certs/Lamassu_OP.pem => certs/Lamassu_OP.pem
|
||||||
|
const rPath = _.drop(i + 1, paths(currentPath))
|
||||||
|
|
||||||
|
// prepend the current lamassu-server path
|
||||||
|
// certs/Lamassu_OP.pem => /usr/local/lib/node_modules/lamassu-server/certs/Lamassu_OP.pem
|
||||||
|
const newPath = _.join(path.sep, _.concat([currentBasePath], rPath))
|
||||||
|
|
||||||
|
// update this option
|
||||||
|
// if the value has changed
|
||||||
|
if (!_.isEqual(currentPath, newPath)) {
|
||||||
|
console.log(`Migrating option ${optionName} to new path ${newPath}`)
|
||||||
|
result[optionName] = newPath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function run () {
|
async function run () {
|
||||||
// load defaults
|
// load defaults
|
||||||
const defaultOpts = require('../lamassu-default')
|
const defaultOpts = require('../lamassu-default')
|
||||||
|
|
@ -39,31 +65,14 @@ async function run () {
|
||||||
// get all the options
|
// get all the options
|
||||||
// that ends with "Path" suffix
|
// that ends with "Path" suffix
|
||||||
console.log(`Detected lamassu-server basepath: ${currentBasePath}`)
|
console.log(`Detected lamassu-server basepath: ${currentBasePath}`)
|
||||||
_.map(optionName => {
|
_.each(_.wrap(updateOptionBasepath, result),
|
||||||
const currentPath = _.get(optionName, result)
|
[
|
||||||
|
'seedPath',
|
||||||
// process only keys that contains
|
'caPath',
|
||||||
// lamassu-server dir in its path
|
'certPath',
|
||||||
const i = indexOfLs(currentPath)
|
'keyPath',
|
||||||
if (i === -1) {
|
'lamassuCaPath'
|
||||||
return
|
])
|
||||||
}
|
|
||||||
|
|
||||||
// workout the relative path
|
|
||||||
// /usr/lib/node_modules/lamassu-server/certs/Lamassu_OP.pem => certs/Lamassu_OP.pem
|
|
||||||
const rPath = _.drop(i + 1, paths(currentPath))
|
|
||||||
|
|
||||||
// prepend the current lamassu-server path
|
|
||||||
// certs/Lamassu_OP.pem => /usr/local/lib/node_modules/lamassu-server/certs/Lamassu_OP.pem
|
|
||||||
const newPath = _.join(path.sep, _.concat([currentBasePath], rPath))
|
|
||||||
|
|
||||||
// update this option
|
|
||||||
// if the value has changed
|
|
||||||
if (!_.isEqual(currentPath, newPath)) {
|
|
||||||
console.log(`Migrating option ${optionName} to new path ${newPath}`)
|
|
||||||
result[optionName] = newPath
|
|
||||||
}
|
|
||||||
}, ['seedPath', 'caPath', 'certPath', 'keyPath', 'lamassuCaPath'])
|
|
||||||
|
|
||||||
const shouldMigrate = !_.isEqual(result, currentOpts) || _.has('lamassuServerPath', result)
|
const shouldMigrate = !_.isEqual(result, currentOpts) || _.has('lamassuServerPath', result)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
import test from 'ava'
|
import test from 'ava'
|
||||||
import _ from 'lodash/fp'
|
import _ from 'lodash/fp'
|
||||||
|
import path from 'path'
|
||||||
|
|
||||||
import {mapKeyValuesDeep} from '../../lib/migrate-options'
|
import {mapKeyValuesDeep, updateOptionBasepath} from '../../lib/migrate-options'
|
||||||
|
|
||||||
|
const currentBasePath = path.dirname(path.dirname(__dirname))
|
||||||
|
|
||||||
test('mapKeyValuesDeep', t => {
|
test('mapKeyValuesDeep', t => {
|
||||||
const test = {
|
const test = {
|
||||||
|
|
@ -33,3 +36,29 @@ test('mapKeyValuesDeep', t => {
|
||||||
|
|
||||||
t.deepEqual(result, expected)
|
t.deepEqual(result, expected)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('updateOptionBasepath', t => {
|
||||||
|
const test = {
|
||||||
|
someBooleanOption: true,
|
||||||
|
someStringOption: 'my-custom-option',
|
||||||
|
customExternalPath: '/usr/lib/node_modules/ava',
|
||||||
|
seedPath: '/etc/lamassu/seeds/seed.txt',
|
||||||
|
caPath: '/usr/lib/node_modules/lamassu-server/certs/Lamassu_OP_Root_CA.pem'
|
||||||
|
}
|
||||||
|
const expected = {
|
||||||
|
someBooleanOption: true,
|
||||||
|
someStringOption: 'my-custom-option',
|
||||||
|
customExternalPath: '/usr/lib/node_modules/ava',
|
||||||
|
seedPath: '/etc/lamassu/seeds/seed.txt',
|
||||||
|
caPath: path.join(currentBasePath, 'certs/Lamassu_OP_Root_CA.pem')
|
||||||
|
}
|
||||||
|
|
||||||
|
let result = _.clone(test)
|
||||||
|
|
||||||
|
_.each(
|
||||||
|
_.wrap(updateOptionBasepath, result),
|
||||||
|
_.keys(test)
|
||||||
|
)
|
||||||
|
|
||||||
|
t.deepEqual(result, expected)
|
||||||
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue