it('should app.curl work on lookup error', async () => { const result = await app.curl(url + '/get_headers', { dataType: 'json' }); assert(result.status === 200); assert(result.data.host === host); // mock local cache expires and mock dns lookup throw error app.httpclient.dnsCache.get('localhost').timestamp = 0; mm.error(dns, 'lookup', 'mock dns lookup error'); const result2 = await app.httpclient.curl(url + '/get_headers', { dataType: 'json' }); assert(result2.status === 200); assert(result2.data.host === host); });
describe('test/agent.test.js', () => { afterEach(mock.restore); let app; before(() => { app = utils.app('apps/agent-logger-config'); return app.ready(); }); after(() => app.close()); it('agent logger config should work', () => { const fileTransport = app._agent.logger.get('file'); assert(fileTransport.options.file === path.join('/tmp/foo', 'egg-agent.log')); }); });
afterEach(() => { mm.restore(); app.messenger.close(); app.agent.messenger.close(); });
it('should got right level on prod env when set allowDebugAtProd to true', async () => { mm.env('prod'); mm(process.env, 'EGG_LOG', ''); mm(process.env, 'HOME', utils.getFilepath('apps/mock-production-app-do-not-force/config')); app = utils.app('apps/mock-production-app-do-not-force'); await app.ready(); assert(app.config.logger.allowDebugAtProd === true); assert(app.logger.get('file').options.level === Logger.DEBUG); assert(app.logger.get('console').options.level === Logger.INFO); assert(app.coreLogger.get('file').options.level === Logger.DEBUG); assert(app.coreLogger.get('console').options.level === Logger.INFO); });
it('should throw TypeError when get encrypt on keys not exists', () => { mm(app, 'keys', null); const ctx = app.mockContext(); ctx.header.cookie = 'foo=bar'; assert.throws(() => { ctx.cookies.get('foo', { encrypt: true, }); }, /\.keys required for encrypt\/sign cookies/); });
describe('Master start fail', () => { let master; after(() => master.close()); it('should master exit with 1', done => { mm.consoleLevel('NONE'); master = utils.cluster('apps/worker-die'); master.coverage(false); master.expect('code', 1).ready(done); }); });
it('should set log.consoleLevel to env.EGG_LOG', async () => { mm(process.env, 'EGG_LOG', 'ERROR'); app = utils.app('apps/mock-dev-app'); await app.ready(); assert(app.logger.get('file').options.level === Logger.INFO); assert(app.logger.get('console').options.level === Logger.ERROR); return app.ready(); });
describe('req.hostname', () => { it('should return hostname with port', () => { mm(req.header, 'host', 'foo.com:3000'); assert(req.hostname === 'foo.com'); }); it('should return "" when no host present', () => { assert(typeof req.hostname === 'string'); assert(req.hostname === ''); }); });
it('should got right level on local env', async () => { mm.env('local'); mm(process.env, 'EGG_LOG', ''); app = utils.app('apps/mock-dev-app'); await app.ready(); assert(app.logger.get('file').options.level === Logger.INFO); assert(app.logger.get('console').options.level === Logger.INFO); assert(app.coreLogger.get('file').options.level === Logger.INFO); assert(app.coreLogger.get('console').options.level === Logger.WARN); assert(app.config.logger.disableConsoleAfterReady === false); });
it('output .json format log', async () => { mm(process.env, 'EGG_LOG', 'none'); mm.env('local'); app = utils.app('apps/logger-output-json'); await app.ready(); const ctx = app.mockContext(); const logfile = path.join(app.config.logger.dir, 'logger-output-json-web.json.log'); ctx.logger.info('json format'); await sleep(2000); assert(fs.existsSync(logfile)); assert(fs.readFileSync(logfile, 'utf8').includes('"message":"json format"')); });
it('should throw TypeError when set encrypt on keys not exists', () => { mm(app, 'keys', null); const ctx = app.mockContext(); assert.throws(() => { ctx.cookies.set('foo', 'bar', { encrypt: true, }); }, /\.keys required for encrypt\/sign cookies/); });
it('should set EGG_LOG level on local env', async () => { mm.env('local'); mm(process.env, 'EGG_LOG', 'ERROR'); app = utils.app('apps/mock-dev-app'); await app.ready(); assert(app.logger.get('file').options.level === Logger.INFO); assert(app.logger.get('console').options.level === Logger.ERROR); assert(app.coreLogger.get('file').options.level === Logger.INFO); assert(app.coreLogger.get('console').options.level === Logger.ERROR); assert(app.config.logger.disableConsoleAfterReady === false); });
it('should got right config on unittest env', async () => { mm.env('unittest'); mm(process.env, 'EGG_LOG', ''); app = utils.app('apps/mock-dev-app'); await app.ready(); assert(app.logger.get('file').options.level === Logger.INFO); assert(app.logger.get('console').options.level === Logger.WARN); assert(app.coreLogger.get('file').options.level === Logger.INFO); assert(app.coreLogger.get('console').options.level === Logger.WARN); assert(app.config.logger.disableConsoleAfterReady === false); });