mirror of
https://github.com/abrendan/MicDropMessages.git
synced 2025-08-25 22:12:02 +02:00
Initial commit
This commit is contained in:
49
node_modules/server/plugins/session/index.js
generated
vendored
Normal file
49
node_modules/server/plugins/session/index.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
const modern = require('../../src/modern');
|
||||
const server = require('../../server');
|
||||
const session = require('express-session');
|
||||
server.session = session;
|
||||
const RedisStore = require('connect-redis')(server.session);
|
||||
let sessionMiddleware;
|
||||
|
||||
module.exports = {
|
||||
name: 'session',
|
||||
options: {
|
||||
__root: 'secret',
|
||||
resave: {
|
||||
default: false
|
||||
},
|
||||
saveUninitialized: {
|
||||
default: true
|
||||
},
|
||||
cookie: {
|
||||
default: {}
|
||||
},
|
||||
secret: {
|
||||
type: String,
|
||||
inherit: 'secret',
|
||||
env: 'SESSION_SECRET'
|
||||
},
|
||||
store: {
|
||||
env: false
|
||||
},
|
||||
redis: {
|
||||
type: String,
|
||||
inherit: true,
|
||||
env: 'REDIS_URL'
|
||||
}
|
||||
},
|
||||
init: ctx => {
|
||||
if (!ctx.options.session.store && ctx.options.session.redis) {
|
||||
ctx.options.session.store = new RedisStore({
|
||||
url: ctx.options.session.redis
|
||||
});
|
||||
}
|
||||
sessionMiddleware = session(ctx.options.session);
|
||||
},
|
||||
before: ctx => modern(sessionMiddleware)(ctx),
|
||||
launch: ctx => {
|
||||
ctx.io.use(function(socket, next) {
|
||||
sessionMiddleware(socket.request, socket.request.res || {}, next);
|
||||
});
|
||||
}
|
||||
};
|
36
node_modules/server/plugins/session/unit.test.js
generated
vendored
Normal file
36
node_modules/server/plugins/session/unit.test.js
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
const server = require('server');
|
||||
const run = require('server/test/run');
|
||||
const { get } = require('server/router');
|
||||
const send = require('server/reply/send');
|
||||
|
||||
describe('static plugin', () => {
|
||||
it('can handle sessions', async () => {
|
||||
return run({ public: 'test' }, [
|
||||
get('/a', ctx => {
|
||||
ctx.session.page = 'pageA';
|
||||
return send('');
|
||||
}),
|
||||
get('/b', ctx => send(ctx.session.page))
|
||||
]).alive(async api => {
|
||||
expect((await api.get('/a')).body).toEqual('');
|
||||
expect((await api.get('/b')).body).toEqual('pageA');
|
||||
});
|
||||
});
|
||||
|
||||
it('persists the session', async () => {
|
||||
const mid = ctx => {
|
||||
ctx.session.counter = (ctx.session.counter || 0) + 1;
|
||||
return 'n' + ctx.session.counter;
|
||||
};
|
||||
return run(mid).alive(async api => {
|
||||
for (let i = 0; i < 3; i++) {
|
||||
const res = await api.get('/');
|
||||
expect(res.body).toBe('n' + (i + 1));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('has the session for creating stores', () => {
|
||||
expect(server.session).toHaveProperty('Store', jasmine.any(Function));
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user