diff --git a/packages/@webex/plugin-meetings/src/meeting-info/meeting-info-v2.ts b/packages/@webex/plugin-meetings/src/meeting-info/meeting-info-v2.ts index a7e33ae44c5..7b6f81a4b95 100644 --- a/packages/@webex/plugin-meetings/src/meeting-info/meeting-info-v2.ts +++ b/packages/@webex/plugin-meetings/src/meeting-info/meeting-info-v2.ts @@ -649,12 +649,12 @@ export default class MeetingInfoV2 { installedOrgID = null, locusId = null, extraParams: object = {}, - options: {meetingId?: string; sendCAevents?: boolean} = {}, + options: {meetingId?: string; sendCAevents?: boolean; correlationId?: string} = {}, registrationId: string = null, fullSiteUrl: string = null, classificationId: string = null ) { - const {meetingId, sendCAevents} = options; + const {meetingId, sendCAevents, correlationId} = options; const destinationType = await MeetingInfoUtil.getDestinationType({ destination, @@ -706,6 +706,10 @@ export default class MeetingInfoV2 { body, }; + if (meetingId && sendCAevents && correlationId) { + requestOptions.headers = {correlationId}; + } + const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType); if (fullSiteUrl) { diff --git a/packages/@webex/plugin-meetings/src/meeting/index.ts b/packages/@webex/plugin-meetings/src/meeting/index.ts index 264cff3b367..45eea7ea6a8 100644 --- a/packages/@webex/plugin-meetings/src/meeting/index.ts +++ b/packages/@webex/plugin-meetings/src/meeting/index.ts @@ -2090,7 +2090,7 @@ export default class Meeting extends StatelessWebexPlugin { this.config.installedOrgID, this.locusId, extraParams, - {meetingId: this.id, sendCAevents}, + {meetingId: this.id, sendCAevents, correlationId: this.correlationId}, registrationId, null, classificationId diff --git a/packages/@webex/plugin-meetings/test/unit/spec/meeting-info/meetinginfov2.js b/packages/@webex/plugin-meetings/test/unit/spec/meeting-info/meetinginfov2.js index 94cb984f351..89e24ba1981 100644 --- a/packages/@webex/plugin-meetings/test/unit/spec/meeting-info/meetinginfov2.js +++ b/packages/@webex/plugin-meetings/test/unit/spec/meeting-info/meetinginfov2.js @@ -900,6 +900,63 @@ describe('plugin-meetings', () => { } ); + forEach( + [ + { + meetingId: 'meeting-id', + sendCAevents: true, + correlationId: 'correlation-id', + shouldSendCorrelationId: true, + condition: 'when CA events are enabled for the meeting', + }, + { + sendCAevents: true, + correlationId: 'correlation-id', + shouldSendCorrelationId: false, + condition: 'without a meetingId', + }, + { + meetingId: 'meeting-id', + sendCAevents: false, + correlationId: 'correlation-id', + shouldSendCorrelationId: false, + condition: 'when CA events are disabled', + }, + { + meetingId: 'meeting-id', + sendCAevents: true, + shouldSendCorrelationId: false, + condition: 'without a correlationId', + }, + ], + ({meetingId, sendCAevents, correlationId, shouldSendCorrelationId, condition}) => { + it(`should ${ + shouldSendCorrelationId ? '' : 'not ' + }send the correlationId header ${condition}`, async () => { + webex.request.resolves({statusCode: 200, body: {meetingKey: '1234323'}}); + + await meetingInfo.fetchMeetingInfo( + '1234323', + DESTINATION_TYPE.MEETING_ID, + null, + null, + null, + null, + undefined, + {meetingId, sendCAevents, correlationId} + ); + + const requestOptions = webex.request.firstCall.args[0]; + + if (shouldSendCorrelationId) { + assert.deepEqual(requestOptions.headers, {correlationId}); + } else { + assert.notProperty(requestOptions, 'headers'); + } + }); + } + ); + it('should send CA metric if meetingId is provided and send CA events is authorized', async () => { const requestResponse = { statusCode: 200, diff --git a/packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js b/packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js index 1d2a92936a0..e8d703bcf0b 100644 --- a/packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js +++ b/packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js @@ -9033,7 +9033,11 @@ describe('plugin-meetings', () => { beforeEach(() => { meeting.locusId = 'locus-id'; meeting.id = 'meeting-id'; - FAKE_OPTIONS = {meetingId: meeting.id, sendCAevents: true}; + FAKE_OPTIONS = { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + }; }); it('calls meetingInfoProvider with all the right parameters and parses the result', async () => { @@ -9118,7 +9122,11 @@ describe('plugin-meetings', () => { undefined, meeting.locusId, {}, - {meetingId: meeting.id, sendCAevents: false} + { + meetingId: meeting.id, + sendCAevents: false, + correlationId: meeting.correlationId, + } ); // parseMeeting info @@ -9204,7 +9212,11 @@ describe('plugin-meetings', () => { undefined, 'locus-id', {}, - {meetingId: meeting.id, sendCAevents: true} + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + } ); assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO); @@ -9240,7 +9252,11 @@ describe('plugin-meetings', () => { undefined, 'locus-id', {}, - {meetingId: meeting.id, sendCAevents: true} + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + } ); assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO); @@ -9269,7 +9285,11 @@ describe('plugin-meetings', () => { undefined, 'locus-id', {}, - {meetingId: meeting.id, sendCAevents: true} + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + } ); assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO); @@ -9304,7 +9324,11 @@ describe('plugin-meetings', () => { undefined, 'locus-id', {}, - {meetingId: meeting.id, sendCAevents: true} + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + } ); assert.deepEqual(meeting.meetingInfo, {}); @@ -9350,7 +9374,11 @@ describe('plugin-meetings', () => { undefined, 'locus-id', {}, - {meetingId: meeting.id, sendCAevents: true} + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + } ); assert.deepEqual(meeting.meetingInfo, {}); @@ -9384,7 +9412,11 @@ describe('plugin-meetings', () => { undefined, 'locus-id', {}, - {meetingId: meeting.id, sendCAevents: true} + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + } ); assert.deepEqual(meeting.meetingInfo, { @@ -9437,7 +9469,11 @@ describe('plugin-meetings', () => { undefined, 'locus-id', {}, - {meetingId: meeting.id, sendCAevents: true} + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + } ); assert.deepEqual(meeting.meetingInfo, FAKE_MEETING_INFO); @@ -9726,7 +9762,11 @@ describe('plugin-meetings', () => { 'fake-installed-org-id', 'locus-id', {extraParam1: 'value1', permissionToken: FAKE_PERMISSION_TOKEN}, - {meetingId: meeting.id, sendCAevents: true}, + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + }, null, null, null @@ -9774,7 +9814,11 @@ describe('plugin-meetings', () => { 'fake-installed-org-id', 'locus-id', {extraParam1: 'value1', permissionToken: FAKE_PERMISSION_TOKEN}, - {meetingId: meeting.id, sendCAevents: true}, + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + }, null, null, null @@ -9831,7 +9875,11 @@ describe('plugin-meetings', () => { extraParam1: 'value1', permissionToken: FAKE_PERMISSION_TOKEN, }, - {meetingId: meeting.id, sendCAevents: true}, + { + meetingId: meeting.id, + sendCAevents: true, + correlationId: meeting.correlationId, + }, null, null, null diff --git a/packages/@webex/plugin-meetings/test/unit/spec/meetings/index.js b/packages/@webex/plugin-meetings/test/unit/spec/meetings/index.js index 67d486e5c33..3674c3ac04a 100644 --- a/packages/@webex/plugin-meetings/test/unit/spec/meetings/index.js +++ b/packages/@webex/plugin-meetings/test/unit/spec/meetings/index.js @@ -2680,7 +2680,11 @@ describe('plugin-meetings', () => { undefined, undefined, extraParams, - {meetingId: meeting.id, sendCAevents} + { + meetingId: meeting.id, + sendCAevents, + correlationId: meeting.correlationId, + } ); }