73 lines
2.9 KiB
JavaScript
73 lines
2.9 KiB
JavaScript
const assert = require('assert');
|
|
const Field = require('src/config/field.js');
|
|
|
|
describe('Field', () => {
|
|
it('should return an array if it is an array', () => {
|
|
const field = new Field([1, 2, 3]);
|
|
assert.deepEqual(field.value, [1, 2, 3]);
|
|
});
|
|
|
|
it('should return the plain value if it is an ordinary field', () => {
|
|
const field = new Field('plain value');
|
|
assert.equal(field.value, 'plain value');
|
|
});
|
|
|
|
it('should return false if boolean false is field', () => {
|
|
const field = new Field(false);
|
|
assert.equal(field.value, false);
|
|
});
|
|
|
|
it('should not include any invalid filters', () => {
|
|
const field = new Field('invalid-filter|plain value');
|
|
assert.equal(field.value, 'plain value');
|
|
});
|
|
|
|
it('should return the decoded value if it is filtered through base64', () => {
|
|
const field = new Field('base64|ZW5jb2RlZCB2YWx1ZQ==');
|
|
assert.equal(field.value, 'encoded value');
|
|
});
|
|
|
|
it('should not decode the value if it missing the filter', () => {
|
|
const field = new Field('ZW5jb2RlZCB2YWx1ZQ==');
|
|
assert.equal(field.value, 'ZW5jb2RlZCB2YWx1ZQ==');
|
|
});
|
|
|
|
it('should retrieve the environment variable if env filter is used', () => {
|
|
const environmentVariables = { REDIS_URL: 'redis://127.0.0.1:1234' };
|
|
const field = new Field('env|REDIS_URL', environmentVariables);
|
|
assert.equal(field.value, 'redis://127.0.0.1:1234');
|
|
});
|
|
|
|
it('should return undefined if the environment variable does not exist', () => {
|
|
const environmentVariables = { HTTP_PORT: 8080 };
|
|
const field = new Field('env|REDIS_URL', environmentVariables);
|
|
assert.equal(field.value, undefined);
|
|
});
|
|
|
|
it('should return undefined if the environment variable is an empty string', () => {
|
|
const environmentVariables = { REDIS_URL: '' };
|
|
const field = new Field('env|REDIS_URL', environmentVariables);
|
|
assert.deepEqual(field.value, undefined);
|
|
});
|
|
|
|
describe('Multiple filters', () => {
|
|
it('should decode the environment variable if base64 and env filter are used', () => {
|
|
const environmentVariables = { REDIS_URL: 'cmVkaXM6Ly9kYWdibGFkZXQubm8vMTIzNA==' };
|
|
const field = new Field('env|base64|REDIS_URL', environmentVariables);
|
|
assert.equal(field.value, 'redis://dagbladet.no/1234');
|
|
});
|
|
|
|
it('should disregard the order of filters when env and base64 are used', () => {
|
|
const environmentVariables = { REDIS_URL: 'cmVkaXM6Ly9kYWdibGFkZXQubm8vMTIzNA==' };
|
|
const field = new Field('base64|env|REDIS_URL', environmentVariables);
|
|
assert.equal(field.value, 'redis://dagbladet.no/1234');
|
|
});
|
|
|
|
it('should return undefined if both filters are used and env var does not exist', () => {
|
|
const environmentVariables = { REDIS_URL: 'cmVkaXM6Ly9kYWdibGFkZXQubm8vMTIzNA==' };
|
|
const field = new Field('base64|env|REDIS_LOL', environmentVariables);
|
|
assert.equal(field.value, undefined);
|
|
});
|
|
});
|
|
});
|