egg/test/lib/plugins/session.test.js
fengmk2 56d1deb17a feat: support background task on ctx (#119)
* feat: support background task on ctx

```js
ctx.runAtBackground(function* (ctx) {
  // async actions here
});
```

* fix: eslint style no-useless-escape

* chore: add license
2016-10-29 11:28:22 +08:00

76 lines
1.8 KiB
JavaScript

'use strict';
const request = require('supertest');
const should = require('should');
const mm = require('egg-mock');
const utils = require('../../utils');
describe('test/lib/plugins/session.test.js', () => {
let app;
before(() => {
app = utils.app('apps/koa-session');
return app.ready();
});
after(() => app.close());
afterEach(mm.restore);
it('should work when userId change', done => {
app.mockContext({
userId: 's1',
});
request(app.callback())
.get('/?uid=1')
.expect({
userId: 's1',
sessionUid: '1',
uid: '1',
})
.expect(200, (err, res) => {
if (err) return done(err);
should.exist(res.headers['set-cookie']);
const cookie = res.headers['set-cookie'].join(';');
cookie.should.match(/EGG_SESS=[\w-]+/);
// userId 不变,还是读取到上次的 session 值
app.mockContext({
userId: 's1',
});
request(app.callback())
.get('/?uid=2&userId=s1')
.set('Cookie', cookie)
.expect({
userId: 's1',
sessionUid: '1',
uid: '2',
})
.expect(200, (err, res) => {
if (err) return done(err);
should.not.exist(res.headers['set-cookie']);
// userId change, session still not change
app.mockContext({
userId: 's2',
});
request(app.callback())
.get('/?uid=2')
.set('Cookie', cookie)
.expect({
userId: 's2',
sessionUid: '1',
uid: '2',
})
.expect(res => {
should.not.exist(res.headers['set-cookie']);
})
.expect(200, err => {
if (err) return done(err);
request(app.callback())
.get('/clear')
.set('Cookie', cookie)
.expect('set-cookie', /EGG_SESS=;/, done);
});
});
});
});
});