overleaf/services/web/test/acceptance/coffee/ApiClsiTests.coffee
Michael Mazour 0246631443 Add public API endpoints to reach CLSIs
- `/api/clsi/compile/:submission_id`
- `/api/clsi/compile/:submission_id/build/:build_id/output/:file`

Also per review:
- DRY up ClsiManager.sendRequestOnce and ClsiManager.sendExternalRequest
- Include submission_id in a log message
- Don't include timeout in limits when getting file
2018-06-19 12:04:02 +01:00

88 lines
2.5 KiB
CoffeeScript

expect = require("chai").expect
request = require './helpers/request'
Settings = require "settings-sharelatex"
auth = new Buffer('sharelatex:password').toString("base64")
authed_request = request.defaults
headers:
Authorization: "Basic #{auth}"
describe 'ApiClsiTests', ->
describe 'compile', ->
before (done) ->
@compileSpec =
compile:
options:
compiler: 'pdflatex'
timeout: 60
rootResourcePath: 'main.tex'
resources: [
path: 'main/tex'
content: "\\documentclass{article}\n\\begin{document}\nHello World\n\\end{document}"
,
path: 'image.png'
url: 'www.example.com/image.png'
modified: 123456789
]
done()
describe 'valid request', ->
it 'returns success and a list of output files', (done) ->
authed_request.post {
uri: '/api/clsi/compile/abcd'
json: @compileSpec
}, (error, response, body) ->
throw error if error?
expect(response.statusCode).to.equal 200
expect(response.body).to.deep.equal {
status: 'success'
outputFiles: [
path: 'project.pdf'
url: '/project/abcd/build/1234/output/project.pdf'
type: 'pdf'
build: 1234
,
path: 'project.log'
url: '/project/abcd/build/1234/output/project.log'
type: 'log'
build: 1234
]
}
done()
describe 'unauthorized', ->
it 'returns 401', (done) ->
request.post {
uri: '/api/clsi/compile/abcd'
json: @compileSpec
}, (error, response, body) ->
throw error if error?
expect(response.statusCode).to.equal 401
expect(response.body).to.equal 'Unauthorized'
done()
describe 'get output', ->
describe 'valid file', ->
it 'returns the file', (done) ->
authed_request.get '/api/clsi/compile/abcd/build/1234/output/project.pdf', (error, response, body) ->
throw error if error?
expect(response.statusCode).to.equal 200
expect(response.body).to.equal 'mock-pdf'
done()
describe 'invalid file', ->
it 'returns 404', (done) ->
authed_request.get '/api/clsi/compile/abcd/build/1234/output/project.aux', (error, response, body) ->
throw error if error?
expect(response.statusCode).to.equal 404
expect(response.body).to.not.equal 'mock-pdf'
done()
describe 'unauthorized', ->
it 'returns 401', (done) ->
request.get '/api/clsi/compile/abcd/build/1234/output/project.pdf', (error, response, body) ->
throw error if error?
expect(response.statusCode).to.equal 401
expect(response.body).to.not.equal 'mock-pdf'
done()