From 229035be6010bbb2edcbb346bc9c969dee996b54 Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Thu, 12 Apr 2018 20:50:17 +0800 Subject: [PATCH] fix: should cleanup userauthLoginReferer on session (#34) pick from https://github.com/koajs/userauth/pull/33 --- index.js | 6 ++++-- test/app.js | 3 ++- test/index.test.js | 45 ++++++++++++++++++++++++++------------------- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/index.js b/index.js index 43ea3a8..acefc93 100644 --- a/index.js +++ b/index.js @@ -308,9 +308,11 @@ function login(options) { */ function loginCallback(options) { - return function *loginCallbackHandler() { + return function* loginCallbackHandler() { var referer = this.session.userauthLoginReferer || options.rootPath; - debug('loginReferer in session: %j', this.session.userauthLoginReferer); + debug('[loginCallbackHandler] loginReferer in session: %j', this.session.userauthLoginReferer); + // cleanup the userauthLoginReferer on session + this.session.userauthLoginReferer = undefined; var user = this.session[options.userField]; if (user) { // already login diff --git a/test/app.js b/test/app.js index 7fb32a3..66942df 100644 --- a/test/app.js +++ b/test/app.js @@ -90,7 +90,8 @@ module.exports = function(match, ignore) { app.use(function* (next) { this.body = { user: this.session.user || null, - message: this.method + ' ' + this.url + message: this.method + ' ' + this.url, + userauthLoginReferer: this.session.userauthLoginReferer, }; }); return app.callback(); diff --git a/test/index.test.js b/test/index.test.js index 48b77d3..ed92104 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -421,35 +421,42 @@ describe('test/index.test.js', function () { it('should return 200 status and user info after user logined', function (done) { request(app) - .get('/login/callback') - .set('mocklogin', 1) - .expect('Location', '/') + .get('/login?redirect=%2Fuser%2Ffoo') .expect(302, function (err, res) { should.not.exist(err); var cookie = res.headers['set-cookie'].join(';'); + request(app) - .get('/') + .get('/login/callback') + .set('mocklogin', 1) .set({ Cookie: 'cookie2=1234; ' + cookie }) - .expect({ - user: { - nick: 'mock user', - userid: 1234 - }, - message: 'GET /' - }) - .expect(200, function (err, res) { - // logout + .expect('Location', '/user/foo') + .expect(302, function (err, res) { should.not.exist(err); request(app) - .get('/logout') + .get('/user/foo') .set({ Cookie: 'cookie2=1234; ' + cookie }) - .expect('Location', '/') - .expect(302, function () { + .expect({ + user: { + nick: 'mock user', + userid: 1234 + }, + message: 'GET /user/foo' + }) + .expect(200, function (err, res) { + // logout + should.not.exist(err); request(app) .get('/logout') - .set({ referer: '/login' }) - .expect('Location', '/login') - .expect(302, done); + .set({ Cookie: 'cookie2=1234; ' + cookie }) + .expect('Location', '/') + .expect(302, function () { + request(app) + .get('/logout') + .set({ referer: '/login' }) + .expect('Location', '/login') + .expect(302, done); + }); }); }); });