mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Merge branch 'master' into metrics_validation
This commit is contained in:
		
						commit
						40a691cafc
					
				| @ -6,6 +6,7 @@ | |||||||
| - Strip uknown fields in client requests. | - Strip uknown fields in client requests. | ||||||
| - Disable x-powered-by header | - Disable x-powered-by header | ||||||
| - Improved client-metrics validation to avoid NaN | - Improved client-metrics validation to avoid NaN | ||||||
|  | - Add posibility to inject custom logger provider | ||||||
| 
 | 
 | ||||||
| ## 3.0.0-alpha.1 | ## 3.0.0-alpha.1 | ||||||
| - upgrade unleash-frontend to 3.0.0-alpha.1 | - upgrade unleash-frontend to 3.0.0-alpha.1 | ||||||
|  | |||||||
| @ -25,4 +25,4 @@ Register a client instance with the unleash server. The client should send all f | |||||||
| * **sdkVersion** - Optional field that describes the sdk version (name:version) | * **sdkVersion** - Optional field that describes the sdk version (name:version) | ||||||
| * **strategies** - List of strategies implemented by this application | * **strategies** - List of strategies implemented by this application | ||||||
| * **started** - When this client started. Should be reported as UTC time. | * **started** - When this client started. Should be reported as UTC time. | ||||||
| * **interval** - At wich interval will this client be expected to send metrics?  | * **interval** - At wich interval, in milliseconds, will this client be expected to send metrics | ||||||
|  | |||||||
| @ -37,4 +37,38 @@ Available unleash options includes: | |||||||
| 
 | 
 | ||||||
| - databaseUrl  | - databaseUrl  | ||||||
| - port | - port | ||||||
| - logLevel - ('INFO', 'ERROR',) | 
 | ||||||
|  | ## How do I configure the log output? | ||||||
|  |   | ||||||
|  | By default, `unleash` uses [log4js](https://github.com/nomiddlename/log4js-node) to log important information. It is possible to swap out the logger provider (only when using Unleash programatically). This enables filtering of log levels and easy redirection of output streams. | ||||||
|  |   | ||||||
|  | ### What is a logger provider? | ||||||
|  |   | ||||||
|  | A logger provider is a function which takes the name of a logger and returns a logger implementation. For instance, the following code snippet shows how a logger provider for the global `console` object could be written: | ||||||
|  |   | ||||||
|  | ```javascript | ||||||
|  | function consoleLoggerProvider (name) { | ||||||
|  |   // do something with the name | ||||||
|  |   return { | ||||||
|  |     debug: console.log, | ||||||
|  |     info: console.log, | ||||||
|  |     warn: console.log, | ||||||
|  |     error: console.error | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  |   | ||||||
|  | The logger interface with its `debug`, `info`, `warn` and `error` methods expects format string support as seen in `debug` or the JavaScript `console` object. Many commonly used logging implementations cover this API, e.g. bunyan, pino or winston. | ||||||
|  |   | ||||||
|  | ### How do I set a logger provider? | ||||||
|  |   | ||||||
|  | Custom logger providers need to be set *before requiring the `unleash-server` module*. The following example shows how this can be done: | ||||||
|  |   | ||||||
|  | ```javascript | ||||||
|  | // first configure the logger provider | ||||||
|  | const unleashLogger = require('unleash-server/logger'); | ||||||
|  | unleashLogger.setLoggerProvider(consoleLoggerProvider); | ||||||
|  |   | ||||||
|  | // then require unleash-server and continue as normal | ||||||
|  | const unleash = require('unleash-server'); | ||||||
|  | ``` | ||||||
|  | |||||||
							
								
								
									
										13
									
								
								lib/app.js
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								lib/app.js
									
									
									
									
									
								
							| @ -6,8 +6,7 @@ const bodyParser = require('body-parser'); | |||||||
| const cookieParser = require('cookie-parser'); | const cookieParser = require('cookie-parser'); | ||||||
| const validator = require('express-validator'); | const validator = require('express-validator'); | ||||||
| const responseTime = require('response-time'); | const responseTime = require('response-time'); | ||||||
| const log4js = require('log4js'); | const logger = require('./logger')('app.js'); | ||||||
| const logger = require('./logger'); |  | ||||||
| const routes = require('./routes'); | const routes = require('./routes'); | ||||||
| const path = require('path'); | const path = require('path'); | ||||||
| const errorHandler = require('errorhandler'); | const errorHandler = require('errorhandler'); | ||||||
| @ -56,12 +55,10 @@ module.exports = function(config) { | |||||||
|     app.use(bodyParser.json({ strict: false })); |     app.use(bodyParser.json({ strict: false })); | ||||||
| 
 | 
 | ||||||
|     if (config.enableRequestLogger) { |     if (config.enableRequestLogger) { | ||||||
|         app.use( |         app.use((req, res, next) => { | ||||||
|             log4js.connectLogger(logger, { |             next(); | ||||||
|                 format: ':status :method :url :response-timems', |             logger.info(`${res.statusCode} ${req.method} ${req.path}`); | ||||||
|                 level: 'auto', // 3XX=WARN, 4xx/5xx=ERROR
 |         }); | ||||||
|             }) |  | ||||||
|         ); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (typeof config.preRouterHook === 'function') { |     if (typeof config.preRouterHook === 'function') { | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| /* eslint camelcase: "off" */ | /* eslint camelcase: "off" */ | ||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| const logger = require('../logger'); | const logger = require('../logger')('client-instance-store.js'); | ||||||
| const COLUMNS = [ | const COLUMNS = [ | ||||||
|     'app_name', |     'app_name', | ||||||
|     'instance_id', |     'instance_id', | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| const logger = require('../logger'); | const logger = require('../logger')('client-metrics-db.js'); | ||||||
| 
 | 
 | ||||||
| const METRICS_COLUMNS = ['id', 'created_at', 'metrics']; | const METRICS_COLUMNS = ['id', 'created_at', 'metrics']; | ||||||
| const TABLE = 'client_metrics'; | const TABLE = 'client_metrics'; | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| const logger = require('../logger'); | const logger = require('../logger')('client-metrics-store.js'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ const { | |||||||
|     FEATURE_ARCHIVED, |     FEATURE_ARCHIVED, | ||||||
|     FEATURE_REVIVED, |     FEATURE_REVIVED, | ||||||
| } = require('../event-type'); | } = require('../event-type'); | ||||||
| const logger = require('../logger'); | const logger = require('../logger')('client-toggle-store.js'); | ||||||
| const NotFoundError = require('../error/notfound-error'); | const NotFoundError = require('../error/notfound-error'); | ||||||
| const FEATURE_COLUMNS = [ | const FEATURE_COLUMNS = [ | ||||||
|     'name', |     'name', | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ const { | |||||||
|     STRATEGY_DELETED, |     STRATEGY_DELETED, | ||||||
|     STRATEGY_UPDATED, |     STRATEGY_UPDATED, | ||||||
| } = require('../event-type'); | } = require('../event-type'); | ||||||
| const logger = require('../logger'); | const logger = require('../logger')('strategy-store.js'); | ||||||
| const NotFoundError = require('../error/notfound-error'); | const NotFoundError = require('../error/notfound-error'); | ||||||
| const STRATEGY_COLUMNS = ['name', 'description', 'parameters', 'built_in']; | const STRATEGY_COLUMNS = ['name', 'description', 'parameters', 'built_in']; | ||||||
| const TABLE = 'strategies'; | const TABLE = 'strategies'; | ||||||
|  | |||||||
| @ -3,11 +3,6 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const eventDiffer = require('./event-differ'); | const eventDiffer = require('./event-differ'); | ||||||
| const { FEATURE_CREATED, FEATURE_UPDATED } = require('./event-type'); | const { FEATURE_CREATED, FEATURE_UPDATED } = require('./event-type'); | ||||||
| const logger = require('./logger'); |  | ||||||
| 
 |  | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| test('fails if events include an unknown event type', t => { | test('fails if events include an unknown event type', t => { | ||||||
|     const events = [ |     const events = [ | ||||||
|  | |||||||
| @ -1,19 +1,49 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| const log4js = require('log4js'); | const log4js = require('log4js'); | ||||||
| log4js.configure({ | 
 | ||||||
|  | let loggerProvider = getDefaultLogProvider(); | ||||||
|  | 
 | ||||||
|  | module.exports = exports = function getLogger(name) { | ||||||
|  |     return loggerProvider(name); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | exports.setLoggerProvider = function setLoggerProvider(provider) { | ||||||
|  |     validate(typeof provider == 'function', 'Provider needs to be a function'); | ||||||
|  | 
 | ||||||
|  |     const logger = provider('unleash:logger'); | ||||||
|  | 
 | ||||||
|  |     validate(typeof logger.debug == 'function', 'Logger must implement debug'); | ||||||
|  |     validate(typeof logger.info == 'function', 'Logger must implement info'); | ||||||
|  |     validate(typeof logger.warn == 'function', 'Logger must implement warn'); | ||||||
|  |     validate(typeof logger.error == 'function', 'Logger must implement error'); | ||||||
|  | 
 | ||||||
|  |     loggerProvider = provider; | ||||||
|  |     logger.info('Custom Logger Provider initalized.'); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | function getDefaultLogProvider() { | ||||||
|  |     let level; | ||||||
|  |     if (process.env.NODE_ENV === 'production') { | ||||||
|  |         level = log4js.levels.ERROR; | ||||||
|  |     } else if (process.env.NODE_ENV === 'test') { | ||||||
|  |         level = log4js.levels.FATAL; | ||||||
|  |     } else { | ||||||
|  |         level = log4js.levels.DEBUG; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     log4js.configure({ | ||||||
|         appenders: [{ type: 'console' }], |         appenders: [{ type: 'console' }], | ||||||
| }); |         levels: { | ||||||
|  |             '[all]': level, | ||||||
|  |         }, | ||||||
|  |     }); | ||||||
| 
 | 
 | ||||||
| const logger = log4js.getLogger('unleash'); |     return log4js.getLogger; | ||||||
| 
 |  | ||||||
| // TODO: make level configurable
 |  | ||||||
| if (process.env.NODE_ENV === 'production') { |  | ||||||
|     logger.setLevel(log4js.levels.ERROR); |  | ||||||
| } else if (process.env.NODE_ENV === 'test') { |  | ||||||
|     logger.setLevel(log4js.levels.ERROR); |  | ||||||
| } else { |  | ||||||
|     logger.setLevel(log4js.levels.DEBUG); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| module.exports = logger; | function validate(isValid, msg) { | ||||||
|  |     if (!isValid) { | ||||||
|  |         throw new TypeError(msg); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										51
									
								
								lib/logger.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								lib/logger.test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | |||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | const { test } = require('ava'); | ||||||
|  | const createLogger = require('./logger'); | ||||||
|  | const logger = require('../logger'); | ||||||
|  | 
 | ||||||
|  | test('should expose a setLoggerProvider function', t => { | ||||||
|  |     t.true(logger.setLoggerProvider instanceof Function); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | test('should create logger via custom logger provider', t => { | ||||||
|  |     const loggerName = 'test'; | ||||||
|  |     const loggerImpl = { | ||||||
|  |         debug: () => {}, | ||||||
|  |         info: () => {}, | ||||||
|  |         warn: () => {}, | ||||||
|  |         error: () => {}, | ||||||
|  |     }; | ||||||
|  |     const provider = () => loggerImpl; | ||||||
|  |     logger.setLoggerProvider(provider); | ||||||
|  | 
 | ||||||
|  |     const log = createLogger(loggerName); | ||||||
|  | 
 | ||||||
|  |     t.is(log, loggerImpl); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | test('should require custom logger to implement info', t => { | ||||||
|  |     const loggerImpl = { | ||||||
|  |         debug: () => {}, | ||||||
|  |         warn: () => {}, | ||||||
|  |         error: () => {}, | ||||||
|  |     }; | ||||||
|  |     const provider = () => loggerImpl; | ||||||
|  |     const error = t.throws(() => { | ||||||
|  |         logger.setLoggerProvider(provider)(); | ||||||
|  |     }, TypeError); | ||||||
|  |     t.is(error.message, 'Logger must implement info'); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | test('should require custom logger to implement error', t => { | ||||||
|  |     const loggerImpl = { | ||||||
|  |         debug: () => {}, | ||||||
|  |         warn: () => {}, | ||||||
|  |         info: () => {}, | ||||||
|  |     }; | ||||||
|  |     const provider = () => loggerImpl; | ||||||
|  |     const error = t.throws(() => { | ||||||
|  |         logger.setLoggerProvider(provider)(); | ||||||
|  |     }, TypeError); | ||||||
|  |     t.is(error.message, 'Logger must implement error'); | ||||||
|  | }); | ||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../../test/fixtures/store'); | const store = require('./../../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../../logger'); |  | ||||||
| const getApp = require('../../app'); | const getApp = require('../../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function getSetup() { | function getSetup() { | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|     const app = getApp({ |     const app = getApp({ | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| const { Router } = require('express'); | const { Router } = require('express'); | ||||||
| 
 | 
 | ||||||
| const logger = require('../../logger'); | const logger = require('../../logger')('/admin-api/archive.js'); | ||||||
| const { FEATURE_REVIVED } = require('../../event-type'); | const { FEATURE_REVIVED } = require('../../event-type'); | ||||||
| const ValidationError = require('../../error/validation-error'); | const ValidationError = require('../../error/validation-error'); | ||||||
| const validateRequest = require('../../error/validate-request'); | const validateRequest = require('../../error/validate-request'); | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ const { test } = require('ava'); | |||||||
| 
 | 
 | ||||||
| const store = require('./../../../test/fixtures/store'); | const store = require('./../../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../../logger'); |  | ||||||
| const getApp = require('../../app'); | const getApp = require('../../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| @ -22,10 +21,6 @@ function getSetup() { | |||||||
|     return { base, eventStore: stores.eventStore, request: supertest(app) }; |     return { base, eventStore: stores.eventStore, request: supertest(app) }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| test('should get empty events list via admin', t => { | test('should get empty events list via admin', t => { | ||||||
|     t.plan(1); |     t.plan(1); | ||||||
|     const { request, base } = getSetup(); |     const { request, base } = getSetup(); | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| const { Router } = require('express'); | const { Router } = require('express'); | ||||||
| const joi = require('joi'); | const joi = require('joi'); | ||||||
| 
 | 
 | ||||||
| const logger = require('../../logger'); | const logger = require('../../logger')('/admin-api/feature.js'); | ||||||
| const { | const { | ||||||
|     FEATURE_CREATED, |     FEATURE_CREATED, | ||||||
|     FEATURE_UPDATED, |     FEATURE_UPDATED, | ||||||
|  | |||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../../test/fixtures/store'); | const store = require('./../../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../../logger'); |  | ||||||
| const getApp = require('../../app'); | const getApp = require('../../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function getSetup() { | function getSetup() { | ||||||
|     const base = `/random${Math.round(Math.random() * 1000)}`; |     const base = `/random${Math.round(Math.random() * 1000)}`; | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| const { Router } = require('express'); | const { Router } = require('express'); | ||||||
| 
 | 
 | ||||||
| const logger = require('../../logger'); | const logger = require('../../logger')('/admin-api/metrics.js'); | ||||||
| const ClientMetrics = require('../../client-metrics'); | const ClientMetrics = require('../../client-metrics'); | ||||||
| const { catchLogAndSendErrorResponse } = require('./route-utils'); | const { catchLogAndSendErrorResponse } = require('./route-utils'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../../test/fixtures/store'); | const store = require('./../../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../../logger'); |  | ||||||
| const getApp = require('../../app'); | const getApp = require('../../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function getSetup() { | function getSetup() { | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|     const app = getApp({ |     const app = getApp({ | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| const logger = require('../../logger'); | const logger = require('../../logger')('route-utils.js'); | ||||||
| 
 | 
 | ||||||
| const catchLogAndSendErrorResponse = (err, res) => { | const catchLogAndSendErrorResponse = (err, res) => { | ||||||
|     logger.error(err); |     logger.error(err); | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ const { Router } = require('express'); | |||||||
| const joi = require('joi'); | const joi = require('joi'); | ||||||
| 
 | 
 | ||||||
| const eventType = require('../../event-type'); | const eventType = require('../../event-type'); | ||||||
| const logger = require('../../logger'); | const logger = require('../../logger')('/admin-api/strategy.js'); | ||||||
| const NameExistsError = require('../../error/name-exists-error'); | const NameExistsError = require('../../error/name-exists-error'); | ||||||
| const extractUser = require('../../extract-user'); | const extractUser = require('../../extract-user'); | ||||||
| const strategySchema = require('./strategy-schema'); | const strategySchema = require('./strategy-schema'); | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ const { test } = require('ava'); | |||||||
| const store = require('./../../../test/fixtures/store'); | const store = require('./../../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const getApp = require('../../app'); | const getApp = require('../../app'); | ||||||
| const logger = require('../../logger'); |  | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| @ -25,10 +24,6 @@ function getSetup() { | |||||||
|     }; |     }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| test('add version numbers for /stategies', t => { | test('add version numbers for /stategies', t => { | ||||||
|     t.plan(1); |     t.plan(1); | ||||||
|     const { request, base } = getSetup(); |     const { request, base } = getSetup(); | ||||||
|  | |||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../test/fixtures/store'); | const store = require('./../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../logger'); |  | ||||||
| const getApp = require('../app'); | const getApp = require('../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| test('should use enable prometheus', t => { | test('should use enable prometheus', t => { | ||||||
|     t.plan(0); |     t.plan(0); | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|  | |||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../../test/fixtures/store'); | const store = require('./../../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../../logger'); |  | ||||||
| const getApp = require('../../app'); | const getApp = require('../../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function getSetup() { | function getSetup() { | ||||||
|     const base = `/random${Math.round(Math.random() * 1000)}`; |     const base = `/random${Math.round(Math.random() * 1000)}`; | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| const { Router } = require('express'); | const { Router } = require('express'); | ||||||
| const joi = require('joi'); | const joi = require('joi'); | ||||||
| const logger = require('../../logger'); | const logger = require('../../logger')('client-api/metrics.js'); | ||||||
| 
 | 
 | ||||||
| const { clientMetricsSchema } = require('./metrics-schema'); | const { clientMetricsSchema } = require('./metrics-schema'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../../test/fixtures/store'); | const store = require('./../../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../../logger'); |  | ||||||
| const getApp = require('../../app'); | const getApp = require('../../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function getSetup() { | function getSetup() { | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|     const app = getApp({ |     const app = getApp({ | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| const { Router } = require('express'); | const { Router } = require('express'); | ||||||
| const joi = require('joi'); | const joi = require('joi'); | ||||||
| const logger = require('../../logger'); | const logger = require('../../logger')('/client-api/register.js'); | ||||||
| 
 | 
 | ||||||
| const { clientRegisterSchema } = require('./register-schema'); | const { clientRegisterSchema } = require('./register-schema'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../../test/fixtures/store'); | const store = require('./../../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../../logger'); |  | ||||||
| const getApp = require('../../app'); | const getApp = require('../../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function getSetup() { | function getSetup() { | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|     const app = getApp({ |     const app = getApp({ | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| const logger = require('../logger'); | const logger = require('../logger')('health-check.js'); | ||||||
| const { Router } = require('express'); | const { Router } = require('express'); | ||||||
| 
 | 
 | ||||||
| exports.router = function(config) { | exports.router = function(config) { | ||||||
|  | |||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../test/fixtures/store'); | const store = require('./../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../logger'); |  | ||||||
| const getApp = require('../app'); | const getApp = require('../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function getSetup() { | function getSetup() { | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|     const db = stores.db; |     const db = stores.db; | ||||||
|  | |||||||
| @ -3,16 +3,11 @@ | |||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const store = require('./../../test/fixtures/store'); | const store = require('./../../test/fixtures/store'); | ||||||
| const supertest = require('supertest'); | const supertest = require('supertest'); | ||||||
| const logger = require('../logger'); |  | ||||||
| const getApp = require('../app'); | const getApp = require('../app'); | ||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| const eventBus = new EventEmitter(); | const eventBus = new EventEmitter(); | ||||||
| 
 | 
 | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function getSetup() { | function getSetup() { | ||||||
|     const base = `/random${Math.round(Math.random() * 1000)}`; |     const base = `/random${Math.round(Math.random() * 1000)}`; | ||||||
|     const stores = store.createStores(); |     const stores = store.createStores(); | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| const { EventEmitter } = require('events'); | const { EventEmitter } = require('events'); | ||||||
| 
 | 
 | ||||||
| const logger = require('./logger'); | const logger = require('./logger')('server-impl.js'); | ||||||
| const migrator = require('../migrator'); | const migrator = require('../migrator'); | ||||||
| const getApp = require('./app'); | const getApp = require('./app'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								logger.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								logger.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | const logger = require('./lib/logger'); | ||||||
|  | 
 | ||||||
|  | exports.setLoggerProvider = logger.setLoggerProvider; | ||||||
| @ -39,7 +39,7 @@ | |||||||
|     "db-migrate": "db-migrate", |     "db-migrate": "db-migrate", | ||||||
|     "lint": "eslint .", |     "lint": "eslint .", | ||||||
|     "pretest": "npm run lint", |     "pretest": "npm run lint", | ||||||
|     "test": "PORT=4243 ava lib/*.test.js lib/**/*.test.js lib/**/**/*.test.js lib/**/**/**/*.test.js test", |     "test": "NODE_ENV=test PORT=4243 ava lib/*.test.js lib/**/*.test.js lib/**/**/*.test.js lib/**/**/**/*.test.js test", | ||||||
|     "test:docker": "./scripts/docker-postgres.sh", |     "test:docker": "./scripts/docker-postgres.sh", | ||||||
|     "test:watch": "npm run test -- --watch", |     "test:watch": "npm run test -- --watch", | ||||||
|     "test:pg-virtualenv": "pg_virtualenv npm run test:pg-virtualenv-chai", |     "test:pg-virtualenv": "pg_virtualenv npm run test:pg-virtualenv-chai", | ||||||
|  | |||||||
| @ -2,11 +2,6 @@ | |||||||
| 
 | 
 | ||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const { setupApp } = require('./../../helpers/test-helper'); | const { setupApp } = require('./../../helpers/test-helper'); | ||||||
| const logger = require('../../../../lib/logger'); |  | ||||||
| 
 |  | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| test.serial('returns events', async t => { | test.serial('returns events', async t => { | ||||||
|     t.plan(0); |     t.plan(0); | ||||||
|  | |||||||
| @ -2,11 +2,6 @@ | |||||||
| 
 | 
 | ||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const { setupApp } = require('./../../helpers/test-helper'); | const { setupApp } = require('./../../helpers/test-helper'); | ||||||
| const logger = require('../../../../lib/logger'); |  | ||||||
| 
 |  | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| test.serial('returns three archived toggles', async t => { | test.serial('returns three archived toggles', async t => { | ||||||
|     t.plan(1); |     t.plan(1); | ||||||
|  | |||||||
| @ -2,11 +2,6 @@ | |||||||
| 
 | 
 | ||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const { setupApp } = require('./../../helpers/test-helper'); | const { setupApp } = require('./../../helpers/test-helper'); | ||||||
| const logger = require('../../../../lib/logger'); |  | ||||||
| 
 |  | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| test.serial('returns three feature toggles', async t => { | test.serial('returns three feature toggles', async t => { | ||||||
|     const { request, destroy } = await setupApp('feature_api_serial'); |     const { request, destroy } = await setupApp('feature_api_serial'); | ||||||
|  | |||||||
| @ -2,11 +2,6 @@ | |||||||
| 
 | 
 | ||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const { setupApp } = require('./../../helpers/test-helper'); | const { setupApp } = require('./../../helpers/test-helper'); | ||||||
| const logger = require('../../../../lib/logger'); |  | ||||||
| 
 |  | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| test.serial('should register client', async t => { | test.serial('should register client', async t => { | ||||||
|     t.plan(0); |     t.plan(0); | ||||||
|  | |||||||
| @ -2,11 +2,6 @@ | |||||||
| 
 | 
 | ||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const { setupApp } = require('./../../helpers/test-helper'); | const { setupApp } = require('./../../helpers/test-helper'); | ||||||
| const logger = require('../../../../lib/logger'); |  | ||||||
| 
 |  | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| test.serial('gets all strategies', async t => { | test.serial('gets all strategies', async t => { | ||||||
|     t.plan(1); |     t.plan(1); | ||||||
|  | |||||||
| @ -2,11 +2,6 @@ | |||||||
| 
 | 
 | ||||||
| const { test } = require('ava'); | const { test } = require('ava'); | ||||||
| const { setupApp } = require('./helpers/test-helper'); | const { setupApp } = require('./helpers/test-helper'); | ||||||
| const logger = require('../../lib/logger'); |  | ||||||
| 
 |  | ||||||
| test.beforeEach(() => { |  | ||||||
|     logger.setLevel('FATAL'); |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| test('returns health good', async t => { | test('returns health good', async t => { | ||||||
|     t.plan(0); |     t.plan(0); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user