mirror of
https://github.com/Unleash/unleash.git
synced 2025-03-09 00:18:26 +01:00
chore: Make options more testable
This commit is contained in:
parent
0e6f5acdd1
commit
5ae61e6fc3
@ -6,48 +6,48 @@ const { defaultLogProvider, validateLogProvider } = require('./logger');
|
|||||||
const isDev = () => process.env.NODE_ENV === 'development';
|
const isDev = () => process.env.NODE_ENV === 'development';
|
||||||
const THIRTY_DAYS = 30 * 24 * 60 * 60 * 1000;
|
const THIRTY_DAYS = 30 * 24 * 60 * 60 * 1000;
|
||||||
|
|
||||||
const DEFAULT_OPTIONS = {
|
function defaultOptions() {
|
||||||
databaseUrl:
|
return {
|
||||||
process.env.DATABASE_URL || process.env.DATABASE_HOST
|
databaseUrl: defaultDatabaseUrl(),
|
||||||
? defaultDatabaseUrl()
|
databaseSchema: 'public',
|
||||||
: undefined,
|
port: process.env.HTTP_PORT || process.env.PORT || 4242,
|
||||||
databaseSchema: 'public',
|
host: process.env.HTTP_HOST,
|
||||||
port: process.env.HTTP_PORT || process.env.PORT || 4242,
|
pipe: undefined,
|
||||||
host: process.env.HTTP_HOST,
|
baseUriPath: process.env.BASE_URI_PATH || '',
|
||||||
pipe: undefined,
|
serverMetrics: true,
|
||||||
baseUriPath: process.env.BASE_URI_PATH || '',
|
enableLegacyRoutes: true,
|
||||||
serverMetrics: true,
|
extendedPermissions: false,
|
||||||
enableLegacyRoutes: true,
|
publicFolder,
|
||||||
extendedPermissions: false,
|
enableRequestLogger: isDev(),
|
||||||
publicFolder,
|
secret: 'UNLEASH-SECRET',
|
||||||
enableRequestLogger: isDev(),
|
sessionAge: THIRTY_DAYS,
|
||||||
secret: 'UNLEASH-SECRET',
|
adminAuthentication: 'unsecure',
|
||||||
sessionAge: THIRTY_DAYS,
|
ui: {},
|
||||||
adminAuthentication: 'unsecure',
|
importFile: undefined,
|
||||||
ui: {},
|
dropBeforeImport: false,
|
||||||
importFile: undefined,
|
getLogger: defaultLogProvider,
|
||||||
dropBeforeImport: false,
|
};
|
||||||
getLogger: defaultLogProvider,
|
}
|
||||||
};
|
|
||||||
|
|
||||||
function defaultDatabaseUrl() {
|
function defaultDatabaseUrl() {
|
||||||
const dbUsername = process.env.DATABASE_USERNAME || 'unleash_user';
|
if (process.env.DATABASE_URL) {
|
||||||
const dbPassword = process.env.DATABASE_PASSWORD || 'passord';
|
return process.env.DATABASE_URL;
|
||||||
const dbHost = process.env.DATABASE_HOST || 'localhost';
|
} else if (isDev() || process.env.DATABASE_HOST) {
|
||||||
const dbPort = process.env.DATABASE_PORT || 5432;
|
const dbUsername = process.env.DATABASE_USERNAME || 'unleash_user';
|
||||||
const dbName = process.env.DATABASE_NAME || 'unleash';
|
const dbPassword = process.env.DATABASE_PASSWORD || 'passord';
|
||||||
const sslSupport = process.env.DATABASE_SSL || 'true';
|
const dbHost = process.env.DATABASE_HOST || 'localhost';
|
||||||
return `postgres://${dbUsername}:${dbPassword}@${dbHost}:${dbPort}/${dbName}?ssl=${sslSupport}`;
|
const dbPort = process.env.DATABASE_PORT || 5432;
|
||||||
|
const dbName = process.env.DATABASE_NAME || 'unleash';
|
||||||
|
const sslSupport = process.env.DATABASE_SSL || 'true';
|
||||||
|
return `postgres://${dbUsername}:${dbPassword}@${dbHost}:${dbPort}/${dbName}?ssl=${sslSupport}`;
|
||||||
|
} else {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
createOptions: opts => {
|
createOptions: opts => {
|
||||||
const options = Object.assign({}, DEFAULT_OPTIONS, opts);
|
const options = Object.assign({}, defaultOptions(), opts);
|
||||||
|
|
||||||
// If we are running in development we should assume local db
|
|
||||||
if (isDev() && !options.databaseUrl) {
|
|
||||||
options.databaseUrl = defaultDatabaseUrl();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!options.databaseUrl) {
|
if (!options.databaseUrl) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
|
@ -13,6 +13,7 @@ test('should require DATABASE_URI', t => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('should set default databaseUrl for develpment', t => {
|
test('should set default databaseUrl for develpment', t => {
|
||||||
|
delete process.env.NODE_ENV;
|
||||||
process.env.NODE_ENV = 'development';
|
process.env.NODE_ENV = 'development';
|
||||||
const { createOptions } = require('./options');
|
const { createOptions } = require('./options');
|
||||||
|
|
||||||
@ -24,6 +25,26 @@ test('should set default databaseUrl for develpment', t => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should use DATABASE_URL from env', t => {
|
||||||
|
const databaseUrl = 'postgres://u:p@localhost:5432/name';
|
||||||
|
delete process.env.NODE_ENV;
|
||||||
|
process.env.DATABASE_URL = databaseUrl;
|
||||||
|
const { createOptions } = require('./options');
|
||||||
|
|
||||||
|
const options = createOptions({});
|
||||||
|
|
||||||
|
t.true(options.databaseUrl === databaseUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should use databaseUrl from options', t => {
|
||||||
|
const databaseUrl = 'postgres://u:p@localhost:5432/name';
|
||||||
|
const { createOptions } = require('./options');
|
||||||
|
|
||||||
|
const options = createOptions({ databaseUrl });
|
||||||
|
|
||||||
|
t.true(options.databaseUrl === databaseUrl);
|
||||||
|
});
|
||||||
|
|
||||||
test('should not override provided options', t => {
|
test('should not override provided options', t => {
|
||||||
process.env.DATABASE_URL = 'test';
|
process.env.DATABASE_URL = 'test';
|
||||||
process.env.NODE_ENV = 'production';
|
process.env.NODE_ENV = 'production';
|
||||||
|
Loading…
Reference in New Issue
Block a user