Merge pull request #1431 from sharelatex/mm-pubmodal-show-errors

Show export creation errors to the user

GitOrigin-RevId: fc116cfcfc2ca49d19188f01ef7b3460e4619503
This commit is contained in:
Chrystal Maria Griffiths
2019-02-04 16:24:30 +00:00
committed by sharelatex
parent cdf9bb432b
commit e73a7dbe9c
4 changed files with 38 additions and 8 deletions
@@ -24,7 +24,12 @@ module.exports =
export_params.show_source = req.body.showSource if req.body.showSource?
ExportsHandler.exportProject export_params, (err, export_data) ->
return next(err) if err?
if err?
if err.forwardResponse?
logger.log {responseError: err.forwardResponse}, "forwarding response"
return res.send err.forwardResponse
else
return next(err)
logger.log
user_id:user_id
project_id: project_id
@@ -95,9 +95,9 @@ module.exports = ExportsHandler = self =
else if 200 <= res.statusCode < 300
callback null, body.exportId
else
err = new Error("v1 export returned a failure status code: #{res.statusCode}")
logger.err err:err, export:export_data, "v1 export returned failure status code: #{res.statusCode}"
callback err
logger.err export:export_data, "v1 export returned failure; forwarding: #{body}"
# pass the v1 error along for the publish modal to handle
callback {forwardResponse: body}
_requestVersion: (project_id, callback=(err, export_v1_id) ->) ->
request.get {
@@ -82,6 +82,14 @@ describe 'ExportsController', ->
expect(body).to.deep.equal {export_v1_id: 897}
done()
describe "with an error return from v1 to forward to the publish modal",->
it 'should forward the response onward', (done) ->
@error_json = { status: 422, message: 'nope' }
@handler.exportProject = sinon.stub().yields({forwardResponse: @error_json})
@controller.exportProject @req, send:(body) =>
expect(body).to.deep.equal @error_json
done()
it 'should ask the handler to return the status of an export', (done) ->
@handler.fetchExport = sinon.stub().yields(
null,
@@ -81,6 +81,20 @@ describe 'ExportsHandler', ->
(@callback.args[0][0] instanceof Error)
.should.equal true
describe "when export request returns an error to forward to the user", ->
beforeEach (done) ->
@error_json = { status: 422, message: 'nope' }
@ExportsHandler._requestExport = sinon.stub().yields(null, forwardResponse: @error_json)
@ExportsHandler.exportProject @export_params, (error, export_data) =>
@callback(error, export_data)
done()
it "should return success and the response to forward", ->
(@callback.args[0][0] instanceof Error)
.should.equal false
@callback.calledWith(null, {forwardResponse: @error_json})
describe '_buildExport', ->
beforeEach (done) ->
@project =
@@ -366,16 +380,19 @@ describe 'ExportsHandler', ->
(@callback.args[0][0] instanceof Error)
.should.equal true
describe "when the request returns an error code", ->
describe "when the request returns an error response to forward", ->
beforeEach (done) ->
@stubRequest.post = sinon.stub().yields(null, {statusCode: 401}, { })
@error_code = 422
@error_json = { status: @error_code, message: 'nope' }
@stubRequest.post = sinon.stub().yields(null, {statusCode: @error_code}, @error_json)
@ExportsHandler._requestExport @export_data, (error, export_v1_id) =>
@callback(error, export_v1_id)
done()
it "should return the error", ->
it "should return success and the response to forward", ->
(@callback.args[0][0] instanceof Error)
.should.equal true
.should.equal false
@callback.calledWith(null, {forwardResponse: @error_json})
describe 'fetchExport', ->
beforeEach (done) ->