From ac3166d8a465ba645f02439fa9d1f3f9668b4563 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 11:21:17 +0530 Subject: [PATCH 01/11] =?UTF-8?q?Github=20issue#1604,=20Allow=20managers/a?= =?UTF-8?q?dmins=20to=20assign=20Manager=20role=20to=20people=20added=20to?= =?UTF-8?q?=20a=20project=20=E2=80=94=20Added=20back=20end=20support=20req?= =?UTF-8?q?uired.=20It=20prevents=20any=20non=20privileged/eligible=20user?= =?UTF-8?q?=20to=20be=20added=20as=20Manager.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants.js | 1 + src/routes/projectMembers/create.js | 16 +- src/routes/projectMembers/create.spec.js | 230 ++++++++++++++++++++++- src/util.js | 31 +++ 4 files changed, 275 insertions(+), 3 deletions(-) diff --git a/src/constants.js b/src/constants.js index e29d3fcb..50f11de6 100644 --- a/src/constants.js +++ b/src/constants.js @@ -35,6 +35,7 @@ export const USER_ROLE = { export const ADMIN_ROLES = [USER_ROLE.CONNECT_ADMIN, USER_ROLE.TOPCODER_ADMIN]; +export const MANAGER_ROLES = [...ADMIN_ROLES, USER_ROLE.MANAGER]; export const EVENT = { ROUTING_KEY: { diff --git a/src/routes/projectMembers/create.js b/src/routes/projectMembers/create.js index 64f2dfe7..2556af63 100644 --- a/src/routes/projectMembers/create.js +++ b/src/routes/projectMembers/create.js @@ -6,7 +6,7 @@ import Joi from 'joi'; import { middleware as tcMiddleware } from 'tc-core-library-js'; import models from '../../models'; import util from '../../util'; -import { PROJECT_MEMBER_ROLE, EVENT } from '../../constants'; +import { PROJECT_MEMBER_ROLE, MANAGER_ROLES, EVENT } from '../../constants'; /** * API to add a project member. @@ -53,10 +53,21 @@ module.exports = [ if (_.isUndefined(member.isPrimary)) { member.isPrimary = _.isUndefined(_.find(members, m => m.isPrimary && m.role === member.role)); } + let promise = Promise.resolve(); + if (member.role === PROJECT_MEMBER_ROLE.MANAGER) { + promise = util.getUser(member.userId); + } req.log.debug('creating member', member); let newMember = null; // register member - return models.ProjectMember.create(member) + return promise.then((memberUser) => { + if (member.role === PROJECT_MEMBER_ROLE.MANAGER + && (!memberUser || !memberUser.roles || !util.hasIntersection(MANAGER_ROLES, memberUser.roles))) { + const err = new Error('This user can\'t be added as a Manager to the project'); + err.status = 400; + return next(err); + } + return models.ProjectMember.create(member) .then((_newMember) => { newMember = _newMember.get({ plain: true }); // publish event @@ -72,5 +83,6 @@ module.exports = [ req.log.error('Unable to register ', err); next(err); }); + }); }, ]; diff --git a/src/routes/projectMembers/create.spec.js b/src/routes/projectMembers/create.spec.js index 0c714775..337978f5 100644 --- a/src/routes/projectMembers/create.spec.js +++ b/src/routes/projectMembers/create.spec.js @@ -8,13 +8,14 @@ import models from '../../models'; import util from '../../util'; import server from '../../app'; import testUtil from '../../tests/util'; +import { USER_ROLE } from '../../constants'; const should = chai.should(); describe('Project Members create', () => { let project1; let project2; - before((done) => { + beforeEach((done) => { testUtil.clearDb() .then(() => { models.Project.create({ @@ -246,5 +247,232 @@ describe('Project Members create', () => { } }); }); + + it('should return 400 for trying to add customers as manager', (done) => { + const mockHttpClient = _.merge(testUtil.mockHttpClient, { + get: () => Promise.resolve({ + status: 200, + data: { + id: 'requesterId', + version: 'v3', + result: { + success: true, + status: 200, + content: { + roles: ['Topcoder User'], + }, + }, + }, + }), + }); + sandbox.stub(util, 'getHttpClient', () => mockHttpClient); + request(server) + .post(`/v4/projects/${project1.id}/members/`) + .set({ + Authorization: `Bearer ${testUtil.jwts.manager}`, + }) + .send({ + param: { + userId: 3, + role: 'manager', + }, + }) + .expect('Content-Type', /json/) + .expect(400) + .end((err, res) => { + if (err) { + done(err); + } else { + const resJson = res.body.result.content; + should.exist(resJson); + const errorMessage = _.get(resJson, 'message', ''); + sinon.assert.match(errorMessage, /.*can't be added as a Manager/); + done(); + } + }); + }); + + it('should return 400 for trying to add copilot as manager', (done) => { + const mockHttpClient = _.merge(testUtil.mockHttpClient, { + get: () => Promise.resolve({ + status: 200, + data: { + id: 'requesterId', + version: 'v3', + result: { + success: true, + status: 200, + content: { + roles: [USER_ROLE.COPILOT], + }, + }, + }, + }), + }); + sandbox.stub(util, 'getHttpClient', () => mockHttpClient); + request(server) + .post(`/v4/projects/${project1.id}/members/`) + .set({ + Authorization: `Bearer ${testUtil.jwts.manager}`, + }) + .send({ + param: { + userId: 3, + role: 'manager', + }, + }) + .expect('Content-Type', /json/) + .expect(400) + .end((err, res) => { + if (err) { + done(err); + } else { + const resJson = res.body.result.content; + should.exist(resJson); + done(); + } + }); + }); + + it('should return 201 and register Connect Manager as manager', (done) => { + const mockHttpClient = _.merge(testUtil.mockHttpClient, { + get: () => Promise.resolve({ + status: 200, + data: { + id: 'requesterId', + version: 'v3', + result: { + success: true, + status: 200, + content: { + roles: [USER_ROLE.MANAGER], + }, + }, + }, + }), + }); + sandbox.stub(util, 'getHttpClient', () => mockHttpClient); + request(server) + .post(`/v4/projects/${project1.id}/members/`) + .set({ + Authorization: `Bearer ${testUtil.jwts.manager}`, + }) + .send({ + param: { + userId: 3, + role: 'manager', + }, + }) + .expect('Content-Type', /json/) + .expect(201) + .end((err, res) => { + if (err) { + done(err); + } else { + const resJson = res.body.result.content; + should.exist(resJson); + resJson.role.should.equal('manager'); + resJson.isPrimary.should.be.truthy; + resJson.projectId.should.equal(project1.id); + resJson.userId.should.equal(3); + server.services.pubsub.publish.calledWith('project.member.added').should.be.true; + done(); + } + }); + }); + + it('should return 201 and register Connect Admin as manager', (done) => { + const mockHttpClient = _.merge(testUtil.mockHttpClient, { + get: () => Promise.resolve({ + status: 200, + data: { + id: 'requesterId', + version: 'v3', + result: { + success: true, + status: 200, + content: { + roles: [USER_ROLE.CONNECT_ADMIN], + }, + }, + }, + }), + }); + sandbox.stub(util, 'getHttpClient', () => mockHttpClient); + request(server) + .post(`/v4/projects/${project1.id}/members/`) + .set({ + Authorization: `Bearer ${testUtil.jwts.manager}`, + }) + .send({ + param: { + userId: 3, + role: 'manager', + }, + }) + .expect('Content-Type', /json/) + .expect(201) + .end((err, res) => { + if (err) { + done(err); + } else { + const resJson = res.body.result.content; + should.exist(resJson); + resJson.role.should.equal('manager'); + resJson.isPrimary.should.be.truthy; + resJson.projectId.should.equal(project1.id); + resJson.userId.should.equal(3); + server.services.pubsub.publish.calledWith('project.member.added').should.be.true; + done(); + } + }); + }); + + it('should return 201 and register Topcoder Admin as manager', (done) => { + const mockHttpClient = _.merge(testUtil.mockHttpClient, { + get: () => Promise.resolve({ + status: 200, + data: { + id: 'requesterId', + version: 'v3', + result: { + success: true, + status: 200, + content: { + roles: [USER_ROLE.TOPCODER_ADMIN], + }, + }, + }, + }), + }); + sandbox.stub(util, 'getHttpClient', () => mockHttpClient); + request(server) + .post(`/v4/projects/${project1.id}/members/`) + .set({ + Authorization: `Bearer ${testUtil.jwts.manager}`, + }) + .send({ + param: { + userId: 3, + role: 'manager', + }, + }) + .expect('Content-Type', /json/) + .expect(201) + .end((err, res) => { + if (err) { + done(err); + } else { + const resJson = res.body.result.content; + should.exist(resJson); + resJson.role.should.equal('manager'); + resJson.isPrimary.should.be.truthy; + resJson.projectId.should.equal(project1.id); + resJson.userId.should.equal(3); + server.services.pubsub.publish.calledWith('project.member.added').should.be.true; + done(); + } + }); + }); }); }); diff --git a/src/util.js b/src/util.js index 27df14ea..ae2a01be 100644 --- a/src/util.js +++ b/src/util.js @@ -85,6 +85,16 @@ _.assignIn(util, { authRoles = authRoles.map(s => s.toLowerCase()); return _.intersection(authRoles, roles.map(r => r.toLowerCase())).length > 0; }, + /** + * Helper funtion to find intersection (case insensitive) between two arrays + * @param {Array} array1 first array of strings + * @param {Array} array2 second array of strings + * @return {boolean} true/false + */ + hasIntersection: (array1, array2) => { + const lowercased = array1.map(s => s.toLowerCase()); + return _.intersection(lowercased, array2.map(r => r.toLowerCase())).length > 0; + }, /** * Helper funtion to verify if user has admin roles * @param {object} req Request object that should contain authUser @@ -307,6 +317,27 @@ _.assignIn(util, { return Promise.reject(err); } }), + + /** + * Retrieve member details from userIds + */ + getUser: Promise.coroutine(function* (userId, logger, requestId) { // eslint-disable-line func-names + try { + const token = yield this.getSystemUserToken(logger); + const httpClient = this.getHttpClient({ id: requestId, log: logger }); + return httpClient.get(`${config.identityServiceEndpoint}/users/${userId}`, { + params: { + fields: 'id,roles', + }, + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}`, + }, + }).then(res => _.get(res, 'data.result.content', null)); + } catch (err) { + return Promise.reject(err); + } + }), }); export default util; From dcaee3f2d294b067921a1305abd48b2baf9f0b9d Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 11:21:57 +0530 Subject: [PATCH 02/11] Temp deployment of feature branch to dev --- circle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index f5993dff..028867ab 100644 --- a/circle.yml +++ b/circle.yml @@ -24,7 +24,7 @@ dependencies: deployment: development: - branch: dev + branch: [dev, 'feature/allow_managers_to_be_added'] commands: - ./ebs_deploy.sh tc-project-service DEV $CIRCLE_BUILD_NUM From eef87a1f0af6ef421555e7d1fc36ac77bf6acd02 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 12:31:31 +0530 Subject: [PATCH 03/11] =?UTF-8?q?Github=20issue#1604,=20Allow=20managers/a?= =?UTF-8?q?dmins=20to=20assign=20Manager=20role=20to=20people=20added=20to?= =?UTF-8?q?=20a=20project=20=E2=80=94=20Used=20roles=20endpoint=20to=20ide?= =?UTF-8?q?ntity=20roles=20of=20the=20given=20user=20because=20we=20don?= =?UTF-8?q?=E2=80=99t=20return=20the=20roles=20of=20a=20user=20with=20/use?= =?UTF-8?q?rs/userId=20endpoint=20even=20for=20the=20admins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/projectMembers/create.js | 6 ++--- src/routes/projectMembers/create.spec.js | 30 ++++++++++++------------ src/util.js | 8 +++---- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/routes/projectMembers/create.js b/src/routes/projectMembers/create.js index 2556af63..2db03037 100644 --- a/src/routes/projectMembers/create.js +++ b/src/routes/projectMembers/create.js @@ -55,14 +55,14 @@ module.exports = [ } let promise = Promise.resolve(); if (member.role === PROJECT_MEMBER_ROLE.MANAGER) { - promise = util.getUser(member.userId); + promise = util.getUserRoles(member.userId); } req.log.debug('creating member', member); let newMember = null; // register member - return promise.then((memberUser) => { + return promise.then((memberRoles) => { if (member.role === PROJECT_MEMBER_ROLE.MANAGER - && (!memberUser || !memberUser.roles || !util.hasIntersection(MANAGER_ROLES, memberUser.roles))) { + && (!memberRoles || !util.hasIntersection(MANAGER_ROLES, memberRoles))) { const err = new Error('This user can\'t be added as a Manager to the project'); err.status = 400; return next(err); diff --git a/src/routes/projectMembers/create.spec.js b/src/routes/projectMembers/create.spec.js index 337978f5..4d0c9f2f 100644 --- a/src/routes/projectMembers/create.spec.js +++ b/src/routes/projectMembers/create.spec.js @@ -258,9 +258,9 @@ describe('Project Members create', () => { result: { success: true, status: 200, - content: { - roles: ['Topcoder User'], - }, + content: [{ + roleName: 'Topcoder User', + }], }, }, }), @@ -302,9 +302,9 @@ describe('Project Members create', () => { result: { success: true, status: 200, - content: { - roles: [USER_ROLE.COPILOT], - }, + content: [{ + roleName: USER_ROLE.COPILOT, + }], }, }, }), @@ -344,9 +344,9 @@ describe('Project Members create', () => { result: { success: true, status: 200, - content: { - roles: [USER_ROLE.MANAGER], - }, + content: [{ + roleName: USER_ROLE.MANAGER, + }], }, }, }), @@ -391,9 +391,9 @@ describe('Project Members create', () => { result: { success: true, status: 200, - content: { - roles: [USER_ROLE.CONNECT_ADMIN], - }, + content: [{ + roleName: USER_ROLE.CONNECT_ADMIN, + }], }, }, }), @@ -438,9 +438,9 @@ describe('Project Members create', () => { result: { success: true, status: 200, - content: { - roles: [USER_ROLE.TOPCODER_ADMIN], - }, + content: [{ + roleName: USER_ROLE.TOPCODER_ADMIN, + }], }, }, }), diff --git a/src/util.js b/src/util.js index ae2a01be..cb7af1f3 100644 --- a/src/util.js +++ b/src/util.js @@ -321,19 +321,19 @@ _.assignIn(util, { /** * Retrieve member details from userIds */ - getUser: Promise.coroutine(function* (userId, logger, requestId) { // eslint-disable-line func-names + getUserRoles: Promise.coroutine(function* (userId, logger, requestId) { // eslint-disable-line func-names try { const token = yield this.getSystemUserToken(logger); const httpClient = this.getHttpClient({ id: requestId, log: logger }); - return httpClient.get(`${config.identityServiceEndpoint}/users/${userId}`, { + return httpClient.get(`${config.identityServiceEndpoint}/roles`, { params: { - fields: 'id,roles', + filter: `subjectID=${userId}`, }, headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}`, }, - }).then(res => _.get(res, 'data.result.content', null)); + }).then(res => _.get(res, 'data.result.content', []).map(r => r.roleName)); } catch (err) { return Promise.reject(err); } From 90feb2fe94cb2f833ebc6e7da7381fca34fa9186 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 14:53:01 +0530 Subject: [PATCH 04/11] debugging --- src/routes/projectMembers/create.js | 5 +++++ src/util.js | 1 + 2 files changed, 6 insertions(+) diff --git a/src/routes/projectMembers/create.js b/src/routes/projectMembers/create.js index 2db03037..98e10a8c 100644 --- a/src/routes/projectMembers/create.js +++ b/src/routes/projectMembers/create.js @@ -61,14 +61,19 @@ module.exports = [ let newMember = null; // register member return promise.then((memberRoles) => { + console.log('memberRoles', memberRoles); + console.log('member.role', member.role); if (member.role === PROJECT_MEMBER_ROLE.MANAGER && (!memberRoles || !util.hasIntersection(MANAGER_ROLES, memberRoles))) { + console.log('Should throw error'); const err = new Error('This user can\'t be added as a Manager to the project'); err.status = 400; return next(err); } + console.log('All good'); return models.ProjectMember.create(member) .then((_newMember) => { + console.log(_newMember, '_newMember'); newMember = _newMember.get({ plain: true }); // publish event req.app.services.pubsub.publish( diff --git a/src/util.js b/src/util.js index cb7af1f3..0adbcf72 100644 --- a/src/util.js +++ b/src/util.js @@ -324,6 +324,7 @@ _.assignIn(util, { getUserRoles: Promise.coroutine(function* (userId, logger, requestId) { // eslint-disable-line func-names try { const token = yield this.getSystemUserToken(logger); + console.log("token", token); const httpClient = this.getHttpClient({ id: requestId, log: logger }); return httpClient.get(`${config.identityServiceEndpoint}/roles`, { params: { From 6bc605c3ac8f957c299e9d2c7ece3fff25c7fedc Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 14:56:39 +0530 Subject: [PATCH 05/11] debugging --- src/util.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util.js b/src/util.js index 0adbcf72..2a6bd8f3 100644 --- a/src/util.js +++ b/src/util.js @@ -324,7 +324,7 @@ _.assignIn(util, { getUserRoles: Promise.coroutine(function* (userId, logger, requestId) { // eslint-disable-line func-names try { const token = yield this.getSystemUserToken(logger); - console.log("token", token); + console.log('token', token); const httpClient = this.getHttpClient({ id: requestId, log: logger }); return httpClient.get(`${config.identityServiceEndpoint}/roles`, { params: { From 5a8f1b9c8e9c493504dbfc6f3bcb9840a3b994fe Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 15:20:58 +0530 Subject: [PATCH 06/11] more debugging --- src/routes/projectMembers/create.js | 1 + src/util.js | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/routes/projectMembers/create.js b/src/routes/projectMembers/create.js index 98e10a8c..d0a433a3 100644 --- a/src/routes/projectMembers/create.js +++ b/src/routes/projectMembers/create.js @@ -56,6 +56,7 @@ module.exports = [ let promise = Promise.resolve(); if (member.role === PROJECT_MEMBER_ROLE.MANAGER) { promise = util.getUserRoles(member.userId); + console.log('after getting promise for getUserRoles'); } req.log.debug('creating member', member); let newMember = null; diff --git a/src/util.js b/src/util.js index 2a6bd8f3..199e031f 100644 --- a/src/util.js +++ b/src/util.js @@ -326,6 +326,7 @@ _.assignIn(util, { const token = yield this.getSystemUserToken(logger); console.log('token', token); const httpClient = this.getHttpClient({ id: requestId, log: logger }); + console.log(`${config.identityServiceEndpoint}/roles`); return httpClient.get(`${config.identityServiceEndpoint}/roles`, { params: { filter: `subjectID=${userId}`, @@ -334,7 +335,8 @@ _.assignIn(util, { 'Content-Type': 'application/json', Authorization: `Bearer ${token}`, }, - }).then(res => _.get(res, 'data.result.content', []).map(r => r.roleName)); + }).then(res => _.get(res, 'data.result.content', []).map(r => r.roleName)) + .catch( (e) => return Promise.reject(e)); } catch (err) { return Promise.reject(err); } From 648e94a6e246740b3bb472ac22f5410df3c69c7d Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 15:41:51 +0530 Subject: [PATCH 07/11] added request id --- src/routes/projectMembers/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/projectMembers/create.js b/src/routes/projectMembers/create.js index d0a433a3..f93b0547 100644 --- a/src/routes/projectMembers/create.js +++ b/src/routes/projectMembers/create.js @@ -55,7 +55,7 @@ module.exports = [ } let promise = Promise.resolve(); if (member.role === PROJECT_MEMBER_ROLE.MANAGER) { - promise = util.getUserRoles(member.userId); + promise = util.getUserRoles(member.userId, req.log, req.id); console.log('after getting promise for getUserRoles'); } req.log.debug('creating member', member); From 3e24201408df1f9789ba94c42fc2ed96e4f0abc1 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 15:46:34 +0530 Subject: [PATCH 08/11] Fixed lint error --- src/util.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/util.js b/src/util.js index 199e031f..6ee5264e 100644 --- a/src/util.js +++ b/src/util.js @@ -335,8 +335,7 @@ _.assignIn(util, { 'Content-Type': 'application/json', Authorization: `Bearer ${token}`, }, - }).then(res => _.get(res, 'data.result.content', []).map(r => r.roleName)) - .catch( (e) => return Promise.reject(e)); + }).then(res => _.get(res, 'data.result.content', []).map(r => r.roleName)); } catch (err) { return Promise.reject(err); } From 15d292a5ec020c91dd6b1b684a854213b12056c6 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 15:58:59 +0530 Subject: [PATCH 09/11] Fixing URL creation for identity api endpoint --- src/util.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util.js b/src/util.js index 6ee5264e..97b44fb0 100644 --- a/src/util.js +++ b/src/util.js @@ -326,8 +326,8 @@ _.assignIn(util, { const token = yield this.getSystemUserToken(logger); console.log('token', token); const httpClient = this.getHttpClient({ id: requestId, log: logger }); - console.log(`${config.identityServiceEndpoint}/roles`); - return httpClient.get(`${config.identityServiceEndpoint}/roles`, { + console.log(`${config.identityServiceEndpoint}roles`); + return httpClient.get(`${config.identityServiceEndpoint}roles`, { params: { filter: `subjectID=${userId}`, }, From f5545ab7ce52cb3594c98d84f60b4fe3884848ef Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Wed, 17 Jan 2018 16:23:05 +0530 Subject: [PATCH 10/11] removed debug statements --- src/routes/projectMembers/create.js | 6 ------ src/util.js | 2 -- 2 files changed, 8 deletions(-) diff --git a/src/routes/projectMembers/create.js b/src/routes/projectMembers/create.js index f93b0547..ac809e0a 100644 --- a/src/routes/projectMembers/create.js +++ b/src/routes/projectMembers/create.js @@ -56,25 +56,19 @@ module.exports = [ let promise = Promise.resolve(); if (member.role === PROJECT_MEMBER_ROLE.MANAGER) { promise = util.getUserRoles(member.userId, req.log, req.id); - console.log('after getting promise for getUserRoles'); } req.log.debug('creating member', member); let newMember = null; // register member return promise.then((memberRoles) => { - console.log('memberRoles', memberRoles); - console.log('member.role', member.role); if (member.role === PROJECT_MEMBER_ROLE.MANAGER && (!memberRoles || !util.hasIntersection(MANAGER_ROLES, memberRoles))) { - console.log('Should throw error'); const err = new Error('This user can\'t be added as a Manager to the project'); err.status = 400; return next(err); } - console.log('All good'); return models.ProjectMember.create(member) .then((_newMember) => { - console.log(_newMember, '_newMember'); newMember = _newMember.get({ plain: true }); // publish event req.app.services.pubsub.publish( diff --git a/src/util.js b/src/util.js index 97b44fb0..6371f726 100644 --- a/src/util.js +++ b/src/util.js @@ -324,9 +324,7 @@ _.assignIn(util, { getUserRoles: Promise.coroutine(function* (userId, logger, requestId) { // eslint-disable-line func-names try { const token = yield this.getSystemUserToken(logger); - console.log('token', token); const httpClient = this.getHttpClient({ id: requestId, log: logger }); - console.log(`${config.identityServiceEndpoint}roles`); return httpClient.get(`${config.identityServiceEndpoint}roles`, { params: { filter: `subjectID=${userId}`, From e75f5d09d3f42dbfe9f841572fb5f4dc25dfab02 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Thu, 25 Jan 2018 12:29:37 +0530 Subject: [PATCH 11/11] reverted temp deployment of feature branch to dev --- circle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index 028867ab..f5993dff 100644 --- a/circle.yml +++ b/circle.yml @@ -24,7 +24,7 @@ dependencies: deployment: development: - branch: [dev, 'feature/allow_managers_to_be_added'] + branch: dev commands: - ./ebs_deploy.sh tc-project-service DEV $CIRCLE_BUILD_NUM