@webex/internal-plugin-conversation 3.6.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.js +9 -1
- package/dist/config.js.map +1 -1
- package/dist/conversation.js +125 -112
- package/dist/conversation.js.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/share-activity.js +1 -1
- package/package.json +14 -14
- package/src/config.js +10 -0
- package/src/conversation.js +14 -1
- package/src/index.js +1 -5
- package/test/integration/spec/get.js +9 -0
- package/test/unit/spec/conversation.js +95 -40
package/dist/index.js
CHANGED
|
@@ -39,8 +39,6 @@ var _webexCore = require("@webex/webex-core");
|
|
|
39
39
|
var _lodash = require("lodash");
|
|
40
40
|
var _conversation = _interopRequireDefault(require("./conversation"));
|
|
41
41
|
var _config = _interopRequireDefault(require("./config"));
|
|
42
|
-
var _encryptionTransforms = require("./encryption-transforms");
|
|
43
|
-
var _decryptionTransforms = require("./decryption-transforms");
|
|
44
42
|
var _shareActivity = _interopRequireDefault(require("./share-activity"));
|
|
45
43
|
var _convoError = require("./convo-error");
|
|
46
44
|
/*!
|
|
@@ -285,7 +283,7 @@ var _convoError = require("./convo-error");
|
|
|
285
283
|
return person;
|
|
286
284
|
});
|
|
287
285
|
}
|
|
288
|
-
}]
|
|
286
|
+
}]
|
|
289
287
|
},
|
|
290
288
|
config: _config.default
|
|
291
289
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","_common","_helperHtml","_webexCore","_lodash","_conversation","_interopRequireDefault","_config","_encryptionTransforms","_decryptionTransforms","_shareActivity","_convoError","registerInternalPlugin","Conversation","payloadTransformer","predicates","name","test","ctx","optionsOrResponse","_promise","default","resolve","has","extract","body","direction","event","activity","response","multistatus","map","item","data","options","get","items","transforms","fn","array","all","transform","then","decrypt","_deleteProperty","object","objectType","concat","capitalize","content","_ctx$webex$config$con","webex","config","conversation","inboundProcessFunc","allowedInboundTags","allowedInboundStyles","htmlFilter","c","_ctx$webex$config$con2","outboundProcessFunc","allowedOutboundTags","allowedOutboundStyles","htmlFilterEscape","activities","participants","actor","target","threadActivity","childActivities","person","email","entryEmail","emailAddress","id","entryUUID","patterns","toLowerCase","roomProperties","isModerator","Boolean","uuid","reject","Error","internal","user","asUUID","decryptionTransforms","encryptionTransforms"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-user';\n\nimport {patterns} from '@webex/common';\nimport {filter as htmlFilter, filterEscape as htmlFilterEscape} from '@webex/helper-html';\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {capitalize, get, has} from 'lodash';\n\nimport Conversation from './conversation';\nimport config from './config';\nimport {transforms as encryptionTransforms} from './encryption-transforms';\nimport {transforms as decryptionTransforms} from './decryption-transforms';\n\nregisterInternalPlugin('conversation', Conversation, {\n payloadTransformer: {\n predicates: [\n {\n name: 'transformObject',\n test(ctx, optionsOrResponse) {\n return Promise.resolve(has(optionsOrResponse, 'body.objectType'));\n },\n extract(optionsOrResponse) {\n return Promise.resolve(optionsOrResponse.body);\n },\n },\n {\n name: 'transformObject',\n direction: 'inbound',\n test(ctx, event) {\n return Promise.resolve(has(event, 'activity'));\n },\n extract(event) {\n return Promise.resolve(event.activity);\n },\n },\n {\n name: 'transformObjectArray',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(has(response, 'body.multistatus'));\n },\n extract(response) {\n return Promise.resolve(\n response.body.multistatus.map((item) => item && item.data && item.data.activity)\n );\n },\n },\n {\n name: 'normalizeConversationListAndBindDecrypters',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].objectType')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n {\n name: 'transformObjectArray',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].objectType')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n {\n name: 'transformThreadArray',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].childType') || !has(options, 'body.items[0].actorId')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n ],\n transforms: [\n {\n name: 'normalizeConversationListAndBindDecrypters',\n fn(ctx, array) {\n return Promise.all(\n array.map((item) =>\n ctx.transform('normalizeObject', item).then(() => {\n item.decrypt = function decrypt() {\n Reflect.deleteProperty(item, 'decrypt');\n\n return ctx.transform('decryptObject', item);\n };\n\n return item;\n })\n )\n );\n },\n },\n {\n name: 'transformObjectArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformObject', item)));\n },\n },\n {\n name: 'transformThreadArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformThread', item)));\n },\n },\n {\n name: 'transformObject',\n direction: 'outbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('normalizeObject', object)\n .then(() => ctx.transform('encryptObject', object))\n .then(() => ctx.transform('encryptKmsMessage', object));\n },\n },\n {\n name: 'transformObject',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('decryptObject', object)\n .then(() => ctx.transform('normalizeObject', object));\n },\n },\n {\n name: 'normalizeObject',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return Promise.all([\n ctx.transform(`normalize${capitalize(object.objectType)}`, object),\n ctx.transform('normalizePropContent', object),\n ]);\n },\n },\n {\n name: 'transformThread',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('decryptThread', object)\n .then(() => ctx.transform('normalizeThread', object));\n },\n },\n {\n name: 'normalizePropContent',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object.content) {\n return Promise.resolve();\n }\n const {inboundProcessFunc, allowedInboundTags, allowedInboundStyles} =\n ctx.webex.config.conversation;\n\n return htmlFilter(\n inboundProcessFunc,\n allowedInboundTags || {},\n allowedInboundStyles,\n object.content\n ).then((c) => {\n object.content = c;\n });\n },\n },\n {\n name: 'normalizePropContent',\n direction: 'outbound',\n fn(ctx, object) {\n if (!object.content) {\n return Promise.resolve();\n }\n\n const {outboundProcessFunc, allowedOutboundTags, allowedOutboundStyles} =\n ctx.webex.config.conversation;\n\n return htmlFilterEscape(\n outboundProcessFunc,\n allowedOutboundTags || {},\n allowedOutboundStyles,\n object.content\n ).then((c) => {\n object.content = c;\n });\n },\n },\n {\n name: 'normalizeConversation',\n fn(ctx, conversation) {\n conversation.activities = conversation.activities || {};\n conversation.activities.items = conversation.activities.items || [];\n conversation.participants = conversation.participants || {};\n conversation.participants.items = conversation.participants.items || [];\n\n return Promise.all([\n Promise.all(\n conversation.activities.items.map((item) => ctx.transform('normalizeObject', item))\n ),\n Promise.all(\n conversation.participants.items.map((item) => ctx.transform('normalizeObject', item))\n ),\n ]);\n },\n },\n {\n name: 'normalizeActivity',\n fn(ctx, activity) {\n return Promise.all([\n ctx.transform('normalizeObject', activity.actor),\n ctx.transform('normalizeObject', activity.object),\n ctx.transform('normalizeObject', activity.target),\n ]);\n },\n },\n {\n name: 'normalizeThread',\n fn(ctx, threadActivity) {\n // childActivities are of type Activity\n return Promise.all(\n threadActivity.childActivities.map((item) => ctx.transform('normalizeObject', item))\n );\n },\n },\n {\n name: 'normalizePerson',\n // eslint-disable-next-line complexity\n fn(ctx, person) {\n const email = person.entryEmail || person.emailAddress || person.id;\n const id = person.entryUUID || person.id;\n\n if (patterns.email.test(email)) {\n person.entryEmail = person.emailAddress = email.toLowerCase();\n } else {\n Reflect.deleteProperty(person, 'entryEmail');\n Reflect.deleteProperty(person, 'emailAddress');\n }\n\n if (person.roomProperties) {\n person.roomProperties.isModerator = Boolean(person.roomProperties.isModerator);\n }\n\n if (patterns.uuid.test(id)) {\n person.entryUUID = person.id = id.toLowerCase();\n\n return Promise.resolve(person);\n }\n\n if (!email) {\n return Promise.reject(\n new Error('cannot determine id without an `emailAddress` or `entryUUID` property')\n );\n }\n\n return ctx.webex.internal.user.asUUID(email).then((uuid) => {\n person.entryUUID = person.id = uuid;\n\n return person;\n });\n },\n },\n ]\n .concat(decryptionTransforms)\n .concat(encryptionTransforms),\n },\n config,\n});\n\nexport {default} from './conversation';\nexport {default as ShareActivity} from './share-activity';\nexport {ConversationError, InvalidUserCreation} from './convo-error';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["require","_common","_helperHtml","_webexCore","_lodash","_conversation","_interopRequireDefault","_config","_shareActivity","_convoError","registerInternalPlugin","Conversation","payloadTransformer","predicates","name","test","ctx","optionsOrResponse","_promise","default","resolve","has","extract","body","direction","event","activity","response","multistatus","map","item","data","options","get","items","transforms","fn","array","all","transform","then","decrypt","_deleteProperty","object","objectType","concat","capitalize","content","_ctx$webex$config$con","webex","config","conversation","inboundProcessFunc","allowedInboundTags","allowedInboundStyles","htmlFilter","c","_ctx$webex$config$con2","outboundProcessFunc","allowedOutboundTags","allowedOutboundStyles","htmlFilterEscape","activities","participants","actor","target","threadActivity","childActivities","person","email","entryEmail","emailAddress","id","entryUUID","patterns","toLowerCase","roomProperties","isModerator","Boolean","uuid","reject","Error","internal","user","asUUID"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-user';\n\nimport {patterns} from '@webex/common';\nimport {filter as htmlFilter, filterEscape as htmlFilterEscape} from '@webex/helper-html';\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {capitalize, get, has} from 'lodash';\n\nimport Conversation from './conversation';\nimport config from './config';\n\nregisterInternalPlugin('conversation', Conversation, {\n payloadTransformer: {\n predicates: [\n {\n name: 'transformObject',\n test(ctx, optionsOrResponse) {\n return Promise.resolve(has(optionsOrResponse, 'body.objectType'));\n },\n extract(optionsOrResponse) {\n return Promise.resolve(optionsOrResponse.body);\n },\n },\n {\n name: 'transformObject',\n direction: 'inbound',\n test(ctx, event) {\n return Promise.resolve(has(event, 'activity'));\n },\n extract(event) {\n return Promise.resolve(event.activity);\n },\n },\n {\n name: 'transformObjectArray',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(has(response, 'body.multistatus'));\n },\n extract(response) {\n return Promise.resolve(\n response.body.multistatus.map((item) => item && item.data && item.data.activity)\n );\n },\n },\n {\n name: 'normalizeConversationListAndBindDecrypters',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].objectType')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n {\n name: 'transformObjectArray',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].objectType')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n {\n name: 'transformThreadArray',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].childType') || !has(options, 'body.items[0].actorId')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n ],\n transforms: [\n {\n name: 'normalizeConversationListAndBindDecrypters',\n fn(ctx, array) {\n return Promise.all(\n array.map((item) =>\n ctx.transform('normalizeObject', item).then(() => {\n item.decrypt = function decrypt() {\n Reflect.deleteProperty(item, 'decrypt');\n\n return ctx.transform('decryptObject', item);\n };\n\n return item;\n })\n )\n );\n },\n },\n {\n name: 'transformObjectArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformObject', item)));\n },\n },\n {\n name: 'transformThreadArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformThread', item)));\n },\n },\n {\n name: 'transformObject',\n direction: 'outbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('normalizeObject', object)\n .then(() => ctx.transform('encryptObject', object))\n .then(() => ctx.transform('encryptKmsMessage', object));\n },\n },\n {\n name: 'transformObject',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('decryptObject', object)\n .then(() => ctx.transform('normalizeObject', object));\n },\n },\n {\n name: 'normalizeObject',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return Promise.all([\n ctx.transform(`normalize${capitalize(object.objectType)}`, object),\n ctx.transform('normalizePropContent', object),\n ]);\n },\n },\n {\n name: 'transformThread',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('decryptThread', object)\n .then(() => ctx.transform('normalizeThread', object));\n },\n },\n {\n name: 'normalizePropContent',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object.content) {\n return Promise.resolve();\n }\n const {inboundProcessFunc, allowedInboundTags, allowedInboundStyles} =\n ctx.webex.config.conversation;\n\n return htmlFilter(\n inboundProcessFunc,\n allowedInboundTags || {},\n allowedInboundStyles,\n object.content\n ).then((c) => {\n object.content = c;\n });\n },\n },\n {\n name: 'normalizePropContent',\n direction: 'outbound',\n fn(ctx, object) {\n if (!object.content) {\n return Promise.resolve();\n }\n\n const {outboundProcessFunc, allowedOutboundTags, allowedOutboundStyles} =\n ctx.webex.config.conversation;\n\n return htmlFilterEscape(\n outboundProcessFunc,\n allowedOutboundTags || {},\n allowedOutboundStyles,\n object.content\n ).then((c) => {\n object.content = c;\n });\n },\n },\n {\n name: 'normalizeConversation',\n fn(ctx, conversation) {\n conversation.activities = conversation.activities || {};\n conversation.activities.items = conversation.activities.items || [];\n conversation.participants = conversation.participants || {};\n conversation.participants.items = conversation.participants.items || [];\n\n return Promise.all([\n Promise.all(\n conversation.activities.items.map((item) => ctx.transform('normalizeObject', item))\n ),\n Promise.all(\n conversation.participants.items.map((item) => ctx.transform('normalizeObject', item))\n ),\n ]);\n },\n },\n {\n name: 'normalizeActivity',\n fn(ctx, activity) {\n return Promise.all([\n ctx.transform('normalizeObject', activity.actor),\n ctx.transform('normalizeObject', activity.object),\n ctx.transform('normalizeObject', activity.target),\n ]);\n },\n },\n {\n name: 'normalizeThread',\n fn(ctx, threadActivity) {\n // childActivities are of type Activity\n return Promise.all(\n threadActivity.childActivities.map((item) => ctx.transform('normalizeObject', item))\n );\n },\n },\n {\n name: 'normalizePerson',\n // eslint-disable-next-line complexity\n fn(ctx, person) {\n const email = person.entryEmail || person.emailAddress || person.id;\n const id = person.entryUUID || person.id;\n\n if (patterns.email.test(email)) {\n person.entryEmail = person.emailAddress = email.toLowerCase();\n } else {\n Reflect.deleteProperty(person, 'entryEmail');\n Reflect.deleteProperty(person, 'emailAddress');\n }\n\n if (person.roomProperties) {\n person.roomProperties.isModerator = Boolean(person.roomProperties.isModerator);\n }\n\n if (patterns.uuid.test(id)) {\n person.entryUUID = person.id = id.toLowerCase();\n\n return Promise.resolve(person);\n }\n\n if (!email) {\n return Promise.reject(\n new Error('cannot determine id without an `emailAddress` or `entryUUID` property')\n );\n }\n\n return ctx.webex.internal.user.asUUID(email).then((uuid) => {\n person.entryUUID = person.id = uuid;\n\n return person;\n });\n },\n },\n ],\n },\n config,\n});\n\nexport {default} from './conversation';\nexport {default as ShareActivity} from './share-activity';\nexport {ConversationError, InvalidUserCreation} from './convo-error';\n"],"mappings":"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"}
|
package/dist/share-activity.js
CHANGED
package/package.json
CHANGED
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@webex/common": "3.
|
|
23
|
-
"@webex/helper-html": "3.
|
|
24
|
-
"@webex/helper-image": "3.
|
|
25
|
-
"@webex/internal-plugin-encryption": "3.
|
|
26
|
-
"@webex/internal-plugin-user": "3.
|
|
27
|
-
"@webex/webex-core": "3.
|
|
22
|
+
"@webex/common": "3.7.0",
|
|
23
|
+
"@webex/helper-html": "3.7.0",
|
|
24
|
+
"@webex/helper-image": "3.7.0",
|
|
25
|
+
"@webex/internal-plugin-encryption": "3.7.0",
|
|
26
|
+
"@webex/internal-plugin-user": "3.7.0",
|
|
27
|
+
"@webex/webex-core": "3.7.0",
|
|
28
28
|
"crypto-js": "^4.1.1",
|
|
29
29
|
"lodash": "^4.17.21",
|
|
30
30
|
"node-scr": "^0.3.0",
|
|
@@ -36,13 +36,13 @@
|
|
|
36
36
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
37
37
|
"@webex/jest-config-legacy": "0.0.0",
|
|
38
38
|
"@webex/legacy-tools": "0.0.0",
|
|
39
|
-
"@webex/test-helper-chai": "3.
|
|
40
|
-
"@webex/test-helper-file": "3.
|
|
41
|
-
"@webex/test-helper-make-local-url": "3.
|
|
42
|
-
"@webex/test-helper-mocha": "3.
|
|
43
|
-
"@webex/test-helper-mock-webex": "3.
|
|
44
|
-
"@webex/test-helper-retry": "3.
|
|
45
|
-
"@webex/test-helper-test-users": "3.
|
|
39
|
+
"@webex/test-helper-chai": "3.7.0",
|
|
40
|
+
"@webex/test-helper-file": "3.7.0",
|
|
41
|
+
"@webex/test-helper-make-local-url": "3.7.0",
|
|
42
|
+
"@webex/test-helper-mocha": "3.7.0",
|
|
43
|
+
"@webex/test-helper-mock-webex": "3.7.0",
|
|
44
|
+
"@webex/test-helper-retry": "3.7.0",
|
|
45
|
+
"@webex/test-helper-test-users": "3.7.0",
|
|
46
46
|
"eslint": "^8.24.0",
|
|
47
47
|
"prettier": "^2.7.1",
|
|
48
48
|
"sinon": "^9.2.4"
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"test:style": "eslint ./src/**/*.*",
|
|
57
57
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
58
58
|
},
|
|
59
|
-
"version": "3.
|
|
59
|
+
"version": "3.7.0"
|
|
60
60
|
}
|
package/src/config.js
CHANGED
|
@@ -33,5 +33,15 @@ export default {
|
|
|
33
33
|
*/
|
|
34
34
|
keepEncryptedProperties: false,
|
|
35
35
|
decryptionFailureMessage: 'This message cannot be decrypted',
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* config value to perform decryption on inbound conversations and activities
|
|
39
|
+
*/
|
|
40
|
+
includeDecryptionTransforms: true,
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* config value to perform decryption on outbound conversations and activities
|
|
44
|
+
*/
|
|
45
|
+
includeEncryptionTransforms: true,
|
|
36
46
|
},
|
|
37
47
|
};
|
package/src/conversation.js
CHANGED
|
@@ -25,6 +25,8 @@ import {
|
|
|
25
25
|
} from 'lodash';
|
|
26
26
|
import {readExifData} from '@webex/helper-image';
|
|
27
27
|
import uuid from 'uuid';
|
|
28
|
+
import {transforms as encryptionTransforms} from './encryption-transforms';
|
|
29
|
+
import {transforms as decryptionTransforms} from './decryption-transforms';
|
|
28
30
|
|
|
29
31
|
import {InvalidUserCreation} from './convo-error';
|
|
30
32
|
import ShareActivity from './share-activity';
|
|
@@ -66,8 +68,9 @@ const getConvoLimit = (options = {}) => {
|
|
|
66
68
|
let limit;
|
|
67
69
|
|
|
68
70
|
if (options.conversationsLimit) {
|
|
71
|
+
const value = Math.max(options.conversationsLimit, 0);
|
|
69
72
|
limit = {
|
|
70
|
-
value
|
|
73
|
+
value,
|
|
71
74
|
name: 'conversationsLimit',
|
|
72
75
|
};
|
|
73
76
|
}
|
|
@@ -77,6 +80,16 @@ const getConvoLimit = (options = {}) => {
|
|
|
77
80
|
|
|
78
81
|
const Conversation = WebexPlugin.extend({
|
|
79
82
|
namespace: 'Conversation',
|
|
83
|
+
initialize() {
|
|
84
|
+
this.listenToOnce(this.webex, 'ready', () => {
|
|
85
|
+
if (Array.isArray(this.webex.config.payloadTransformer?.transforms)) {
|
|
86
|
+
this.webex.config.payloadTransformer.transforms =
|
|
87
|
+
this.webex.config.payloadTransformer.transforms
|
|
88
|
+
.concat(this.config.includeDecryptionTransforms ? decryptionTransforms : [])
|
|
89
|
+
.concat(this.config.includeEncryptionTransforms ? encryptionTransforms : []);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
},
|
|
80
93
|
|
|
81
94
|
/**
|
|
82
95
|
* @param {String} cluster the cluster containing the id
|
package/src/index.js
CHANGED
|
@@ -12,8 +12,6 @@ import {capitalize, get, has} from 'lodash';
|
|
|
12
12
|
|
|
13
13
|
import Conversation from './conversation';
|
|
14
14
|
import config from './config';
|
|
15
|
-
import {transforms as encryptionTransforms} from './encryption-transforms';
|
|
16
|
-
import {transforms as decryptionTransforms} from './decryption-transforms';
|
|
17
15
|
|
|
18
16
|
registerInternalPlugin('conversation', Conversation, {
|
|
19
17
|
payloadTransformer: {
|
|
@@ -315,9 +313,7 @@ registerInternalPlugin('conversation', Conversation, {
|
|
|
315
313
|
});
|
|
316
314
|
},
|
|
317
315
|
},
|
|
318
|
-
]
|
|
319
|
-
.concat(decryptionTransforms)
|
|
320
|
-
.concat(encryptionTransforms),
|
|
316
|
+
],
|
|
321
317
|
},
|
|
322
318
|
config,
|
|
323
319
|
});
|
|
@@ -363,6 +363,15 @@ describe('plugin-conversation', function () {
|
|
|
363
363
|
assert.include(map(conversations, 'url'), conversation2.url);
|
|
364
364
|
}));
|
|
365
365
|
|
|
366
|
+
it('retrieves no conversations', () =>
|
|
367
|
+
webex.internal.conversation
|
|
368
|
+
.list({
|
|
369
|
+
conversationsLimit: -100,
|
|
370
|
+
})
|
|
371
|
+
.then((conversations) => {
|
|
372
|
+
assert.lengthOf(conversations, 0);
|
|
373
|
+
}));
|
|
374
|
+
|
|
366
375
|
it('retrieves a paginated set of conversations', () =>
|
|
367
376
|
webex.internal.conversation
|
|
368
377
|
.paginate({
|
|
@@ -15,6 +15,8 @@ import {
|
|
|
15
15
|
activityManager,
|
|
16
16
|
} from '../../../src/activity-thread-ordering';
|
|
17
17
|
import {ACTIVITY_TYPES, getActivityType, OLDER, NEWER} from '../../../src/activities';
|
|
18
|
+
import {transforms as encryptionTransforms} from '../../../src/encryption-transforms';
|
|
19
|
+
import {transforms as decryptionTransforms} from '../../../src/decryption-transforms';
|
|
18
20
|
|
|
19
21
|
describe('plugin-conversation', () => {
|
|
20
22
|
describe('Conversation', () => {
|
|
@@ -38,14 +40,13 @@ describe('plugin-conversation', () => {
|
|
|
38
40
|
it('should add recipients to the payload if provided', () => {
|
|
39
41
|
const {conversation} = webex.internal;
|
|
40
42
|
const recipientId = 'example-recipient-id';
|
|
41
|
-
const expected = {items: [{id: recipientId, objectType: 'person'}]}
|
|
42
|
-
conversation.sendReaction = sinon.stub().returns(Promise.resolve())
|
|
43
|
-
conversation.createReactionHmac = sinon.stub().returns(Promise.resolve('hmac'))
|
|
44
|
-
|
|
45
|
-
return conversation.addReaction({}, 'example-display-name', {}, recipientId)
|
|
46
|
-
.
|
|
47
|
-
|
|
48
|
-
});
|
|
43
|
+
const expected = {items: [{id: recipientId, objectType: 'person'}]};
|
|
44
|
+
conversation.sendReaction = sinon.stub().returns(Promise.resolve());
|
|
45
|
+
conversation.createReactionHmac = sinon.stub().returns(Promise.resolve('hmac'));
|
|
46
|
+
|
|
47
|
+
return conversation.addReaction({}, 'example-display-name', {}, recipientId).then(() => {
|
|
48
|
+
assert.deepEqual(conversation.sendReaction.args[0][1].recipients, expected);
|
|
49
|
+
});
|
|
49
50
|
});
|
|
50
51
|
});
|
|
51
52
|
|
|
@@ -53,24 +54,22 @@ describe('plugin-conversation', () => {
|
|
|
53
54
|
it('should add recipients to the payload if provided', () => {
|
|
54
55
|
const {conversation} = webex.internal;
|
|
55
56
|
const recipientId = 'example-recipient-id';
|
|
56
|
-
const expected = {items: [{id: recipientId, objectType: 'person'}]}
|
|
57
|
-
conversation.sendReaction = sinon.stub().returns(Promise.resolve())
|
|
58
|
-
|
|
59
|
-
return conversation.deleteReaction({}, 'example-reaction-id', recipientId)
|
|
60
|
-
.
|
|
61
|
-
|
|
62
|
-
});
|
|
57
|
+
const expected = {items: [{id: recipientId, objectType: 'person'}]};
|
|
58
|
+
conversation.sendReaction = sinon.stub().returns(Promise.resolve());
|
|
59
|
+
|
|
60
|
+
return conversation.deleteReaction({}, 'example-reaction-id', recipientId).then(() => {
|
|
61
|
+
assert.deepEqual(conversation.sendReaction.args[0][1].recipients, expected);
|
|
62
|
+
});
|
|
63
63
|
});
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
describe('prepare()', () => {
|
|
67
67
|
it('should ammend activity recipients to the returned object', () => {
|
|
68
68
|
const {conversation} = webex.internal;
|
|
69
|
-
const activity = {
|
|
69
|
+
const activity = {recipients: 'example-recipients'};
|
|
70
70
|
|
|
71
|
-
return conversation.prepare(activity)
|
|
72
|
-
.
|
|
73
|
-
assert.deepEqual(results.recipients, activity.recipients);
|
|
71
|
+
return conversation.prepare(activity).then((results) => {
|
|
72
|
+
assert.deepEqual(results.recipients, activity.recipients);
|
|
74
73
|
});
|
|
75
74
|
});
|
|
76
75
|
});
|
|
@@ -79,14 +78,13 @@ describe('plugin-conversation', () => {
|
|
|
79
78
|
it('should add recipients to the payload if provided', () => {
|
|
80
79
|
const {conversation} = webex.internal;
|
|
81
80
|
const recipientId = 'example-recipient-id';
|
|
82
|
-
const expected = {items: [{id: recipientId, objectType: 'person'}]}
|
|
83
|
-
conversation.sendReaction = sinon.stub().returns(Promise.resolve())
|
|
84
|
-
conversation.createReactionHmac = sinon.stub().returns(Promise.resolve('hmac'))
|
|
85
|
-
|
|
86
|
-
return conversation.addReaction({}, 'example-display-name', {}, recipientId)
|
|
87
|
-
.
|
|
88
|
-
|
|
89
|
-
});
|
|
81
|
+
const expected = {items: [{id: recipientId, objectType: 'person'}]};
|
|
82
|
+
conversation.sendReaction = sinon.stub().returns(Promise.resolve());
|
|
83
|
+
conversation.createReactionHmac = sinon.stub().returns(Promise.resolve('hmac'));
|
|
84
|
+
|
|
85
|
+
return conversation.addReaction({}, 'example-display-name', {}, recipientId).then(() => {
|
|
86
|
+
assert.deepEqual(conversation.sendReaction.args[0][1].recipients, expected);
|
|
87
|
+
});
|
|
90
88
|
});
|
|
91
89
|
});
|
|
92
90
|
|
|
@@ -94,24 +92,22 @@ describe('plugin-conversation', () => {
|
|
|
94
92
|
it('should add recipients to the payload if provided', () => {
|
|
95
93
|
const {conversation} = webex.internal;
|
|
96
94
|
const recipientId = 'example-recipient-id';
|
|
97
|
-
const expected = {items: [{id: recipientId, objectType: 'person'}]}
|
|
98
|
-
conversation.sendReaction = sinon.stub().returns(Promise.resolve())
|
|
99
|
-
|
|
100
|
-
return conversation.deleteReaction({}, 'example-reaction-id', recipientId)
|
|
101
|
-
.
|
|
102
|
-
|
|
103
|
-
});
|
|
95
|
+
const expected = {items: [{id: recipientId, objectType: 'person'}]};
|
|
96
|
+
conversation.sendReaction = sinon.stub().returns(Promise.resolve());
|
|
97
|
+
|
|
98
|
+
return conversation.deleteReaction({}, 'example-reaction-id', recipientId).then(() => {
|
|
99
|
+
assert.deepEqual(conversation.sendReaction.args[0][1].recipients, expected);
|
|
100
|
+
});
|
|
104
101
|
});
|
|
105
102
|
});
|
|
106
103
|
|
|
107
104
|
describe('prepare()', () => {
|
|
108
105
|
it('should ammend activity recipients to the returned object', () => {
|
|
109
106
|
const {conversation} = webex.internal;
|
|
110
|
-
const activity = {
|
|
107
|
+
const activity = {recipients: 'example-recipients'};
|
|
111
108
|
|
|
112
|
-
return conversation.prepare(activity)
|
|
113
|
-
.
|
|
114
|
-
assert.deepEqual(results.recipients, activity.recipients);
|
|
109
|
+
return conversation.prepare(activity).then((results) => {
|
|
110
|
+
assert.deepEqual(results.recipients, activity.recipients);
|
|
115
111
|
});
|
|
116
112
|
});
|
|
117
113
|
});
|
|
@@ -220,13 +216,17 @@ describe('plugin-conversation', () => {
|
|
|
220
216
|
it('should convert a "us" cluster to WEBEX_CONVERSATION_DEFAULT_CLUSTER cluster', async () => {
|
|
221
217
|
await webex.internal.conversation.getUrlFromClusterId({cluster: 'us'});
|
|
222
218
|
|
|
223
|
-
sinon.assert.calledWith(webex.internal.services.getServiceUrlFromClusterId, {
|
|
219
|
+
sinon.assert.calledWith(webex.internal.services.getServiceUrlFromClusterId, {
|
|
220
|
+
cluster: 'us',
|
|
221
|
+
});
|
|
224
222
|
});
|
|
225
223
|
|
|
226
224
|
it('should add the cluster service when missing', async () => {
|
|
227
225
|
await webex.internal.conversation.getUrlFromClusterId({cluster: 'urn:TEAM:us-west-2_r'});
|
|
228
226
|
|
|
229
|
-
sinon.assert.calledWith(webex.internal.services.getServiceUrlFromClusterId, {
|
|
227
|
+
sinon.assert.calledWith(webex.internal.services.getServiceUrlFromClusterId, {
|
|
228
|
+
cluster: 'urn:TEAM:us-west-2_r',
|
|
229
|
+
});
|
|
230
230
|
});
|
|
231
231
|
});
|
|
232
232
|
|
|
@@ -902,4 +902,59 @@ describe('plugin-conversation', () => {
|
|
|
902
902
|
});
|
|
903
903
|
});
|
|
904
904
|
});
|
|
905
|
+
describe('#payloadTransform encrypt/decrypt', () => {
|
|
906
|
+
let webex;
|
|
907
|
+
let conversation;
|
|
908
|
+
|
|
909
|
+
const setup = (options = {}) => {
|
|
910
|
+
const {includeDecryptionTransforms, includeEncryptionTransforms} = options;
|
|
911
|
+
webex = new MockWebex({
|
|
912
|
+
children: {
|
|
913
|
+
conversation: Conversation,
|
|
914
|
+
},
|
|
915
|
+
});
|
|
916
|
+
webex.config.payloadTransformer = {transforms: []};
|
|
917
|
+
conversation = webex.internal.conversation;
|
|
918
|
+
conversation.config.includeDecryptionTransforms = !!includeDecryptionTransforms;
|
|
919
|
+
conversation.config.includeEncryptionTransforms = !!includeEncryptionTransforms;
|
|
920
|
+
};
|
|
921
|
+
|
|
922
|
+
const checkTransforms = (receivedTransforms, expectedTransforms) =>
|
|
923
|
+
receivedTransforms
|
|
924
|
+
.map((transform) => transform.name)
|
|
925
|
+
.every((name) => expectedTransforms.map((transform) => transform.name).includes(name));
|
|
926
|
+
|
|
927
|
+
it.each([
|
|
928
|
+
{
|
|
929
|
+
includeDecryptionTransforms: false,
|
|
930
|
+
includeEncryptionTransforms: false,
|
|
931
|
+
expectedTransforms: [],
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
includeDecryptionTransforms: false,
|
|
935
|
+
includeEncryptionTransforms: true,
|
|
936
|
+
expectedTransforms: encryptionTransforms,
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
includeDecryptionTransforms: true,
|
|
940
|
+
includeEncryptionTransforms: false,
|
|
941
|
+
expectedTransforms: decryptionTransforms,
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
includeDecryptionTransforms: true,
|
|
945
|
+
includeEncryptionTransforms: true,
|
|
946
|
+
expectedTransforms: encryptionTransforms.concat(decryptionTransforms),
|
|
947
|
+
},
|
|
948
|
+
])(
|
|
949
|
+
'%s sets initFailed to true when collectPreauthCatalog errors',
|
|
950
|
+
async ({includeDecryptionTransforms, includeEncryptionTransforms, expectedTransforms}) => {
|
|
951
|
+
setup({includeDecryptionTransforms, includeEncryptionTransforms});
|
|
952
|
+
webex.trigger('ready');
|
|
953
|
+
assert.isTrue(
|
|
954
|
+
checkTransforms(webex.config.payloadTransformer.transforms, expectedTransforms),
|
|
955
|
+
'transforms should match expected configuration'
|
|
956
|
+
);
|
|
957
|
+
}
|
|
958
|
+
);
|
|
959
|
+
});
|
|
905
960
|
});
|