Просмотр исходного кода

Merge branch 'master' into multicurrency

Henry Oswald 12 лет назад
Родитель
Сommit
dbecadcaea

+ 5 - 1
services/web/app/coffee/Features/Blog/BlogController.coffee

@@ -22,6 +22,7 @@ module.exports = BlogController =
 
 		logger.log url:url, "proxying request to blog api"
 		request.get blogUrl, (err, r, data)->
+			return next(err) if err?
 			if r?.statusCode == 404
 				return ErrorController.notFound(req, res, next)
 			data = data.trim()
@@ -37,4 +38,7 @@ module.exports = BlogController =
 		BlogController.getPage req, res
 
 	_directProxy: (originUrl, res)->
-		request.get(originUrl).pipe res
+		upstream = request.get(originUrl)
+		upstream.on "error", (error) ->
+			logger.error err: error, "blog proxy error"
+		upstream.pipe res

+ 1 - 0
services/web/app/coffee/Features/Editor/EditorController.coffee

@@ -63,6 +63,7 @@ module.exports = EditorController =
 	buildJoinProjectView: (project_id, user_id, callback = (error, project, privilegeLevel) ->) ->
 		ProjectGetter.getProjectWithoutDocLines project_id, (error, project) ->
 			return callback(error) if error?
+			return callback(new Error("not found")) if !project?
 			ProjectGetter.populateProjectWithUsers project, (error, project) ->
 				return callback(error) if error?
 				UserGetter.getUser user_id, { isAdmin: true }, (error, user) ->

+ 11 - 8
services/web/app/coffee/Features/HealthCheck/HealthCheckController.coffee

@@ -3,23 +3,26 @@ Base = require("mocha/lib/reporters/base")
 redis = require("redis-sharelatex")
 settings = require("settings-sharelatex")
 redisCheck = redis.activeHealthCheckRedis(settings.redis.web)
+logger = require "logger-sharelatex"
+domain = require "domain"
 
 module.exports = HealthCheckController =
 	check: (req, res, next = (error) ->) ->
-		mocha = new Mocha(reporter: Reporter(res), timeout: 10000)
-		mocha.addFile("test/smoke/js/SmokeTests.js")
-		mocha.run () ->
-			path = require.resolve(__dirname + "/../../../../test/smoke/js/SmokeTests.js")
-			delete require.cache[path]
+		d = domain.create()
+		d.on "error", (error) ->
+ 			logger.err err: error, "error in mocha"
+		d.run () ->
+			mocha = new Mocha(reporter: Reporter(res), timeout: 10000)
+			mocha.addFile("test/smoke/js/SmokeTests.js")
+			mocha.run () ->
+				path = require.resolve(__dirname + "/../../../../test/smoke/js/SmokeTests.js")
+				delete require.cache[path]
 
 	checkRedis: (req, res, next)->
 		if redisCheck.isAlive()
 			res.send 200
 		else
 			res.send 500
-
-
-
 		
 Reporter = (res) ->
 	(runner) ->

+ 4 - 1
services/web/app/coffee/Features/StaticPages/UniversityController.coffee

@@ -31,4 +31,7 @@ module.exports = UniversityController =
 		UniversityController.getPage req, res
 
 	_directProxy: (originUrl, res)->
-		request.get(originUrl).pipe res
+		upstream = request.get(originUrl)
+		upstream.on "error", (error) ->
+			logger.error err: error, "university proxy error"
+		upstream.pipe res

+ 4 - 1
services/web/app/coffee/Features/Templates/TemplatesController.coffee

@@ -27,7 +27,10 @@ module.exports =
 			zipUrl = "#{settings.apis.web.url}#{zipUrl}"
 		else
 			zipUrl = "#{settings.apis.templates.url}#{zipUrl}"
-		request(zipUrl).pipe(writeStream)
+		zipReq = request(zipUrl)
+		zipReq.on "error", (error) ->
+			logger.error err: error, "error getting zip from template API"
+		zipReq.pipe(writeStream)
 		writeStream.on 'close', ->
 			ProjectUploadManager.createProjectFromZipArchive req.session.user._id, req.session.templateData.templateName, dumpPath, (err, project)->
 				if err?

+ 2 - 1
services/web/app/coffee/Features/Uploads/FileTypeManager.coffee

@@ -24,7 +24,8 @@ module.exports = FileTypeManager =
 
 	isDirectory: (path, callback = (error, result) ->) ->
 		fs.stat path, (error, stats) ->
-			callback(error, stats.isDirectory())
+			return callback(error) if error?
+			callback(null, stats?.isDirectory())
 
 	isBinary: (name, fsPath, callback = (error, result) ->) ->
 		parts = name.split(".")

+ 4 - 1
services/web/app/coffee/infrastructure/OldAssetProxy.coffee

@@ -8,6 +8,9 @@ module.exports = (req, res, next)->
 	redirectUrl = settings.proxyUrls[requestedUrl]
 	if redirectUrl?
 		logger.log redirectUrl:redirectUrl, reqUrl:req.url, "proxying url"
-		request(redirectUrl).pipe(res)
+		upstream = request(redirectUrl)
+		upstream.on "error", (error) ->
+			logger.error err: error, "error in OldAssetProxy"
+		upstream.pipe(res)
 	else
 		next()

+ 4 - 1
services/web/test/UnitTests/coffee/Templates/TemplatesControllerTests.coffee

@@ -12,7 +12,10 @@ describe 'TemplatesController', ->
 
 	beforeEach ->
 		@request = sinon.stub()
-		@request.returns pipe:->
+		@request.returns {
+			pipe:->
+			on:->
+		}
 		@fs = {
 			unlink : sinon.stub()
 			createWriteStream : sinon.stub().returns(on:(_, cb)->cb())

+ 1 - 0
services/web/test/smoke/coffee/SmokeTests.coffee

@@ -8,6 +8,7 @@ Settings = require "settings-sharelatex"
 port = Settings.internal?.web?.port or Settings.port or 3000
 cookeFilePath = "/tmp/smoke-test-cookie-#{port}.txt"
 buildUrl = (path) -> " -b #{cookeFilePath} --resolve 'smoke#{Settings.cookieDomain}:#{port}:127.0.0.1' http://smoke#{Settings.cookieDomain}:#{port}/#{path}?setLng=en"
+logger = require "logger-sharelatex"
 
 describe "Opening", ->