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:
committed by
sharelatex
parent
cdf9bb432b
commit
e73a7dbe9c
@@ -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) ->
|
||||
|
||||
Reference in New Issue
Block a user