mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-05 05:18:21 +00:00
get users features for compile options i.e. timeout and which compiler
This commit is contained in:
parent
d8cc3b7b61
commit
d97e42a959
2 changed files with 28 additions and 11 deletions
|
@ -6,6 +6,7 @@ logger = require "logger-sharelatex"
|
|||
request = require "request"
|
||||
Settings = require "settings-sharelatex"
|
||||
AuthenticationController = require "../Authentication/AuthenticationController"
|
||||
UserGetter = require "../User/UserGetter"
|
||||
|
||||
module.exports = CompileController =
|
||||
compile: (req, res, next = (error) ->) ->
|
||||
|
@ -15,13 +16,16 @@ module.exports = CompileController =
|
|||
logger.log "root doc overriden" if settingsOverride.rootDoc_id?
|
||||
AuthenticationController.getLoggedInUserId req, (error, user_id) ->
|
||||
return next(error) if error?
|
||||
CompileManager.compile project_id, user_id, { isAutoCompile, settingsOverride }, (error, status, outputFiles) ->
|
||||
return next(error) if error?
|
||||
res.contentType("application/json")
|
||||
res.send 200, JSON.stringify {
|
||||
status: status
|
||||
outputFiles: outputFiles
|
||||
}
|
||||
UserGetter.getUser user_id, {"features.compileGroup":1, "features.compileTimeout":1}, (err, user)->
|
||||
settingsOverride.timeout = user.features.compileTimeout
|
||||
settingsOverride.compiler = user.features.compileGroup
|
||||
CompileManager.compile project_id, user_id, { isAutoCompile, settingsOverride }, (error, status, outputFiles) ->
|
||||
return next(error) if error?
|
||||
res.contentType("application/json")
|
||||
res.send 200, JSON.stringify {
|
||||
status: status
|
||||
outputFiles: outputFiles
|
||||
}
|
||||
|
||||
downloadPdf: (req, res, next = (error) ->)->
|
||||
Metrics.inc "pdf-downloads"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
sinon = require('sinon')
|
||||
chai = require('chai')
|
||||
should = chai.should()
|
||||
assert = require("chai").assert
|
||||
expect = chai.expect
|
||||
modulePath = "../../../../app/js/Features/Compile/CompileController.js"
|
||||
SandboxedModule = require('sandboxed-module')
|
||||
|
@ -12,6 +13,8 @@ describe "CompileController", ->
|
|||
@CompileManager =
|
||||
compile: sinon.stub()
|
||||
@ClsiManager = {}
|
||||
@UserGetter =
|
||||
getUser:sinon.stub()
|
||||
@CompileController = SandboxedModule.require modulePath, requires:
|
||||
"settings-sharelatex": @settings =
|
||||
apis:
|
||||
|
@ -22,9 +25,14 @@ describe "CompileController", ->
|
|||
"logger-sharelatex": @logger = { log: sinon.stub(), error: sinon.stub() }
|
||||
"../../infrastructure/Metrics": @Metrics = { inc: sinon.stub() }
|
||||
"./CompileManager":@CompileManager
|
||||
"../User/UserGetter":@UserGetter
|
||||
"./ClsiManager": @ClsiManager
|
||||
"../Authentication/AuthenticationController": @AuthenticationController = {}
|
||||
@project_id = "project-id"
|
||||
@user =
|
||||
features:
|
||||
compileGroup: "premium"
|
||||
compileTimeout: 100
|
||||
@next = sinon.stub()
|
||||
@req = new MockRequest()
|
||||
@res = new MockResponse()
|
||||
|
@ -36,6 +44,7 @@ describe "CompileController", ->
|
|||
Project_id: @project_id
|
||||
@AuthenticationController.getLoggedInUserId = sinon.stub().callsArgWith(1, null, @user_id = "mock-user-id")
|
||||
@CompileManager.compile = sinon.stub().callsArgWith(3, null, @status = "success", @outputFiles = ["mock-output-files"])
|
||||
@UserGetter.getUser.callsArgWith(2, null, @user)
|
||||
@CompileController.compile @req, @res, @next
|
||||
|
||||
it "should look up the user id", ->
|
||||
|
@ -45,7 +54,7 @@ describe "CompileController", ->
|
|||
|
||||
it "should do the compile without the auto compile flag", ->
|
||||
@CompileManager.compile
|
||||
.calledWith(@project_id, @user_id, { isAutoCompile: false, settingsOverride:{} })
|
||||
.calledWith(@project_id, @user_id, { isAutoCompile: false, settingsOverride:{timeout:@user.features.compileTimeout, compiler:@user.features.compileGroup} })
|
||||
.should.equal true
|
||||
|
||||
it "should set the content-type of the response to application/json", ->
|
||||
|
@ -60,6 +69,11 @@ describe "CompileController", ->
|
|||
outputFiles: @outputFiles
|
||||
})
|
||||
|
||||
it "should get the compile timeout from the users features",->
|
||||
@UserGetter.getUser.args[0][0].should.equal @user_id
|
||||
assert.deepEqual @UserGetter.getUser.args[0][1], {"features.compileGroup":1, "features.compileTimeout":1}
|
||||
|
||||
|
||||
describe "when an auto compile", ->
|
||||
beforeEach ->
|
||||
@req.params =
|
||||
|
@ -68,12 +82,11 @@ describe "CompileController", ->
|
|||
auto_compile: "true"
|
||||
@AuthenticationController.getLoggedInUserId = sinon.stub().callsArgWith(1, null, @user_id = "mock-user-id")
|
||||
@CompileManager.compile = sinon.stub().callsArgWith(3, null, @status = "success", @outputFiles = ["mock-output-files"])
|
||||
@UserGetter.getUser.callsArgWith(2, null, @user)
|
||||
@CompileController.compile @req, @res, @next
|
||||
|
||||
it "should do the compile with the auto compile flag", ->
|
||||
@CompileManager.compile
|
||||
.calledWith(@project_id, @user_id, { isAutoCompile: true, settingsOverride:{} })
|
||||
.should.equal true
|
||||
@CompileManager.compile.calledWith(@project_id, @user_id, { isAutoCompile: true, settingsOverride:{timeout:@user.features.compileTimeout, compiler:@user.features.compileGroup} }).should.equal true
|
||||
|
||||
describe "downloadPdf", ->
|
||||
beforeEach ->
|
||||
|
|
Loading…
Reference in a new issue