From 3af1ef48c293777ca375e3e1034f2874f33b0968 Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Tue, 22 Jan 2019 11:23:06 +0000 Subject: [PATCH] Merge pull request #1423 from sharelatex/as-fix-non-existent-v1-token Fix import page showing for non-existent v1 token GitOrigin-RevId: cdce007b64d153505a15ec7b16fb4b9311ebf11b --- .../TokenAccess/TokenAccessController.coffee | 1 + .../coffee/helpers/MockV1Api.coffee | 5 +++- .../TokenAccessControllerTests.coffee | 26 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/TokenAccess/TokenAccessController.coffee b/services/web/app/coffee/Features/TokenAccess/TokenAccessController.coffee index 3ac0af09d9..bd90c65fb6 100644 --- a/services/web/app/coffee/Features/TokenAccess/TokenAccessController.coffee +++ b/services/web/app/coffee/Features/TokenAccess/TokenAccessController.coffee @@ -140,6 +140,7 @@ module.exports = TokenAccessController = else TokenAccessHandler.getV1DocInfo token, userId, (err, doc_info) -> return next err if err? + return next(new Errors.NotFoundError()) if !doc_info.exists return next(new Errors.NotFoundError()) if doc_info.exported if Features.hasFeature('force-import-to-v2') return res.render('project/v2-import', { diff --git a/services/web/test/acceptance/coffee/helpers/MockV1Api.coffee b/services/web/test/acceptance/coffee/helpers/MockV1Api.coffee index 79cb7ba4c9..a294a509fc 100644 --- a/services/web/test/acceptance/coffee/helpers/MockV1Api.coffee +++ b/services/web/test/acceptance/coffee/helpers/MockV1Api.coffee @@ -153,7 +153,10 @@ module.exports = MockV1Api = res.json { allow: true } app.get '/api/v1/sharelatex/users/:user_id/docs/:token/info', (req, res, next) => - res.json { exported: false } + res.json { + exists: true, + exported: false + } app.get '/api/v1/sharelatex/docs/:token/exported_to_v2', (req, res, next) => return res.json @doc_exported[req.params.token] if @doc_exported[req.params.token]? diff --git a/services/web/test/unit/coffee/TokenAccess/TokenAccessControllerTests.coffee b/services/web/test/unit/coffee/TokenAccess/TokenAccessControllerTests.coffee index 1bd762caf0..0ac9368063 100644 --- a/services/web/test/unit/coffee/TokenAccess/TokenAccessControllerTests.coffee +++ b/services/web/test/unit/coffee/TokenAccess/TokenAccessControllerTests.coffee @@ -431,6 +431,19 @@ describe "TokenAccessController", -> expect(@next.callCount).to.equal 1 done() + describe 'when project does not exist on v1', -> + beforeEach -> + @TokenAccessHandler.getV1DocInfo = sinon.stub().yields(null, { + exists: false + exported: false + }) + @TokenAccessController.readAndWriteToken @req, @res, @next + + it 'should call next with a not-found error', (done) -> + expect(@next.callCount).to.equal 1 + expect(@next.calledWith(new Errors.NotFoundError())).to.equal true + done() + describe 'when token access is off, but user has higher access anyway', -> beforeEach -> @req = new MockRequest() @@ -1152,6 +1165,19 @@ describe "TokenAccessController", -> )).to.equal true done() + describe 'when project does not exist on v1', -> + beforeEach -> + @TokenAccessHandler.getV1DocInfo = sinon.stub().yields(null, { + exists: false, + exported: false + }) + @TokenAccessController.readOnlyToken @req, @res, @next + + it 'should call next with not found error', (done) -> + expect(@next.callCount).to.equal 1 + expect(@next.calledWith(new Errors.NotFoundError())).to.equal true + done() + describe 'anonymous user', -> beforeEach -> @AuthenticationController.getLoggedInUserId = sinon.stub().returns(null)