diff --git a/.travis.yml b/.travis.yml index 679b83d..a781294 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,3 +12,5 @@ script: - npm run ci after_script: - npminstall codecov && codecov +services: + - redis-server diff --git a/config/config.default.js b/config/config.default.js index b32aee9..fca7223 100644 --- a/config/config.default.js +++ b/config/config.default.js @@ -5,4 +5,5 @@ exports.session = { key: 'EGG_SESS', httpOnly: true, encrypt: true, + // sameSite: null, }; diff --git a/package.json b/package.json index 9aa8783..3ec7aef 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "autod": "autod" }, "ci": { - "version": "8, 9", + "version": "8, 10, 12", "services": "redis-server", "type": "travis" }, diff --git a/test/app/middleware/session.test.js b/test/app/middleware/session.test.js index 21a2c1a..110c533 100644 --- a/test/app/middleware/session.test.js +++ b/test/app/middleware/session.test.js @@ -41,6 +41,10 @@ describe('test/app/middlewares/session.test.js', () => { .get('/set?foo=bar') .expect(200) .expect({ foo: 'bar' }) + .expect(res => { + const cookie = res.headers['set-cookie'].join('|'); + assert(!cookie.includes('; samesite=none;')); + }) .expect('set-cookie', /EGG_SESS=.*?;/); yield agent.get('/get') @@ -64,6 +68,28 @@ describe('test/app/middlewares/session.test.js', () => { }); }); + describe('sameSite', () => { + before(() => { + app = mm.app({ baseDir: 'samesite-none-session' }); + return app.ready(); + }); + beforeEach(() => { + agent = request.agent(app.callback()); + }); + after(() => app.close()); + + it('should work with sameSite=none', async () => { + await agent + .get('/set?foo=bar') + .expect(200) + .expect({ foo: 'bar' }) + .expect(res => { + const cookie = res.headers['set-cookie'].join('|'); + assert(cookie.includes('; samesite=none;')); + }); + }); + }); + [ 'cookie-session', 'memory-session', diff --git a/test/fixtures/samesite-none-session/app/controller/home.js b/test/fixtures/samesite-none-session/app/controller/home.js new file mode 100644 index 0000000..3707362 --- /dev/null +++ b/test/fixtures/samesite-none-session/app/controller/home.js @@ -0,0 +1,10 @@ +'use strict'; + +exports.get = function* (ctx) { + ctx.body = ctx.session; +}; + +exports.set = function* (ctx) { + ctx.session = ctx.query; + ctx.body = ctx.session; +}; diff --git a/test/fixtures/samesite-none-session/app/router.js b/test/fixtures/samesite-none-session/app/router.js new file mode 100644 index 0000000..1901a07 --- /dev/null +++ b/test/fixtures/samesite-none-session/app/router.js @@ -0,0 +1,6 @@ +'use strict'; + +module.exports = function(app) { + app.get('/get', 'home.get'); + app.get('/set', 'home.set'); +}; diff --git a/test/fixtures/samesite-none-session/config/config.default.js b/test/fixtures/samesite-none-session/config/config.default.js new file mode 100644 index 0000000..8c8e2d5 --- /dev/null +++ b/test/fixtures/samesite-none-session/config/config.default.js @@ -0,0 +1,6 @@ +'use strict'; + +exports.keys = 'keys'; +exports.session = { + sameSite: 'none', +}; diff --git a/test/fixtures/samesite-none-session/package.json b/test/fixtures/samesite-none-session/package.json new file mode 100644 index 0000000..ab394c7 --- /dev/null +++ b/test/fixtures/samesite-none-session/package.json @@ -0,0 +1,3 @@ +{ + "name": "samesite-none-session" +}