diff --git a/services/web/app/src/Features/ThirdPartyDataStore/TpdsController.js b/services/web/app/src/Features/ThirdPartyDataStore/TpdsController.js index f386672521..6111189549 100644 --- a/services/web/app/src/Features/ThirdPartyDataStore/TpdsController.js +++ b/services/web/app/src/Features/ThirdPartyDataStore/TpdsController.js @@ -38,7 +38,10 @@ async function createProject(req, res) { async function mergeUpdate(req, res) { metrics.inc('tpds.merge-update') const { filePath, userId, projectId, projectName } = parseParams(req) - const source = req.headers['x-sl-update-source'] || 'unknown' + const source = + req.headers['x-sl-update-source'] || + req.headers['x-update-source'] || + 'unknown' let metadata try { @@ -92,7 +95,10 @@ async function mergeUpdate(req, res) { async function deleteUpdate(req, res) { metrics.inc('tpds.delete-update') const { filePath, userId, projectId, projectName } = parseParams(req) - const source = req.headers['x-sl-update-source'] || 'unknown' + const source = + req.headers['x-sl-update-source'] || + req.headers['x-update-source'] || + 'unknown' await TpdsUpdateHandler.promises.deleteUpdate( userId, @@ -141,7 +147,10 @@ async function updateFolder(req, res) { async function updateProjectContents(req, res, next) { const projectId = req.params.project_id const path = `/${req.params[0]}` // UpdateMerger expects leading slash - const source = req.headers['x-sl-update-source'] || 'unknown' + const source = + req.headers['x-sl-update-source'] || + req.headers['x-update-source'] || + 'unknown' try { await UpdateMerger.promises.mergeUpdate(null, projectId, path, req, source) @@ -158,7 +167,10 @@ async function updateProjectContents(req, res, next) { async function deleteProjectContents(req, res, next) { const projectId = req.params.project_id const path = `/${req.params[0]}` // UpdateMerger expects leading slash - const source = req.headers['x-sl-update-source'] || 'unknown' + const source = + req.headers['x-sl-update-source'] || + req.headers['x-update-source'] || + 'unknown' await UpdateMerger.promises.deleteUpdate(null, projectId, path, source) res.sendStatus(200) diff --git a/services/web/test/unit/src/ThirdPartyDataStore/TpdsControllerTests.js b/services/web/test/unit/src/ThirdPartyDataStore/TpdsControllerTests.js index 076cde6f37..8d970abce7 100644 --- a/services/web/test/unit/src/ThirdPartyDataStore/TpdsControllerTests.js +++ b/services/web/test/unit/src/ThirdPartyDataStore/TpdsControllerTests.js @@ -103,6 +103,19 @@ describe('TpdsController', function () { beforeEach(function () { this.projectName = 'projectName' this.path = '/here.txt' + this.req = { + params: { + 0: `${this.projectName}${this.path}`, + user_id: this.user_id, + project_id: '', + }, + headers: { + 'x-update-source': (this.source = 'dropbox'), + }, + } + }) + + it('should process the update with the update receiver by name and old header', function (done) { this.req = { params: { 0: `${this.projectName}${this.path}`, @@ -113,6 +126,30 @@ describe('TpdsController', function () { 'x-sl-update-source': (this.source = 'dropbox'), }, } + const res = { + json: payload => { + expect(payload).to.deep.equal({ + status: 'applied', + projectId: this.metadata.projectId.toString(), + entityId: this.metadata.entityId.toString(), + folderId: this.metadata.folderId.toString(), + entityType: this.metadata.entityType, + rev: this.metadata.rev.toString(), + }) + this.TpdsUpdateHandler.promises.newUpdate + .calledWith( + this.user_id, + '', // projectId + this.projectName, + this.path, + this.req, + this.source + ) + .should.equal(true) + done() + }, + } + this.TpdsController.mergeUpdate(this.req, res) }) it('should process the update with the update receiver by name', function (done) { @@ -162,7 +199,7 @@ describe('TpdsController', function () { destroy() {}, }, headers: { - 'x-sl-update-source': (this.source = 'dropbox'), + 'x-update-source': (this.source = 'dropbox'), }, } const res = { @@ -232,7 +269,7 @@ describe('TpdsController', function () { destroy() {}, }, headers: { - 'x-sl-update-source': (this.source = 'dropbox'), + 'x-update-source': (this.source = 'dropbox'), }, } const res = { @@ -260,7 +297,7 @@ describe('TpdsController', function () { destroy() {}, }, headers: { - 'x-sl-update-source': (this.source = 'dropbox'), + 'x-update-source': (this.source = 'dropbox'), }, } const res = { @@ -379,7 +416,7 @@ describe('TpdsController', function () { destroy: sinon.stub(), }, headers: { - 'x-sl-update-source': (this.source = 'github'), + 'x-update-source': (this.source = 'github'), }, } this.res = { @@ -419,7 +456,7 @@ describe('TpdsController', function () { destroy: sinon.stub(), }, headers: { - 'x-sl-update-source': (this.source = 'github'), + 'x-update-source': (this.source = 'github'), }, } this.res = {