it('should set cookie twice and not set domain when ctx.hostname=localhost', () => { const ctx = app.mockContext(); ctx.set('Set-Cookie', 'foo=bar'); ctx.cookies.set('foo1', 'bar1'); assert.deepEqual(ctx.response.get('set-cookie'), [ 'foo=bar', 'foo1=bar1; path=/; httponly', 'foo1.sig=Fqo9DaOWFOs3Gxsv0OHgyhhnJrjuY8jItBdSO-5WRgM; path=/; httponly', ]); });
describe('app.keys', () => { let app; before(() => { app = utils.app('apps/demo'); return app.ready(); }); after(() => app.close()); it('should work for app.keys and app.keys=', async () => { assert.deepEqual(app.keys, [ 'foo' ]); // `app.keys=` will be ignored app.keys = undefined; assert.deepEqual(app.keys, [ 'foo' ]); }); });
describe('test/lib/plugins/depd.test.js', () => { afterEach(mm.restore); let app; before(() => { app = utils.app('apps/demo'); return app.ready(); }); after(() => app.close()); it('should use this.locals instead of this.state', () => { const ctx = app.mockContext(); ctx.locals.test = 'aaa'; assert.deepEqual(ctx.locals, ctx.state); assert.deepEqual(ctx.locals.test, ctx.state.test); }); });
it('should support package.json config', () => { const baseDir = utils.getFilepath('apps/loader-plugin'); const appLoader = new AppWorkerLoader({ baseDir, app, logger, }); appLoader.loadConfig(); assert.deepEqual(appLoader.plugins.g, { enable: true, name: 'g', dependencies: [ 'f' ], optionalDependencies: [], env: [], path: path.join(baseDir, 'plugins/g'), from: path.join(baseDir, 'config/plugin.js'), }); });
describe('this.query = obj', () => { it('should set query with object', () => { mm(req, 'querystring', 'a=c'); assert.deepEqual(req.query, { a: 'c' }); req.query = {}; assert.deepEqual(req.query, {}); assert(req.querystring === ''); req.query = { foo: 'bar' }; assert.deepEqual(req.query, { foo: 'bar' }); assert(req.querystring === 'foo=bar'); req.query = { array: [ 1, 2 ] }; assert.deepEqual(req.query, { array: '1' }); assert(req.querystring === 'array=1&array=2'); }); });
describe('dumpConfig() with circular', () => { let app; before(() => { app = utils.app('apps/dumpconfig-circular'); }); after(() => app.close()); it('should dump in config', async () => { const baseDir = utils.getFilepath('apps/dumpconfig-circular'); await sleep(100); await app.ready(); await sleep(100); const json = readJson(path.join(baseDir, 'run/application_config.json')); assert.deepEqual(json.config.foo, [ '~config~foo' ]); }); });
it('should dump router json', () => { const routers = require(path.join(baseDir, 'run/router.json')); // 13 static routers on app/router.js and 1 dynamic router on app.js assert(routers.length === 14); for (const router of routers) { assert.deepEqual(Object.keys(router), [ 'name', 'methods', 'paramNames', 'path', 'regexp', 'stack', ]); } });
describe('sendToApp()', () => { it('app.messenger.sendToApp should work', done => { app.agent.messenger.once('sendToApp-event', () => { throw new Error('should not emit on agent'); }); app.messenger.once('sendToApp-event', msg => { assert.deepEqual(msg, { foo: 'bar' }); done(); }); app.messenger.sendToApp('sendToApp-event', { foo: 'bar' }); }); it('agent.messenger.sendToApp should work', done => { app.agent.messenger.once('sendToApp-event', () => { throw new Error('should not emit on agent'); }); app.messenger.once('sendToApp-event', msg => { assert.deepEqual(msg, { foo: 'bar' }); done(); }); app.agent.messenger.sendToApp('sendToApp-event', { foo: 'bar' }); }); });
describe('test/index.test.js', () => { it('should expose properties', () => { assert.deepEqual(Object.keys(egg).sort(), [ 'Agent', 'AgentWorkerLoader', 'AppWorkerLoader', 'Application', 'BaseContextClass', 'Boot', 'Controller', 'Service', 'Subscription', 'start', 'startCluster', ]); }); });
describe('on(action, data)', () => { it('should listen an action event', done => { messenger.on('messenger-test-on-event', data => { assert.deepEqual(data, { success: true, }); done(); }); process.emit('message', {}); process.emit('message', null); process.emit('message', { action: 'messenger-test-on-event', data: { success: true, }, }); }); });
describe('this.query && this.queries can be modified', () => { it('should success with querystring present', () => { req.querystring = 'a=a&b=b1&b=b2'; assert.deepEqual(req.query, { a: 'a', b: 'b1' }); assert.deepEqual(req.queries, { a: [ 'a' ], b: [ 'b1', 'b2' ] }); req.query.a = 'aa'; req.queries.b = [ 'bb' ]; assert.deepEqual(req.query, { a: 'aa', b: 'b1' }); assert.deepEqual(req.queries, { a: [ 'a' ], b: [ 'bb' ] }); }); it('should success with empty querystring', () => { req.querystring = ''; assert.deepEqual(req.query, {}); assert.deepEqual(req.queries, {}); req.query.a = 'aa'; req.queries.b = [ 'bb' ]; assert.deepEqual(req.query, { a: 'aa' }); assert.deepEqual(req.queries, { b: [ 'bb' ] }); }); });
describe('sendToAgent()', () => { it('app.messenger.sendToAgent should work', done => { app.agent.messenger.once('sendToAgent-event', msg => { assert.deepEqual(msg, { foo: 'bar' }); done(); }); app.messenger.once('sendToAgent-event', () => { throw new Error('should not emit on app'); }); app.messenger.sendToAgent('sendToAgent-event', { foo: 'bar' }); }); it('agent.messenger.sendToAgent should work', done => { app.agent.messenger.once('sendToAgent-event', msg => { assert.deepEqual(msg, { foo: 'bar' }); done(); }); app.messenger.once('sendToAgent-event', () => { throw new Error('should not emit on app'); }); app.agent.messenger.sendToAgent('sendToAgent-event', { foo: 'bar' }); }); });
it('should plguin support alias name', () => { const baseDir = utils.getFilepath('apps/loader-plugin'); const appLoader = new AppWorkerLoader({ baseDir, app, logger, }); appLoader.loadConfig(); assert.deepEqual(appLoader.plugins.d1, { enable: true, name: 'd1', package: 'd', dependencies: [], optionalDependencies: [], env: [], path: path.join(baseDir, 'node_modules/d'), from: path.join(baseDir, 'config/plugin.js'), }); assert(!appLoader.plugins.d); });
describe('sendRandom()', () => { it('app.messenger.sendRandom should work', done => { app.agent.messenger.once('sendRandom-event', msg => { assert.deepEqual(msg, { foo: 'bar' }); done(); }); app.messenger.once('sendRandom-event', () => { throw new Error('should not emit on app'); }); app.messenger.sendRandom('sendRandom-event', { foo: 'bar' }); }); it('agent.messenger.sendRandom should work', done => { app.agent.messenger.once('sendRandom-event', () => { throw new Error('should not emit on agent'); }); app.messenger.once('sendRandom-event', msg => { assert.deepEqual(msg, { foo: 'bar' }); done(); }); app.agent.messenger.sendRandom('sendRandom-event', { foo: 'bar' }); }); });
it('should same name plugin level follow: app > framework > egg', () => { const baseDir = utils.getFilepath('apps/loader-plugin'); const appLoader = new AppWorkerLoader({ baseDir, app, logger, }); appLoader.loadConfig(); assert.deepEqual(appLoader.plugins.rds, { enable: true, name: 'rds', dependencies: [ 'session' ], optionalDependencies: [], env: [], package: 'rds', path: path.join(baseDir, 'node_modules/rds'), from: path.join(baseDir, 'config/plugin.js'), }); });