Browse Source

Merge branch 'master' of github.com:sharelatex/web-sharelatex

Henry Oswald 12 years ago
parent
commit
50df82697a

+ 2 - 1
services/web/app/coffee/Features/Downloads/ProjectZipStreamManager.coffee

@@ -46,5 +46,6 @@ module.exports = ProjectZipStreamManager =
 								return callback(err)
 							path = path.slice(1) if path[0] == "/"
 							archive.append stream, name: path
-							callback()
+							stream.on "end", () ->
+								callback()
 			async.series jobs, callback

+ 2 - 2
services/web/app/coffee/Features/PasswordReset/PasswordResetTokenHandler.coffee

@@ -2,7 +2,7 @@ Settings = require('settings-sharelatex')
 redis = require('redis')
 rclient = redis.createClient(Settings.redis.web.port, Settings.redis.web.host)
 rclient.auth(Settings.redis.web.password)
-uuid = require("node-uuid")
+crypto = require("crypto")
 logger = require("logger-sharelatex")
 
 ONE_HOUR_IN_S = 60 * 60
@@ -13,7 +13,7 @@ module.exports =
 
 	getNewToken: (user_id, callback)->
 		logger.log user_id:user_id, "generating token for password reset"
-		token = uuid.v4()
+		token = crypto.randomBytes(32).toString("hex")
 		multi = rclient.multi()
 		multi.set buildKey(token), user_id
 		multi.expire buildKey(token), ONE_HOUR_IN_S

+ 5 - 2
services/web/test/UnitTests/coffee/Downloads/ProjectZipStreamManagerTests.coffee

@@ -4,6 +4,7 @@ should = chai.should()
 expect = chai.expect
 modulePath = "../../../../app/js/Features/Downloads/ProjectZipStreamManager.js"
 SandboxedModule = require('sandboxed-module')
+EventEmitter = require("events").EventEmitter
 
 describe "ProjectZipStreamManager", ->
 	beforeEach ->
@@ -112,14 +113,16 @@ describe "ProjectZipStreamManager", ->
 				"/folder/picture.png":
 					_id: "file-id-2"
 			@streams =
-				"file-id-1" : "stream-mock-1"
-				"file-id-2" : "stream-mock-2"
+				"file-id-1" : new EventEmitter()
+				"file-id-2" : new EventEmitter()
 			@ProjectEntityHandler.getAllFiles = sinon.stub().callsArgWith(1, null, @files)
 			@archive.append = sinon.stub()
 			@FileStoreHandler.getFileStream = (project_id, file_id, {}, callback) =>
 				callback null, @streams[file_id]
 			sinon.spy @FileStoreHandler, "getFileStream"
 			@ProjectZipStreamManager.addAllFilesToArchive @project_id, @archive, @callback
+			for path, stream of @streams
+				stream.emit "end"
 
 		it "should get the files for the project", ->
 			@ProjectEntityHandler.getAllFiles.calledWith(@project_id).should.equal true

+ 5 - 6
services/web/test/UnitTests/coffee/PasswordReset/PasswordResetTokenHandlerTests.coffee

@@ -10,7 +10,7 @@ describe "PasswordResetTokenHandler", ->
 
 	beforeEach ->
 		@user_id = "user id here"
-		@stubbedToken = "dsajdiojlklksda"
+		@stubbedToken = require("crypto").randomBytes(32)
 
 		@settings = 
 			redis:
@@ -21,7 +21,6 @@ describe "PasswordResetTokenHandler", ->
 			del:sinon.stub()
 			expire:sinon.stub()
 			exec:sinon.stub()
-		@uuid = v4 : -> return @stubbedToken
 		self = @
 		@PasswordResetTokenHandler = SandboxedModule.require modulePath, requires:
 			"redis" :
@@ -31,16 +30,16 @@ describe "PasswordResetTokenHandler", ->
 
 			"settings-sharelatex":@settings
 			"logger-sharelatex": log:->
-			"node-uuid":@uuid
+			"crypto": randomBytes: () => @stubbedToken
 
 
 	describe "getNewToken", ->
 
 		it "should set a new token into redis with a ttl", (done)->
 			@redisMulti.exec.callsArgWith(0) 
-			@PasswordResetTokenHandler.getNewToken @user_id, (err, token)=>
-				@redisMulti.set "password_token:#{@stubbedToken}", @user_id
-				@redisMulti.expire "password_token:#{@stubbedToken}", 60 * 60
+			@PasswordResetTokenHandler.getNewToken @user_id, (err, token) =>
+				@redisMulti.set.calledWith("password_token:#{@stubbedToken.toString("hex")}", @user_id).should.equal true
+				@redisMulti.expire.calledWith("password_token:#{@stubbedToken.toString("hex")}", 60 * 60).should.equal true
 				done()
 
 		it "should return if there was an error", (done)->