overleaf/services/web/test/UnitTests/coffee/PasswordReset/PasswordResetTokenHandlerTests.coffee

65 lines
1.8 KiB
CoffeeScript
Raw Normal View History

should = require('chai').should()
SandboxedModule = require('sandboxed-module')
assert = require('assert')
path = require('path')
sinon = require('sinon')
modulePath = path.join __dirname, "../../../../app/js/Features/PasswordReset/PasswordResetTokenHandler"
expect = require("chai").expect
describe "PasswordResetTokenHandler", ->
beforeEach ->
@user_id = "user id here"
2014-05-16 05:52:31 -04:00
@stubbedToken = require("crypto").randomBytes(32)
@settings =
redis:
web:{}
@redisMulti =
set:sinon.stub()
2014-05-15 12:20:42 -04:00
get:sinon.stub()
del:sinon.stub()
expire:sinon.stub()
exec:sinon.stub()
@uuid = v4 : -> return @stubbedToken
self = @
@PasswordResetTokenHandler = SandboxedModule.require modulePath, requires:
"redis" :
createClient: =>
auth:->
multi: -> return self.redisMulti
"settings-sharelatex":@settings
"logger-sharelatex": log:->
"node-uuid":@uuid
describe "getNewToken", ->
it "should set a new token into redis with a ttl", (done)->
@redisMulti.exec.callsArgWith(0)
@PasswordResetTokenHandler.getNewToken @user_id, (err, token)=>
2014-05-15 12:58:25 -04:00
@redisMulti.set "password_token:#{@stubbedToken}", @user_id
@redisMulti.expire "password_token:#{@stubbedToken}", 60 * 60
done()
it "should return if there was an error", (done)->
@redisMulti.exec.callsArgWith(0, "error")
@PasswordResetTokenHandler.getNewToken @user_id, (err, token)=>
err.should.exist
done()
2014-05-15 12:20:42 -04:00
describe "getUserIdFromTokenAndExpire", ->
2014-05-15 12:20:42 -04:00
it "should get and delete the token", (done)->
@redisMulti.exec.callsArgWith(0, null, [@user_id])
@PasswordResetTokenHandler.getUserIdFromTokenAndExpire @stubbedToken, (err, user_id)=>
2014-05-15 12:20:42 -04:00
user_id.should.equal @user_id
2014-05-15 12:58:25 -04:00
@redisMulti.get.calledWith("password_token:#{@stubbedToken}").should.equal true
@redisMulti.del.calledWith("password_token:#{@stubbedToken}").should.equal true
2014-05-15 12:20:42 -04:00
done()