fix: do not hide env variable value if shorter than 5
This commit is contained in:
parent
43d0646150
commit
b082a2eb38
@ -10,4 +10,14 @@ const RELEASE_NOTES_SEPARATOR = '\n\n';
|
|||||||
|
|
||||||
const SECRET_REPLACEMENT = '[secure]';
|
const SECRET_REPLACEMENT = '[secure]';
|
||||||
|
|
||||||
module.exports = {RELEASE_TYPE, FIRST_RELEASE, COMMIT_NAME, COMMIT_EMAIL, RELEASE_NOTES_SEPARATOR, SECRET_REPLACEMENT};
|
const SECRET_MIN_SIZE = 5;
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
RELEASE_TYPE,
|
||||||
|
FIRST_RELEASE,
|
||||||
|
COMMIT_NAME,
|
||||||
|
COMMIT_EMAIL,
|
||||||
|
RELEASE_NOTES_SEPARATOR,
|
||||||
|
SECRET_REPLACEMENT,
|
||||||
|
SECRET_MIN_SIZE,
|
||||||
|
};
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
const {escapeRegExp} = require('lodash');
|
const {escapeRegExp, size} = require('lodash');
|
||||||
const {SECRET_REPLACEMENT} = require('./definitions/constants');
|
const {SECRET_REPLACEMENT, SECRET_MIN_SIZE} = require('./definitions/constants');
|
||||||
|
|
||||||
module.exports = env => {
|
module.exports = env => {
|
||||||
const toReplace = Object.keys(env).filter(
|
const toReplace = Object.keys(env).filter(
|
||||||
envVar => /token|password|credential|secret|private/i.test(envVar) && env[envVar].trim()
|
envVar => /token|password|credential|secret|private/i.test(envVar) && size(env[envVar].trim()) >= SECRET_MIN_SIZE
|
||||||
);
|
);
|
||||||
|
|
||||||
const regexp = new RegExp(toReplace.map(envVar => escapeRegExp(env[envVar])).join('|'), 'g');
|
const regexp = new RegExp(toReplace.map(envVar => escapeRegExp(env[envVar])).join('|'), 'g');
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
import test from 'ava';
|
import test from 'ava';
|
||||||
|
import {repeat} from 'lodash';
|
||||||
import hideSensitive from '../lib/hide-sensitive';
|
import hideSensitive from '../lib/hide-sensitive';
|
||||||
|
import {SECRET_REPLACEMENT, SECRET_MIN_SIZE} from '../lib/definitions/constants';
|
||||||
|
|
||||||
test('Replace multiple sensitive environment variable values', t => {
|
test('Replace multiple sensitive environment variable values', t => {
|
||||||
const env = {SOME_PASSWORD: 'password', SOME_TOKEN: 'secret'};
|
const env = {SOME_PASSWORD: 'password', SOME_TOKEN: 'secret'};
|
||||||
t.is(
|
t.is(
|
||||||
hideSensitive(env)(`https://user:${env.SOME_PASSWORD}@host.com?token=${env.SOME_TOKEN}`),
|
hideSensitive(env)(`https://user:${env.SOME_PASSWORD}@host.com?token=${env.SOME_TOKEN}`),
|
||||||
'https://user:[secure]@host.com?token=[secure]'
|
`https://user:${SECRET_REPLACEMENT}@host.com?token=${SECRET_REPLACEMENT}`
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -13,13 +15,16 @@ test('Replace multiple occurences of sensitive environment variable values', t =
|
|||||||
const env = {secretKey: 'secret'};
|
const env = {secretKey: 'secret'};
|
||||||
t.is(
|
t.is(
|
||||||
hideSensitive(env)(`https://user:${env.secretKey}@host.com?token=${env.secretKey}`),
|
hideSensitive(env)(`https://user:${env.secretKey}@host.com?token=${env.secretKey}`),
|
||||||
'https://user:[secure]@host.com?token=[secure]'
|
`https://user:${SECRET_REPLACEMENT}@host.com?token=${SECRET_REPLACEMENT}`
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Escape regexp special characters', t => {
|
test('Escape regexp special characters', t => {
|
||||||
const env = {SOME_CREDENTIALS: 'p$^{.+}\\w[a-z]o.*rd'};
|
const env = {SOME_CREDENTIALS: 'p$^{.+}\\w[a-z]o.*rd'};
|
||||||
t.is(hideSensitive(env)(`https://user:${env.SOME_CREDENTIALS}@host.com`), 'https://user:[secure]@host.com');
|
t.is(
|
||||||
|
hideSensitive(env)(`https://user:${env.SOME_CREDENTIALS}@host.com`),
|
||||||
|
`https://user:${SECRET_REPLACEMENT}@host.com`
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Accept "undefined" input', t => {
|
test('Accept "undefined" input', t => {
|
||||||
@ -34,10 +39,20 @@ test('Exclude empty environment variables from the regexp', t => {
|
|||||||
const env = {SOME_PASSWORD: 'password', SOME_TOKEN: ''};
|
const env = {SOME_PASSWORD: 'password', SOME_TOKEN: ''};
|
||||||
t.is(
|
t.is(
|
||||||
hideSensitive(env)(`https://user:${env.SOME_PASSWORD}@host.com?token=`),
|
hideSensitive(env)(`https://user:${env.SOME_PASSWORD}@host.com?token=`),
|
||||||
'https://user:[secure]@host.com?token='
|
`https://user:${SECRET_REPLACEMENT}@host.com?token=`
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Exclude empty environment variables from the regexp if there is only empty ones', t => {
|
test('Exclude empty environment variables from the regexp if there is only empty ones', t => {
|
||||||
t.is(hideSensitive({SOME_PASSWORD: '', SOME_TOKEN: ' \n '})(`https://host.com?token=`), 'https://host.com?token=');
|
t.is(hideSensitive({SOME_PASSWORD: '', SOME_TOKEN: ' \n '})(`https://host.com?token=`), 'https://host.com?token=');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Exclude environment variables with value shorter than SECRET_MIN_SIZE from the regexp', t => {
|
||||||
|
const SHORT_TOKEN = repeat('a', SECRET_MIN_SIZE - 1);
|
||||||
|
const LONG_TOKEN = repeat('b', SECRET_MIN_SIZE);
|
||||||
|
const env = {SHORT_TOKEN, LONG_TOKEN};
|
||||||
|
t.is(
|
||||||
|
hideSensitive(env)(`https://user:${SHORT_TOKEN}@host.com?token=${LONG_TOKEN}`),
|
||||||
|
`https://user:${SHORT_TOKEN}@host.com?token=${SECRET_REPLACEMENT}`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user