| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- should = require('chai').should()
- SandboxedModule = require('sandboxed-module')
- assert = require('assert')
- path = require('path')
- sinon = require('sinon')
- modulePath = path.join __dirname, "../../../../app/js/Features/Security/SessionInvalidator"
- expect = require("chai").expect
- describe "SessionInvaildator", ->
- beforeEach ->
- @settings =
- redis:
- web:{}
- @rclient =
- del:sinon.stub()
- set:sinon.stub().callsArgWith(2)
- get:sinon.stub()
- @SessionInvaildator = SandboxedModule.require modulePath, requires:
- "settings-sharelatex":@settings
- "logger-sharelatex": log:->
- "redis-sharelatex": createClient:=>
- return @rclient
- @emailAddress = "bob@smith"
- @sessionId = "sess:123456"
- @stubbedKey = "e_sess:7890"
- describe "_getEmailKey", ->
- it "should get the email key by hashing it", ->
- result = @SessionInvaildator._getEmailKey "bob@smith.com"
- result.should.equal "e_sess:6815b961bfb8f83dd4cecd357e55e62d"
- describe "tracksession", ->
- it "should save the session in redis", (done)->
- @SessionInvaildator._getEmailKey = sinon.stub().returns(@stubbedKey)
- @SessionInvaildator.tracksession @sessionId, @emailAddress, =>
- @rclient.set.calledWith(@stubbedKey).should.equal true
- done()
- describe "invalidateSession", (done)->
- beforeEach ->
- @SessionInvaildator._getEmailKey = sinon.stub().returns(@stubbedKey)
- @rclient.del.callsArgWith(1)
- it "get the session key and delete it", (done)->
- @rclient.get.callsArgWith 1, null, @sessionId
- @SessionInvaildator.invalidateSession @emailAddress, =>
- @rclient.del.calledWith(@sessionId).should.equal true
- @rclient.del.calledWith(@stubbedKey).should.equal true
- done()
|