Skip to content

Commit 0e1dfea

Browse files
author
vikasrohit
authored
Hotfix/skip user validation for project created event (#48)
* Removed customer user validation for generating the project created event * Passed additional first name and last name along with project events as well
1 parent 9a46b0f commit 0e1dfea

File tree

2 files changed

+42
-25
lines changed

2 files changed

+42
-25
lines changed

consumer/src/services/ConsumerService.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import IdentityService from './IdentityService';
99
import SalesforceService from './SalesforceService';
1010
import {UnprocessableError} from '../common/errors';
1111

12-
const memberRole = 'customer';
1312
const duplicateRecordRegex = /TC_Connect_Project_Id__c duplicates value on record/;
1413

1514
const projectCreatedSchema = Joi.object().keys({
@@ -40,18 +39,15 @@ class ConsumerService {
4039
@log(['project'])
4140
@validate(['logger','project'], projectCreatedSchema)
4241
processProjectCreated(logger, project) {
43-
const member = _.find(project.members, {role: memberRole, isPrimary: true});
44-
if (!member) {
45-
logger.info('Project Members:');
46-
logger.info(project.members);
47-
throw new UnprocessableError('Cannot find primary customer');
48-
}
42+
logger.info(`Project Created By: ${project.createdBy}`);
4943
return Promise.all([
50-
IdentityService.getUser(member.userId),
44+
IdentityService.getUser(project.createdBy),
5145
SalesforceService.authenticate(),
5246
]).then((responses) => {
5347
const user = responses[0];
5448
project.createdByEmail = user.email;
49+
project.createdByFirstName = user.firstName;
50+
project.createdByLastName = user.lastName;
5551
const { accessToken, instanceUrl } = responses[1];
5652
const leadData = {
5753
Type__c: 'connect.project.created',
@@ -80,7 +76,6 @@ class ConsumerService {
8076
@log(['projectEvent'])
8177
@validate(['logger', 'projectEvent'], projectUpdatedSchema)
8278
processProjectUpdated(logger, projectEvent) {
83-
logger.debug(projectEvent)
8479
delete projectEvent.original.template;
8580
delete projectEvent.updated.template;
8681
var project = projectEvent.original;
@@ -93,6 +88,8 @@ class ConsumerService {
9388
const user = responses[0];
9489
const { accessToken, instanceUrl } = responses[1];
9590
projectEvent.original.createdByEmail = user.email;
91+
projectEvent.original.createdByFirstName = user.firstName;
92+
projectEvent.original.createdByLastName = user.lastName;
9693

9794
const leadData = {
9895
Type__c: 'connect.project.updated',

consumer/test/ConsumerService.spec.js

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,12 @@ describe('ConsumerService', () => {
5151
isPrimary: true,
5252
},
5353
],
54-
createdByEmail : "[email protected]"
54+
createdBy: userId
5555
};
5656
const projectUpdatePaylod = {
5757
original: {
5858
id: 1,
59-
status: 'in_review',
60-
createdByEmail : "[email protected]"
59+
status: 'in_review'
6160
},
6261
updated: {
6362
id: 1,
@@ -84,7 +83,12 @@ describe('ConsumerService', () => {
8483
it('should process project successfully', async() => {
8584
const expectedLead = {
8685
Type__c: 'connect.project.created',
87-
Json__c: JSON.stringify(project)
86+
Json__c: JSON.stringify({
87+
...project,
88+
createdByEmail : user.email,
89+
createdByFirstName: user.firstName,
90+
createdByLastName: user.lastName
91+
})
8892
};
8993

9094
const createObjectStub = sandbox.stub(SalesforceService, 'createObject', async() => leadId);
@@ -95,19 +99,27 @@ describe('ConsumerService', () => {
9599
createObjectStub.should.have.been.calledWith('Connect_Event__c', expectedLead, sfAuth.accessToken, sfAuth.instanceUrl);
96100
});
97101

98-
it('should throw UnprocessableError primary customer is not found', async() => {
102+
it('should NOT throw any error even if primary customer is not found', async() => {
99103
const projectWihoutMembers = {
100-
id: 1,
101-
members: [],
104+
...project,
105+
members : []
102106
};
103-
try {
104-
ConsumerService.processProjectCreated(logger, projectWihoutMembers);
105-
sinon.fail('Should be rejected');
106-
} catch(err) {
107-
expect(err).to.exist
108-
.and.be.instanceof(UnprocessableError)
109-
.and.have.property('message').and.match(/Cannot find primary customer/);
110-
}
107+
const expectedLead = {
108+
Type__c: 'connect.project.created',
109+
Json__c: JSON.stringify({
110+
...projectWihoutMembers,
111+
createdByEmail : user.email,
112+
createdByFirstName: user.firstName,
113+
createdByLastName: user.lastName
114+
})
115+
};
116+
117+
const createObjectStub = sandbox.stub(SalesforceService, 'createObject', async() => leadId);
118+
119+
await ConsumerService.processProjectCreated(logger, projectWihoutMembers);
120+
getUserStub.should.have.been.calledWith(userId);
121+
authenticateStub.should.have.been.called;
122+
createObjectStub.should.have.been.calledWith('Connect_Event__c', expectedLead, sfAuth.accessToken, sfAuth.instanceUrl);
111123
});
112124

113125
it('should rethrow Error from createObject if error is not duplicate', async() => {
@@ -128,7 +140,15 @@ describe('ConsumerService', () => {
128140
const memberId = 'member-id';
129141
const expectedLead = {
130142
Type__c: 'connect.project.updated',
131-
Json__c: JSON.stringify(projectUpdatePaylod)
143+
Json__c: JSON.stringify({
144+
original: {
145+
...projectUpdatePaylod.original,
146+
createdByEmail : user.email,
147+
createdByFirstName: user.firstName,
148+
createdByLastName: user.lastName
149+
},
150+
updated: projectUpdatePaylod.updated
151+
})
132152
};
133153
const createObjectStub = sandbox.stub(SalesforceService,'createObject', async() => {});
134154

0 commit comments

Comments
 (0)