Explorar o código

move convert tests from middleware to restricted static server

Brian Gough %!s(int64=11) %!d(string=hai) anos
pai
achega
140090da47

+ 82 - 0
services/clsi/test/unit/coffee/StaticServerForbidSymlinksTests.coffee

@@ -0,0 +1,82 @@
+should = require('chai').should()
+SandboxedModule = require('sandboxed-module')
+assert = require('assert')
+path = require('path')
+sinon = require('sinon')
+modulePath = path.join __dirname, "../../../app/js/StaticServerForbidSymlinks"
+expect = require("chai").expect
+
+describe "StaticServerForbidSymlinks", ->
+
+	beforeEach ->
+
+		@settings = 
+			path:
+				compilesDir: "/compiles/here"
+
+		@fs = {}
+		@ForbidSymlinks = SandboxedModule.require modulePath, requires:
+			"settings-sharelatex":@settings
+			"logger-sharelatex": 
+				log:->
+				warn:->
+			"fs":@fs
+
+		@dummyStatic = (rootDir, options) ->
+			return (req, res, next) ->
+				# console.log "dummyStatic serving file", rootDir, "called with", req.url
+				# serve it
+				next()
+
+		@StaticServerForbidSymlinks = @ForbidSymlinks @dummyStatic, @settings.path.compilesDir
+		@req = 
+			params:
+				project_id:"12345"
+
+		@res = {}
+		@req.url = "/12345/output.pdf"
+
+
+	describe "sending a normal file through", ->
+		beforeEach ->
+			@fs.realpath = sinon.stub().callsArgWith(1, null, "#{@settings.path.compilesDir}/#{@req.params.project_id}/output.pdf")
+
+		it "should call next", (done)->
+			@res.sendStatus = (resCode)->
+				resCode.should.equal 200
+				done()
+			@StaticServerForbidSymlinks @req, @res, done
+
+
+	describe "with a missing file", ->
+		beforeEach ->
+			@fs.realpath = sinon.stub().callsArgWith(1, {code: 'ENOENT'}, "#{@settings.path.compilesDir}/#{@req.params.project_id}/unknown.pdf")
+
+		it "should send a 404", (done)->
+			@res.sendStatus = (resCode)->
+				resCode.should.equal 404
+				done()
+			@StaticServerForbidSymlinks @req, @res
+
+
+	describe "with a symlink file", ->
+		beforeEach ->
+			@fs.realpath = sinon.stub().callsArgWith(1, null, "/etc/#{@req.params.project_id}/output.pdf")
+
+		it "should send a 404", (done)->
+			@res.sendStatus = (resCode)->
+				resCode.should.equal 404
+				done()
+			@StaticServerForbidSymlinks @req, @res
+
+	describe "with an error from fs.realpath", ->
+
+		beforeEach ->
+			@fs.realpath = sinon.stub().callsArgWith(1, "error")
+
+		it "should send a 500", (done)->
+			@res.sendStatus = (resCode)->
+				resCode.should.equal 500
+				done()
+			@StaticServerForbidSymlinks @req, @res
+

+ 0 - 60
services/clsi/test/unit/coffee/SymlinkCheckerMiddlewearTests.coffee

@@ -1,60 +0,0 @@
-should = require('chai').should()
-SandboxedModule = require('sandboxed-module')
-assert = require('assert')
-path = require('path')
-sinon = require('sinon')
-modulePath = path.join __dirname, "../../../app/js/SymlinkCheckerMiddlewear"
-expect = require("chai").expect
-
-describe "SymlinkCheckerMiddlewear", ->
-
-	beforeEach ->
-
-		@settings = 
-			path:
-				compilesDir: "/compiles/here"
-
-		@fs = {}
-		@SymlinkCheckerMiddlewear = SandboxedModule.require modulePath, requires:
-			"settings-sharelatex":@settings
-			"logger-sharelatex": 
-				log:->
-				warn:->
-			"fs":@fs
-		@req = 
-			params:
-				project_id:"12345"
-
-		@res = {}
-		@req.params[0]= "output.pdf"
-
-
-	describe "sending a normal file through", ->
-		beforeEach ->
-			@fs.realpath = sinon.stub().callsArgWith(1, null, "#{@settings.path.compilesDir}/#{@req.params.project_id}/output.pdf")
-
-		it "should call next", (done)->
-			@SymlinkCheckerMiddlewear @req, @res, done
-
-
-	describe "with a symlink file", ->
-		beforeEach ->
-			@fs.realpath = sinon.stub().callsArgWith(1, null, "/etc/#{@req.params.project_id}/output.pdf")
-
-		it "should send a 404", (done)->
-			@res.send = (resCode)->
-				resCode.should.equal 404
-				done()
-			@SymlinkCheckerMiddlewear @req, @res
-
-	describe "with an error from fs.realpath", ->
-
-		beforeEach ->
-			@fs.realpath = sinon.stub().callsArgWith(1, "error")
-
-		it "should send a 500", (done)->
-			@res.send = (resCode)->
-				resCode.should.equal 500
-				done()
-			@SymlinkCheckerMiddlewear @req, @res
-