From a21e6fe89b5228a4fc9609e775f0909c2bb465ee Mon Sep 17 00:00:00 2001 From: Yiyu He Date: Sun, 28 Jun 2020 13:42:23 +0800 Subject: [PATCH 1/3] test: add test case for session maxAge (#16) --- test/app/middleware/session.test.js | 38 +++++++++++++++++++ .../app/controller/home.js | 25 ++++++++++++ .../session-maxage-session/app/router.js | 9 +++++ .../config/config.default.js | 6 +++ .../session-maxage-session/package.json | 3 ++ 5 files changed, 81 insertions(+) create mode 100644 test/fixtures/session-maxage-session/app/controller/home.js create mode 100644 test/fixtures/session-maxage-session/app/router.js create mode 100644 test/fixtures/session-maxage-session/config/config.default.js create mode 100644 test/fixtures/session-maxage-session/package.json diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index b7edbbc..6b49df1 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -92,6 +92,43 @@ describe('test/app/middlewares/session.test.js', () => { }); }); + describe('session maxage', () => { + before(() => { + app = mm.app({ baseDir: 'session-maxage-session' }); + return app.ready(); + }); + beforeEach(() => { + agent = request.agent(app.callback()); + }); + after(() => app.close()); + + it('should work with maxage=ession', async () => { + await agent + .get('/set?foo=bar') + .set('user-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36') + .set('x-forwarded-proto', 'https') + .expect(200) + .expect({ foo: 'bar' }) + .expect(res => { + const cookie = res.headers['set-cookie'].join('|'); + assert(!cookie.includes('expires')); + assert(!cookie.includes('max-age')); + }); + }); + + it('should ctx.session.maxAge=session work', async () => { + await agent + .get('/maxAge?maxAge=session') + .expect(200) + .expect(res => { + const cookie = res.headers['set-cookie'].join(';'); + assert(cookie.match(/EGG_SESS=.*?;/)); + assert(!cookie.includes('expires')); + assert(!cookie.includes('max-age')); + }); + }); + }); + [ 'cookie-session', 'memory-session', @@ -195,6 +232,7 @@ describe('test/app/middlewares/session.test.js', () => { cookie = res.headers['set-cookie'].join(';'); assert(cookie.match(/EGG_SESS=.*?;/)); assert(cookie.match(/expires=/)); + assert(cookie.match(/max-age=/)); }); yield sleep(200); diff --git a/test/fixtures/session-maxage-session/app/controller/home.js b/test/fixtures/session-maxage-session/app/controller/home.js new file mode 100644 index 0000000..1b97026 --- /dev/null +++ b/test/fixtures/session-maxage-session/app/controller/home.js @@ -0,0 +1,25 @@ +'use strict'; + +exports.get = function* (ctx) { + ctx.body = ctx.session; +}; + +exports.set = function* (ctx) { + ctx.session = ctx.query; + ctx.body = ctx.session; +}; + +exports.setKey = function* (ctx) { + ctx.session.key = ctx.query.key; + ctx.body = ctx.session; +}; + +exports.remove = function* (ctx) { + ctx.session = null; + ctx.body = ctx.session; +}; + +exports.maxAge = function* (ctx) { + ctx.session.maxAge = this.query.maxAge; + ctx.body = ctx.session; +}; diff --git a/test/fixtures/session-maxage-session/app/router.js b/test/fixtures/session-maxage-session/app/router.js new file mode 100644 index 0000000..d5938ed --- /dev/null +++ b/test/fixtures/session-maxage-session/app/router.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = function(app) { + app.get('/get', 'home.get'); + app.get('/set', 'home.set'); + app.get('/setKey', 'home.setKey'); + app.get('/remove', 'home.remove'); + app.get('/maxAge', 'home.maxAge'); +}; diff --git a/test/fixtures/session-maxage-session/config/config.default.js b/test/fixtures/session-maxage-session/config/config.default.js new file mode 100644 index 0000000..aa6ff99 --- /dev/null +++ b/test/fixtures/session-maxage-session/config/config.default.js @@ -0,0 +1,6 @@ +'use strict'; + +exports.keys = 'keys'; +exports.session = { + maxAge: 'session', +}; diff --git a/test/fixtures/session-maxage-session/package.json b/test/fixtures/session-maxage-session/package.json new file mode 100644 index 0000000..9f1ec46 --- /dev/null +++ b/test/fixtures/session-maxage-session/package.json @@ -0,0 +1,3 @@ +{ + "name": "httponly-false-session" +} From fb47f1b5dd5037def631066a95f36e9c2488e5f3 Mon Sep 17 00:00:00 2001 From: clchenliang Date: Tue, 23 Mar 2021 12:12:39 +0800 Subject: [PATCH 2/3] feat: as default not to log the session val (#17) feat: should set session val not log by logValue: false --- README.md | 6 ++ app.js | 4 +- config/config.default.js | 1 + test/app/middleware/session.test.js | 77 +++++++++++++++++++ .../app/controller/home.js | 25 ++++++ .../logValue-false-session/app/router.js | 9 +++ .../config/config.default.js | 6 ++ .../logValue-false-session/package.json | 3 + 8 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/logValue-false-session/app/controller/home.js create mode 100644 test/fixtures/logValue-false-session/app/router.js create mode 100644 test/fixtures/logValue-false-session/config/config.default.js create mode 100644 test/fixtures/logValue-false-session/package.json diff --git a/README.md b/README.md index 2dd108c..bee5196 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,12 @@ Once you use external session store, session is strong dependent on your externa Support all configurations in [koa-session](https://github.com/koajs/session). +* logValue + +``` +Support not to print the session value when session event trigger log. Default to be true. +``` + [View the default configurations](https://github.com/eggjs/egg-session/blob/master/config/config.default.js) ## Questions & Suggestions diff --git a/app.js b/app.js index 91da4b6..d40c00a 100644 --- a/app.js +++ b/app.js @@ -11,9 +11,9 @@ module.exports = function(app) { ctx.coreLogger.warn('[session][missed] key(%s)', key); }); app.on('session:expired', ({ ctx, key, value }) => { - ctx.coreLogger.warn('[session][expired] key(%s) value(%j)', key, value); + ctx.coreLogger.warn('[session][expired] key(%s) value(%j)', key, app.config.session.logValue ? value : ''); }); app.on('session:invalid', ({ ctx, key, value }) => { - ctx.coreLogger.warn('[session][invalid] key(%s) value(%j)', key, value); + ctx.coreLogger.warn('[session][invalid] key(%s) value(%j)', key, app.config.session.logValue ? value : ''); }); }; diff --git a/config/config.default.js b/config/config.default.js index fca7223..f445487 100644 --- a/config/config.default.js +++ b/config/config.default.js @@ -6,4 +6,5 @@ exports.session = { httpOnly: true, encrypt: true, // sameSite: null, + logValue: true, }; diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 6b49df1..82f8969 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -92,6 +92,83 @@ describe('test/app/middlewares/session.test.js', () => { }); }); + describe('logValue', () => { + before(() => { + app = mm.app({ baseDir: 'logValue-false-session' }); + return app.ready(); + }); + beforeEach(() => { + agent = request.agent(app.callback()); + app.mockLog(); + }); + after(() => app.close()); + + it('when logValue is true, should log the session value', async () => { + let cookie; + app.mockLog(); + mm(app.config.session, 'logValue', true); + + await agent + .get('/maxAge?maxAge=100') + .expect(200) + .expect(res => { + cookie = res.headers['set-cookie'].join(';'); + }); + + await sleep(200); + + await request(app.callback()) + .get('/get') + .set('cookie', cookie) + .expect(200) + .expect({}); + app.notExpectLog('[session][expired] key(undefined) value("")', 'coreLogger'); + }); + + it('when logValue is false, should not log the session value', async () => { + mm(app.config.session, 'logValue', false); + app.mockLog(); + let cookie; + + await agent + .get('/maxAge?maxAge=100') + .expect(200) + .expect(res => { + cookie = res.headers['set-cookie'].join(';'); + }); + + await sleep(200); + + await request(app.callback()) + .get('/get') + .set('cookie', cookie) + .expect(200) + .expect({}); + + await sleep(1000); + + app.expectLog('[session][expired] key(undefined) value("")', 'coreLogger'); + }); + + it.only('when logValue is false, valid false, should not log the session value', async () => { + mm(app.config.session, 'logValue', false); + mm(app.config.session, 'valid', () => false); + app.mockLog(); + + await agent + .get('/set?foo=bar') + .expect(200) + .expect({ foo: 'bar' }); + + await agent + .get('/get'); + + await sleep(1000); + + app.expectLog('[session][invalid] key(undefined) value("")', 'coreLogger'); + }); + }); + describe('session maxage', () => { before(() => { app = mm.app({ baseDir: 'session-maxage-session' }); diff --git a/test/fixtures/logValue-false-session/app/controller/home.js b/test/fixtures/logValue-false-session/app/controller/home.js new file mode 100644 index 0000000..b122fac --- /dev/null +++ b/test/fixtures/logValue-false-session/app/controller/home.js @@ -0,0 +1,25 @@ +'use strict'; + +exports.get = function* (ctx) { + ctx.body = ctx.session; +}; + +exports.set = function* (ctx) { + ctx.session = ctx.query; + ctx.body = ctx.session; +}; + +exports.setKey = function* (ctx) { + ctx.session.key = ctx.query.key; + ctx.body = ctx.session; +}; + +exports.remove = function* (ctx) { + ctx.session = null; + ctx.body = ctx.session; +}; + +exports.maxAge = function* (ctx) { + ctx.session.maxAge = Number(this.query.maxAge); + ctx.body = ctx.session; +}; diff --git a/test/fixtures/logValue-false-session/app/router.js b/test/fixtures/logValue-false-session/app/router.js new file mode 100644 index 0000000..d5938ed --- /dev/null +++ b/test/fixtures/logValue-false-session/app/router.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = function(app) { + app.get('/get', 'home.get'); + app.get('/set', 'home.set'); + app.get('/setKey', 'home.setKey'); + app.get('/remove', 'home.remove'); + app.get('/maxAge', 'home.maxAge'); +}; diff --git a/test/fixtures/logValue-false-session/config/config.default.js b/test/fixtures/logValue-false-session/config/config.default.js new file mode 100644 index 0000000..7aee4cf --- /dev/null +++ b/test/fixtures/logValue-false-session/config/config.default.js @@ -0,0 +1,6 @@ +'use strict'; + +exports.keys = 'keys'; +exports.session = { + logValue: false, +}; diff --git a/test/fixtures/logValue-false-session/package.json b/test/fixtures/logValue-false-session/package.json new file mode 100644 index 0000000..217cbd6 --- /dev/null +++ b/test/fixtures/logValue-false-session/package.json @@ -0,0 +1,3 @@ +{ + "name": "logvalue-false-session" +} From 1ee915bf4e1983c5f34f3bfbff3366b0b210b485 Mon Sep 17 00:00:00 2001 From: popomore Date: Tue, 23 Mar 2021 16:01:59 +0800 Subject: [PATCH 3/3] Release 3.3.0 --- History.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index d4c5616..edca5fe 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,13 @@ +3.3.0 / 2021-03-23 +================== + +**features** + * [[`fb47f1b`](http://github.com/eggjs/egg-session/commit/fb47f1b5dd5037def631066a95f36e9c2488e5f3)] - feat: as default not to log the session val (#17) (clchenliang <>) + +**others** + * [[`a21e6fe`](http://github.com/eggjs/egg-session/commit/a21e6fe89b5228a4fc9609e775f0909c2bb465ee)] - test: add test case for session maxAge (#16) (Yiyu He <>) + 3.2.0 / 2020-05-12 ================== diff --git a/package.json b/package.json index a725b96..a30b7c5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "egg-session", - "version": "3.2.0", + "version": "3.3.0", "description": "session plugin for egg", "eggPlugin": { "name": "session"