mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-22 23:46:25 +00:00
Test trackSession
This commit is contained in:
parent
a869c99c60
commit
2ae2e6ed4f
2 changed files with 112 additions and 11 deletions
services/web
app/coffee/Features/User
test/UnitTests/coffee/User
|
@ -31,9 +31,8 @@ module.exports = UserSessionsManager =
|
|||
if err
|
||||
logger.err {err, user_id: user._id, sessionSetKey}, "error while adding session key to UserSessions set"
|
||||
return callback(err)
|
||||
UserSessionsManager._checkSessions(user, () ->)
|
||||
callback()
|
||||
UserSessionsManager._checkSessions(user, () ->)
|
||||
null
|
||||
|
||||
untrackSession: (user, sessionId, callback=(err)-> ) ->
|
||||
if !user
|
||||
|
@ -55,9 +54,8 @@ module.exports = UserSessionsManager =
|
|||
if err
|
||||
logger.err {err, user_id: user._id, sessionSetKey}, "error while removing session key from UserSessions set"
|
||||
return callback(err)
|
||||
UserSessionsManager._checkSessions(user, () ->)
|
||||
callback()
|
||||
UserSessionsManager._checkSessions(user, () ->)
|
||||
null
|
||||
|
||||
revokeAllUserSessions: (user, callback=(err)->) ->
|
||||
if !user
|
||||
|
|
|
@ -12,16 +12,25 @@ describe 'UserSessionsManager', ->
|
|||
_id: "abcd"
|
||||
email: "user@example.com"
|
||||
@sessionId = 'some_session_id'
|
||||
|
||||
@rclient =
|
||||
multi: () => @rclient
|
||||
multi: sinon.stub()
|
||||
exec: sinon.stub()
|
||||
get: sinon.stub().returns(@rclient)
|
||||
sadd: sinon.stub().returns(@rclient)
|
||||
srem: sinon.stub().returns(@rclient)
|
||||
smembers: sinon.stub().returns(@rclient)
|
||||
expire: sinon.stub().returns(@rclient)
|
||||
get: sinon.stub()
|
||||
sadd: sinon.stub()
|
||||
srem: sinon.stub()
|
||||
smembers: sinon.stub()
|
||||
expire: sinon.stub()
|
||||
@rclient.multi.returns(@rclient)
|
||||
@rclient.get.returns(@rclient)
|
||||
@rclient.sadd.returns(@rclient)
|
||||
@rclient.srem.returns(@rclient)
|
||||
@rclient.smembers.returns(@rclient)
|
||||
@rclient.expire.returns(@rclient)
|
||||
@rclient.exec.callsArgWith(0, null)
|
||||
|
||||
@redis =
|
||||
createClient: () -> @rclient
|
||||
createClient: () => @rclient
|
||||
@logger =
|
||||
err: sinon.stub()
|
||||
error: sinon.stub()
|
||||
|
@ -45,3 +54,97 @@ describe 'UserSessionsManager', ->
|
|||
it 'should build the correct key', ->
|
||||
result = @UserSessionsManager._sessionKey(@sessionId)
|
||||
result.should.equal 'sess:some_session_id'
|
||||
|
||||
describe 'trackSession', ->
|
||||
|
||||
beforeEach ->
|
||||
@call = (callback) =>
|
||||
@UserSessionsManager.trackSession @user, @sessionId, callback
|
||||
@rclient.exec.callsArgWith(0, null)
|
||||
@_checkSessions = sinon.stub(@UserSessionsManager, '_checkSessions').returns(null)
|
||||
|
||||
afterEach ->
|
||||
@_checkSessions.restore()
|
||||
|
||||
it 'should not produce an error', (done) ->
|
||||
@call (err) =>
|
||||
expect(err).to.not.be.instanceof Error
|
||||
done()
|
||||
|
||||
it 'should call the appropriate redis methods', (done) ->
|
||||
@call (err) =>
|
||||
@rclient.multi.callCount.should.equal 1
|
||||
@rclient.sadd.callCount.should.equal 1
|
||||
@rclient.expire.callCount.should.equal 1
|
||||
@rclient.exec.callCount.should.equal 1
|
||||
done()
|
||||
|
||||
it 'should call _checkSessions', (done) ->
|
||||
@call (err) =>
|
||||
@_checkSessions.callCount.should.equal 1
|
||||
done()
|
||||
|
||||
describe 'when rclient produces an error', ->
|
||||
|
||||
beforeEach ->
|
||||
@rclient.exec.callsArgWith(0, new Error('woops'))
|
||||
|
||||
it 'should produce an error', (done) ->
|
||||
@call (err) =>
|
||||
expect(err).to.be.instanceof Error
|
||||
done()
|
||||
|
||||
it 'should not call _checkSessions', (done) ->
|
||||
@call (err) =>
|
||||
@_checkSessions.callCount.should.equal 0
|
||||
done()
|
||||
|
||||
describe 'when no user is supplied', ->
|
||||
|
||||
beforeEach ->
|
||||
@call = (callback) =>
|
||||
@UserSessionsManager.trackSession null, @sessionId, callback
|
||||
|
||||
it 'should not produce an error', (done) ->
|
||||
@call (err) =>
|
||||
expect(err).to.not.be.instanceof Error
|
||||
expect(err).to.equal null
|
||||
done()
|
||||
|
||||
it 'should not call the appropriate redis methods', (done) ->
|
||||
@call (err) =>
|
||||
@rclient.multi.callCount.should.equal 0
|
||||
@rclient.sadd.callCount.should.equal 0
|
||||
@rclient.expire.callCount.should.equal 0
|
||||
@rclient.exec.callCount.should.equal 0
|
||||
done()
|
||||
|
||||
it 'should not call _checkSessions', (done) ->
|
||||
@call (err) =>
|
||||
@_checkSessions.callCount.should.equal 0
|
||||
done()
|
||||
|
||||
describe 'when no sessionId is supplied', ->
|
||||
|
||||
beforeEach ->
|
||||
@call = (callback) =>
|
||||
@UserSessionsManager.trackSession @user, null, callback
|
||||
|
||||
it 'should not produce an error', (done) ->
|
||||
@call (err) =>
|
||||
expect(err).to.not.be.instanceof Error
|
||||
expect(err).to.equal null
|
||||
done()
|
||||
|
||||
it 'should not call the appropriate redis methods', (done) ->
|
||||
@call (err) =>
|
||||
@rclient.multi.callCount.should.equal 0
|
||||
@rclient.sadd.callCount.should.equal 0
|
||||
@rclient.expire.callCount.should.equal 0
|
||||
@rclient.exec.callCount.should.equal 0
|
||||
done()
|
||||
|
||||
it 'should not call _checkSessions', (done) ->
|
||||
@call (err) =>
|
||||
@_checkSessions.callCount.should.equal 0
|
||||
done()
|
||||
|
|
Loading…
Add table
Reference in a new issue