@bufferapp/session-manager
Advanced tools
Comparing version
@@ -28,4 +28,9 @@ const RPCClient = jest.genMockFromModule('micro-rpc-client'); | ||
return Promise.resolve('OK'); | ||
} else if (name === 'destroy') { | ||
if (args.token === 'brokenToken') { | ||
return Promise.reject(new Error(RPCClient.fakeErrorMessage)); | ||
} | ||
return Promise.resolve('OK'); | ||
} | ||
}); | ||
module.exports = RPCClient; |
20
index.js
@@ -68,2 +68,22 @@ const RPCClient = require('micro-rpc-client'); | ||
sessionExports.destroySession = async({ | ||
req, | ||
res, | ||
production, | ||
}) => { | ||
const cookieName = sessionExports.cookieName({ production }); | ||
await sessionClient.call('destroy', { | ||
token: sessionExports.getCookie({ | ||
name: cookieName, | ||
req, | ||
}), | ||
}); | ||
res.clearCookie(cookieName, { | ||
domain: sessionExports.cookieDomain({ production }), | ||
}); | ||
res.clearCookie(`${production ? '' : 'local'}bufferapp_ci_session`, { | ||
domain: '.buffer.com', | ||
}); | ||
}; | ||
const getSession = ({ | ||
@@ -70,0 +90,0 @@ production, |
@@ -11,2 +11,3 @@ import RPCClient from 'micro-rpc-client'; | ||
updateSession, | ||
destroySession, | ||
} from './'; | ||
@@ -28,3 +29,3 @@ | ||
it('should handle production session cookie', async () => { | ||
const bufferCookieName = 'buffer-session'; | ||
const bufferCookieName = 'buffer_session'; | ||
const cookieValue = 'coooooookies'; | ||
@@ -58,3 +59,3 @@ const req = { | ||
it('should handle session service failure', async () => { | ||
const bufferCookieName = 'buffer-session'; | ||
const bufferCookieName = 'buffer_session'; | ||
const cookieValue = 'brokenCookie'; | ||
@@ -84,3 +85,3 @@ const req = { | ||
it('should get a cookie from a request in production', () => { | ||
const name = 'buffer-session'; | ||
const name = 'buffer_session'; | ||
const value = 'coooooookies'; | ||
@@ -115,3 +116,3 @@ const req = { | ||
expect(cookieName({ production: true })) | ||
.toBe('buffer-session'); | ||
.toBe('buffer_session'); | ||
}); | ||
@@ -121,3 +122,3 @@ | ||
expect(cookieName({ production: false })) | ||
.toBe('local-buffer-session'); | ||
.toBe('local_buffer_session'); | ||
}); | ||
@@ -269,3 +270,3 @@ }); | ||
expect(res.cookie) | ||
.toBeCalledWith('buffer-session', RPCClient.fakeAccessToken, { | ||
.toBeCalledWith('buffer_session', RPCClient.fakeAccessToken, { | ||
domain: '.buffer.com', | ||
@@ -297,3 +298,3 @@ maxAge: 365 * 24 * 60 * 60 * 1000, | ||
expect(res.cookie) | ||
.toBeCalledWith('local-buffer-session', RPCClient.fakeAccessToken, { | ||
.toBeCalledWith('local_buffer_session', RPCClient.fakeAccessToken, { | ||
domain: '.local.buffer.com', | ||
@@ -331,3 +332,3 @@ maxAge: 365 * 24 * 60 * 60 * 1000, | ||
it('should update a session in production', async () => { | ||
const name = 'buffer-session'; | ||
const name = 'buffer_session'; | ||
const value = 'coooooookies'; | ||
@@ -355,3 +356,3 @@ const req = { | ||
it('should update a session in dev', async () => { | ||
const name = 'local-buffer-session'; | ||
const name = 'local_buffer_session'; | ||
const value = 'coooooookiez'; | ||
@@ -379,3 +380,3 @@ const req = { | ||
it('should throw update session errors', async () => { | ||
const name = 'buffer-session'; | ||
const name = 'buffer_session'; | ||
const value = 'coooooookies'; | ||
@@ -443,2 +444,93 @@ const req = { | ||
}); | ||
describe('destroySession', () => { | ||
it('should destroy a session', async () => { | ||
const name = 'buffer_session'; | ||
const value = 'coooooookies'; | ||
const req = { | ||
cookies: { | ||
[name]: value, | ||
}, | ||
}; | ||
const res = { | ||
clearCookie: jest.fn(), | ||
send: jest.fn(), | ||
}; | ||
const sessionClient = new RPCClient({ url: 'sometesturl' }); | ||
await destroySession({ | ||
req, | ||
res, | ||
sessionClient, | ||
production: true, | ||
}); | ||
expect(RPCClient.prototype.call) | ||
.toBeCalledWith('destroy', { | ||
token: value, | ||
}); | ||
expect(res.clearCookie) | ||
.toBeCalledWith('buffer_session', { | ||
domain: '.buffer.com', | ||
}); | ||
expect(res.clearCookie) | ||
.toBeCalledWith('bufferapp_ci_session', { | ||
domain: '.buffer.com', | ||
}); | ||
}); | ||
it('should destroy a dev session', async () => { | ||
const name = 'local_buffer_session'; | ||
const value = 'coooooookies'; | ||
const req = { | ||
cookies: { | ||
[name]: value, | ||
}, | ||
}; | ||
const res = { | ||
clearCookie: jest.fn(), | ||
send: jest.fn(), | ||
}; | ||
const sessionClient = new RPCClient({ url: 'sometesturl' }); | ||
await destroySession({ | ||
req, | ||
res, | ||
sessionClient, | ||
production: false, | ||
}); | ||
expect(RPCClient.prototype.call) | ||
.toBeCalledWith('destroy', { | ||
token: value, | ||
}); | ||
expect(res.clearCookie) | ||
.toBeCalledWith(name, { | ||
domain: '.local.buffer.com', | ||
}); | ||
expect(res.clearCookie) | ||
.toBeCalledWith('localbufferapp_ci_session', { | ||
domain: '.buffer.com', | ||
}); | ||
}); | ||
it('should handle destory session failure', async () => { | ||
const name = 'buffer_session'; | ||
const req = { | ||
cookies: { | ||
[name]: 'brokenToken', | ||
}, | ||
}; | ||
const res = {}; | ||
const sessionClient = new RPCClient({ url: 'sometesturl' }); | ||
try { | ||
await destroySession({ | ||
res, | ||
req, | ||
sessionClient, | ||
production: true, | ||
}); | ||
throw new Error('This should break'); | ||
} catch (err) { | ||
expect(err.message) | ||
.toBe(RPCClient.fakeErrorMessage); | ||
} | ||
}); | ||
}); | ||
}); |
{ | ||
"name": "@bufferapp/session-manager", | ||
"version": "0.5.36", | ||
"version": "0.5.37", | ||
"description": "Buffer session manager", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
18748
18.88%655
20.85%