From 5f5445f625f3c2825f4200e3c3f648139d9dc6d2 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 8 Mar 2016 11:54:45 +0000 Subject: [PATCH] Use TpdsUpdateSender to use CollaboratorsHandler --- .../Features/Collaborators/CollaboratorsHandler.coffee | 2 +- .../web/app/coffee/Features/Project/ProjectGetter.coffee | 2 +- .../Features/ThirdPartyDataStore/TpdsUpdateSender.coffee | 9 ++++++--- .../Collaborators/CollaboratorsHandlerTests.coffee | 4 ++-- .../ThirdPartyDataStore/TpdsUpdateSenderTests.coffee | 6 +++++- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsHandler.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsHandler.coffee index ef2f96ea3d..72372345f8 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsHandler.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsHandler.coffee @@ -54,7 +54,7 @@ module.exports = CollaboratorsHandler = return callback null, true, member.privilegeLevel return callback null, false, null - getProjectsUserIsMemberOf: (user_id, fields, callback = (error, readAndWriteProjects, readOnlyProjects) ->) -> + getProjectsUserIsCollaboratorOf: (user_id, fields, callback = (error, readAndWriteProjects, readOnlyProjects) ->) -> Project.find {collaberator_refs:user_id}, fields, (err, readAndWriteProjects)=> Project.find {readOnly_refs:user_id}, fields, (err, readOnlyProjects)=> callback(err, readAndWriteProjects, readOnlyProjects) diff --git a/services/web/app/coffee/Features/Project/ProjectGetter.coffee b/services/web/app/coffee/Features/Project/ProjectGetter.coffee index 7d9fd13bb6..28f687116f 100644 --- a/services/web/app/coffee/Features/Project/ProjectGetter.coffee +++ b/services/web/app/coffee/Features/Project/ProjectGetter.coffee @@ -33,6 +33,6 @@ module.exports = ProjectGetter = CollaboratorsHandler = require "../Collaborators/CollaboratorsHandler" Project.find {owner_ref: user_id}, fields, (error, projects) -> return callback(error) if error? - CollaboratorsHandler.getProjectsUserIsMemberOf user_id, fields, (error, readAndWriteProjects, readOnlyProjects) -> + CollaboratorsHandler.getProjectsUserIsCollaboratorOf user_id, fields, (error, readAndWriteProjects, readOnlyProjects) -> return callback(error) if error? callback null, projects, readAndWriteProjects, readOnlyProjects diff --git a/services/web/app/coffee/Features/ThirdPartyDataStore/TpdsUpdateSender.coffee b/services/web/app/coffee/Features/ThirdPartyDataStore/TpdsUpdateSender.coffee index f2d5bb94d1..88397c9ef6 100644 --- a/services/web/app/coffee/Features/ThirdPartyDataStore/TpdsUpdateSender.coffee +++ b/services/web/app/coffee/Features/ThirdPartyDataStore/TpdsUpdateSender.coffee @@ -5,6 +5,7 @@ Project = require('../../models/Project').Project keys = require('../../infrastructure/Keys') metrics = require("../../infrastructure/Metrics") request = require("request") +CollaboratorsHandler = require('../Collaborators/CollaboratorsHandler') buildPath = (user_id, project_name, filePath)-> projectPath = path.join(project_name, "/", filePath) @@ -116,9 +117,11 @@ module.exports = TpdsUpdateSender = TpdsUpdateSender._enqueue "poll-dropbox:#{user_id}", "standardHttpRequest", options, callback getProjectsUsersIds = (project_id, callback = (err, owner_id, allUserIds)->)-> - Project.findById project_id, "_id owner_ref readOnly_refs collaberator_refs", (err, project)-> - allUserIds = [].concat(project.collaberator_refs).concat(project.readOnly_refs).concat(project.owner_ref) - callback err, project.owner_ref, allUserIds + Project.findById project_id, "_id owner_ref", (err, project) -> + return callback(err) if err? + CollaboratorsHandler.getMemberIds project_id, (err, member_ids) -> + return callback(err) if err? + callback err, project.owner_ref, member_ids mergeProjectNameAndPath = (project_name, path)-> if(path.indexOf('/') == 0) diff --git a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsHandlerTests.coffee b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsHandlerTests.coffee index f0fd8db4a9..391b533cdf 100644 --- a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsHandlerTests.coffee @@ -112,13 +112,13 @@ describe "CollaboratorsHandler", -> .calledWith(null, false, null) .should.equal true - describe "getProjectsUserIsMemberOf", -> + describe "getProjectsUserIsCollaboratorOf", -> beforeEach -> @fields = "mock fields" @Project.find = sinon.stub() @Project.find.withArgs({collaberator_refs:@user_id}, @fields).yields(null, ["mock-read-write-project-1", "mock-read-write-project-2"]) @Project.find.withArgs({readOnly_refs:@user_id}, @fields).yields(null, ["mock-read-only-project-1", "mock-read-only-project-2"]) - @CollaboratorHandler.getProjectsUserIsMemberOf @user_id, @fields, @callback + @CollaboratorHandler.getProjectsUserIsCollaboratorOf @user_id, @fields, @callback it "should call the callback with the projects", -> @callback diff --git a/services/web/test/UnitTests/coffee/ThirdPartyDataStore/TpdsUpdateSenderTests.coffee b/services/web/test/UnitTests/coffee/ThirdPartyDataStore/TpdsUpdateSenderTests.coffee index cd84080d17..bc2290eb04 100644 --- a/services/web/test/UnitTests/coffee/ThirdPartyDataStore/TpdsUpdateSenderTests.coffee +++ b/services/web/test/UnitTests/coffee/ThirdPartyDataStore/TpdsUpdateSenderTests.coffee @@ -20,7 +20,10 @@ filestoreUrl = "filestore.sharelatex.com" describe 'TpdsUpdateSender', -> beforeEach -> @requestQueuer = (queue, meth, opts, callback)-> - project = {owner_ref:user_id,readOnly_refs:[read_only_ref_1], collaberator_refs:[collaberator_ref_1]} + project = {owner_ref:user_id} + member_ids = [collaberator_ref_1, read_only_ref_1, user_id] + @CollaboratorsHandler = + getMemberIds: sinon.stub().yields(null, member_ids) @Project = findById:sinon.stub().callsArgWith(2, null, project) @docstoreUrl = "docstore.sharelatex.env" @request = sinon.stub().returns(pipe:->) @@ -38,6 +41,7 @@ describe 'TpdsUpdateSender', -> "logger-sharelatex":{log:->} '../../models/Project': Project:@Project 'request':@request + '../Collaborators/CollaboratorsHandler': @CollaboratorsHandler describe "_enqueue", ->