@webex/webex-core 3.0.0-beta.2 → 3.0.0-beta.21

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.
Files changed (184) hide show
  1. package/dist/config.js +1 -11
  2. package/dist/config.js.map +1 -1
  3. package/dist/credentials-config.js +44 -64
  4. package/dist/credentials-config.js.map +1 -1
  5. package/dist/index.js +0 -76
  6. package/dist/index.js.map +1 -1
  7. package/dist/interceptors/auth.js +22 -55
  8. package/dist/interceptors/auth.js.map +1 -1
  9. package/dist/interceptors/default-options.js +0 -20
  10. package/dist/interceptors/default-options.js.map +1 -1
  11. package/dist/interceptors/embargo.js +0 -21
  12. package/dist/interceptors/embargo.js.map +1 -1
  13. package/dist/interceptors/network-timing.js +2 -21
  14. package/dist/interceptors/network-timing.js.map +1 -1
  15. package/dist/interceptors/payload-transformer.js +2 -22
  16. package/dist/interceptors/payload-transformer.js.map +1 -1
  17. package/dist/interceptors/rate-limit.js +25 -57
  18. package/dist/interceptors/rate-limit.js.map +1 -1
  19. package/dist/interceptors/redirect.js +4 -33
  20. package/dist/interceptors/redirect.js.map +1 -1
  21. package/dist/interceptors/request-event.js +3 -30
  22. package/dist/interceptors/request-event.js.map +1 -1
  23. package/dist/interceptors/request-logger.js +1 -30
  24. package/dist/interceptors/request-logger.js.map +1 -1
  25. package/dist/interceptors/request-timing.js +3 -22
  26. package/dist/interceptors/request-timing.js.map +1 -1
  27. package/dist/interceptors/response-logger.js +2 -31
  28. package/dist/interceptors/response-logger.js.map +1 -1
  29. package/dist/interceptors/user-agent.js +2 -29
  30. package/dist/interceptors/user-agent.js.map +1 -1
  31. package/dist/interceptors/webex-tracking-id.js +5 -28
  32. package/dist/interceptors/webex-tracking-id.js.map +1 -1
  33. package/dist/interceptors/webex-user-agent.js +5 -38
  34. package/dist/interceptors/webex-user-agent.js.map +1 -1
  35. package/dist/lib/batcher.js +3 -51
  36. package/dist/lib/batcher.js.map +1 -1
  37. package/dist/lib/credentials/credentials.js +39 -119
  38. package/dist/lib/credentials/credentials.js.map +1 -1
  39. package/dist/lib/credentials/grant-errors.js +0 -49
  40. package/dist/lib/credentials/grant-errors.js.map +1 -1
  41. package/dist/lib/credentials/index.js +1 -13
  42. package/dist/lib/credentials/index.js.map +1 -1
  43. package/dist/lib/credentials/scope.js +1 -7
  44. package/dist/lib/credentials/scope.js.map +1 -1
  45. package/dist/lib/credentials/token-collection.js +1 -7
  46. package/dist/lib/credentials/token-collection.js.map +1 -1
  47. package/dist/lib/credentials/token.js +39 -118
  48. package/dist/lib/credentials/token.js.map +1 -1
  49. package/dist/lib/page.js +13 -26
  50. package/dist/lib/page.js.map +1 -1
  51. package/dist/lib/services/constants.js +0 -2
  52. package/dist/lib/services/constants.js.map +1 -1
  53. package/dist/lib/services/index.js +1 -28
  54. package/dist/lib/services/index.js.map +1 -1
  55. package/dist/lib/services/interceptors/server-error.js +2 -23
  56. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  57. package/dist/lib/services/interceptors/service.js +12 -34
  58. package/dist/lib/services/interceptors/service.js.map +1 -1
  59. package/dist/lib/services/metrics.js +0 -2
  60. package/dist/lib/services/metrics.js.map +1 -1
  61. package/dist/lib/services/service-catalog.js +10 -90
  62. package/dist/lib/services/service-catalog.js.map +1 -1
  63. package/dist/lib/services/service-fed-ramp.js +0 -2
  64. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  65. package/dist/lib/services/service-host.js +47 -62
  66. package/dist/lib/services/service-host.js.map +1 -1
  67. package/dist/lib/services/service-registry.js +78 -90
  68. package/dist/lib/services/service-registry.js.map +1 -1
  69. package/dist/lib/services/service-state.js +3 -15
  70. package/dist/lib/services/service-state.js.map +1 -1
  71. package/dist/lib/services/service-url.js +4 -25
  72. package/dist/lib/services/service-url.js.map +1 -1
  73. package/dist/lib/services/services.js +122 -238
  74. package/dist/lib/services/services.js.map +1 -1
  75. package/dist/lib/stateless-webex-plugin.js +5 -28
  76. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  77. package/dist/lib/storage/decorators.js +19 -62
  78. package/dist/lib/storage/decorators.js.map +1 -1
  79. package/dist/lib/storage/errors.js +0 -23
  80. package/dist/lib/storage/errors.js.map +1 -1
  81. package/dist/lib/storage/index.js +2 -16
  82. package/dist/lib/storage/index.js.map +1 -1
  83. package/dist/lib/storage/make-webex-plugin-store.js +11 -41
  84. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  85. package/dist/lib/storage/make-webex-store.js +8 -30
  86. package/dist/lib/storage/make-webex-store.js.map +1 -1
  87. package/dist/lib/storage/memory-store-adapter.js +1 -19
  88. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  89. package/dist/lib/webex-core-plugin-mixin.js +9 -29
  90. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  91. package/dist/lib/webex-http-error.js +1 -31
  92. package/dist/lib/webex-http-error.js.map +1 -1
  93. package/dist/lib/webex-internal-core-plugin-mixin.js +9 -29
  94. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  95. package/dist/lib/webex-plugin.js +6 -40
  96. package/dist/lib/webex-plugin.js.map +1 -1
  97. package/dist/plugins/logger.js +3 -17
  98. package/dist/plugins/logger.js.map +1 -1
  99. package/dist/webex-core.js +79 -203
  100. package/dist/webex-core.js.map +1 -1
  101. package/dist/webex-internal-core.js +0 -10
  102. package/dist/webex-internal-core.js.map +1 -1
  103. package/package.json +14 -14
  104. package/src/config.js +9 -11
  105. package/src/credentials-config.js +110 -72
  106. package/src/index.js +4 -14
  107. package/src/interceptors/auth.js +36 -37
  108. package/src/interceptors/default-options.js +0 -1
  109. package/src/interceptors/embargo.js +1 -1
  110. package/src/interceptors/payload-transformer.js +1 -2
  111. package/src/interceptors/rate-limit.js +8 -5
  112. package/src/interceptors/redirect.js +14 -8
  113. package/src/interceptors/request-event.js +4 -8
  114. package/src/interceptors/request-logger.js +8 -5
  115. package/src/interceptors/response-logger.js +11 -8
  116. package/src/interceptors/user-agent.js +1 -2
  117. package/src/interceptors/webex-user-agent.js +3 -9
  118. package/src/lib/batcher.js +70 -69
  119. package/src/lib/credentials/credentials.js +112 -122
  120. package/src/lib/credentials/grant-errors.js +6 -7
  121. package/src/lib/credentials/index.js +1 -4
  122. package/src/lib/credentials/scope.js +1 -4
  123. package/src/lib/credentials/token-collection.js +1 -1
  124. package/src/lib/credentials/token.js +86 -80
  125. package/src/lib/page.js +10 -11
  126. package/src/lib/services/constants.js +3 -13
  127. package/src/lib/services/index.js +2 -2
  128. package/src/lib/services/interceptors/server-error.js +12 -7
  129. package/src/lib/services/interceptors/service.js +6 -5
  130. package/src/lib/services/metrics.js +1 -1
  131. package/src/lib/services/service-catalog.js +110 -100
  132. package/src/lib/services/service-fed-ramp.js +1 -2
  133. package/src/lib/services/service-host.js +10 -17
  134. package/src/lib/services/service-registry.js +69 -96
  135. package/src/lib/services/service-state.js +4 -6
  136. package/src/lib/services/service-url.js +24 -23
  137. package/src/lib/services/services.js +260 -251
  138. package/src/lib/stateless-webex-plugin.js +4 -2
  139. package/src/lib/storage/decorators.js +68 -66
  140. package/src/lib/storage/index.js +4 -6
  141. package/src/lib/storage/make-webex-plugin-store.js +34 -21
  142. package/src/lib/storage/make-webex-store.js +6 -7
  143. package/src/lib/storage/memory-store-adapter.js +3 -3
  144. package/src/lib/webex-core-plugin-mixin.js +10 -7
  145. package/src/lib/webex-http-error.js +7 -8
  146. package/src/lib/webex-internal-core-plugin-mixin.js +9 -6
  147. package/src/lib/webex-plugin.js +41 -34
  148. package/src/plugins/logger.js +8 -3
  149. package/src/webex-core.js +185 -116
  150. package/src/webex-internal-core.js +15 -9
  151. package/test/integration/spec/credentials/credentials.js +26 -30
  152. package/test/integration/spec/credentials/token.js +36 -33
  153. package/test/integration/spec/services/service-catalog.js +177 -156
  154. package/test/integration/spec/services/services.js +313 -304
  155. package/test/integration/spec/webex-core.js +98 -86
  156. package/test/unit/spec/_setup.js +26 -18
  157. package/test/unit/spec/credentials/credentials.js +189 -154
  158. package/test/unit/spec/credentials/token.js +94 -76
  159. package/test/unit/spec/interceptors/auth.js +291 -243
  160. package/test/unit/spec/interceptors/default-options.js +36 -24
  161. package/test/unit/spec/interceptors/embargo.js +32 -27
  162. package/test/unit/spec/interceptors/network-timing.js +2 -2
  163. package/test/unit/spec/interceptors/payload-transformer.js +61 -52
  164. package/test/unit/spec/interceptors/rate-limit.js +104 -75
  165. package/test/unit/spec/interceptors/redirect.js +22 -20
  166. package/test/unit/spec/interceptors/request-timing.js +18 -22
  167. package/test/unit/spec/interceptors/user-agent.js +28 -16
  168. package/test/unit/spec/interceptors/webex-tracking-id.js +14 -8
  169. package/test/unit/spec/interceptors/webex-user-agent.js +83 -37
  170. package/test/unit/spec/lib/batcher.js +36 -32
  171. package/test/unit/spec/lib/page.js +36 -32
  172. package/test/unit/spec/lib/webex-plugin.js +1 -1
  173. package/test/unit/spec/services/interceptors/server-error.js +67 -90
  174. package/test/unit/spec/services/interceptors/service.js +17 -28
  175. package/test/unit/spec/services/service-catalog.js +19 -27
  176. package/test/unit/spec/services/service-host.js +29 -26
  177. package/test/unit/spec/services/service-registry.js +128 -170
  178. package/test/unit/spec/services/service-state.js +13 -22
  179. package/test/unit/spec/services/service-url.js +24 -43
  180. package/test/unit/spec/services/services.js +85 -41
  181. package/test/unit/spec/storage/persist.js +6 -9
  182. package/test/unit/spec/storage/wait-for-value.js +22 -21
  183. package/test/unit/spec/webex-core.js +78 -57
  184. package/test/unit/spec/webex-internal-core.js +56 -31
@@ -10,15 +10,19 @@ describe('webex-core', () => {
10
10
  describe('DefaultOptionsInterceptor', () => {
11
11
  describe('#onRequest()', () => {
12
12
  it('interceptor ok when defaultRequestOptions is undefined', () => {
13
- const interceptor = Reflect.apply(DefaultOptionsInterceptor.create, {
14
- config: {
15
- appVersion: '1.0.0'
16
- // defaultRequestOptions omitted/undefined here
17
- }
18
- }, []);
13
+ const interceptor = Reflect.apply(
14
+ DefaultOptionsInterceptor.create,
15
+ {
16
+ config: {
17
+ appVersion: '1.0.0',
18
+ // defaultRequestOptions omitted/undefined here
19
+ },
20
+ },
21
+ []
22
+ );
19
23
 
20
24
  const options = {
21
- existingOption: 'bar'
25
+ existingOption: 'bar',
22
26
  };
23
27
 
24
28
  interceptor.onRequest(options);
@@ -27,17 +31,21 @@ describe('webex-core', () => {
27
31
  });
28
32
 
29
33
  it('add default options to existing options', () => {
30
- const interceptor = Reflect.apply(DefaultOptionsInterceptor.create, {
31
- config: {
32
- defaultRequestOptions: {
33
- myNewOption1: 'foo1',
34
- myNewOption2: 'foo2'
35
- }
36
- }
37
- }, []);
34
+ const interceptor = Reflect.apply(
35
+ DefaultOptionsInterceptor.create,
36
+ {
37
+ config: {
38
+ defaultRequestOptions: {
39
+ myNewOption1: 'foo1',
40
+ myNewOption2: 'foo2',
41
+ },
42
+ },
43
+ },
44
+ []
45
+ );
38
46
 
39
47
  const options = {
40
- existingOption: 'bar'
48
+ existingOption: 'bar',
41
49
  };
42
50
 
43
51
  interceptor.onRequest(options);
@@ -50,16 +58,20 @@ describe('webex-core', () => {
50
58
  });
51
59
 
52
60
  it('default option does not override existing option', () => {
53
- const interceptor = Reflect.apply(DefaultOptionsInterceptor.create, {
54
- config: {
55
- defaultRequestOptions: {
56
- existingOption: 'foo'
57
- }
58
- }
59
- }, []);
61
+ const interceptor = Reflect.apply(
62
+ DefaultOptionsInterceptor.create,
63
+ {
64
+ config: {
65
+ defaultRequestOptions: {
66
+ existingOption: 'foo',
67
+ },
68
+ },
69
+ },
70
+ []
71
+ );
60
72
 
61
73
  const options = {
62
- existingOption: 'bar'
74
+ existingOption: 'bar',
63
75
  };
64
76
 
65
77
  interceptor.onRequest(options);
@@ -1,10 +1,7 @@
1
1
  import chai from 'chai';
2
2
  import chaiAsPromised from 'chai-as-promised';
3
3
  import sinon from 'sinon';
4
- import {
5
- EmbargoInterceptor,
6
- WebexHttpError
7
- } from '@webex/webex-core';
4
+ import {EmbargoInterceptor, WebexHttpError} from '@webex/webex-core';
8
5
 
9
6
  const {assert} = chai;
10
7
 
@@ -28,28 +25,28 @@ describe('webex-core', () => {
28
25
 
29
26
  beforeEach('create options object', () => {
30
27
  options = {
31
- uri: 'http://not-a-url.com/embargoed'
28
+ uri: 'http://not-a-url.com/embargoed',
32
29
  };
33
30
 
34
31
  interceptor.webex = {
35
32
  credentials: {
36
- clear: sinon.spy()
33
+ clear: sinon.spy(),
37
34
  },
38
35
  internal: {},
39
36
  logger: {
40
- info: sinon.spy()
41
- }
37
+ info: sinon.spy(),
38
+ },
42
39
  };
43
40
 
44
41
  credentialsClear = interceptor.webex.credentials.clear;
45
42
  loggerInfo = interceptor.webex.logger.info;
46
43
  loggerMessage = [
47
44
  'Received `HTTP 451 Unavailable For Legal Reasons`, ',
48
- 'discarding credentials and device registration'
45
+ 'discarding credentials and device registration',
49
46
  ].join('');
50
47
  });
51
48
 
52
- describe('when the reason does have a \'451\' status code', () => {
49
+ describe("when the reason does have a '451' status code", () => {
53
50
  beforeEach('set appropriate status code and spys', () => {
54
51
  reason = new WebexHttpError.InternalServerError({
55
52
  message: 'test message',
@@ -57,22 +54,25 @@ describe('webex-core', () => {
57
54
  options: {
58
55
  url: 'http://not-a-url.com/',
59
56
  headers: {
60
- trackingId: 'tid'
61
- }
62
- }
57
+ trackingId: 'tid',
58
+ },
59
+ },
63
60
  });
64
61
  });
65
62
 
66
63
  it('should return a rejected promise with the reason', () =>
67
- assert.isRejected(interceptor.onResponseError(options, reason))
64
+ assert
65
+ .isRejected(interceptor.onResponseError(options, reason))
68
66
  .then((error) => assert.equal(reason, error)));
69
67
 
70
68
  it('should clear credentials', () =>
71
- assert.isRejected(interceptor.onResponseError(options, reason))
69
+ assert
70
+ .isRejected(interceptor.onResponseError(options, reason))
72
71
  .then(() => assert.called(credentialsClear)));
73
72
 
74
73
  it('should present an appropriate logger message', () =>
75
- assert.isRejected(interceptor.onResponseError(options, reason))
74
+ assert
75
+ .isRejected(interceptor.onResponseError(options, reason))
76
76
  .then(() => assert.calledWith(loggerInfo, loggerMessage)));
77
77
 
78
78
  describe('when the device plugin is mounted', () => {
@@ -80,19 +80,20 @@ describe('webex-core', () => {
80
80
 
81
81
  beforeEach('set up the device plugin', () => {
82
82
  interceptor.webex.internal.device = {
83
- clear: sinon.spy()
83
+ clear: sinon.spy(),
84
84
  };
85
85
 
86
86
  deviceClear = interceptor.webex.internal.device.clear;
87
87
  });
88
88
 
89
89
  it('should clear the device', () =>
90
- assert.isRejected(interceptor.onResponseError(options, reason))
90
+ assert
91
+ .isRejected(interceptor.onResponseError(options, reason))
91
92
  .then(() => assert.called(deviceClear)));
92
93
  });
93
94
  });
94
95
 
95
- describe('when the reason does not have a \'451\' status code', () => {
96
+ describe("when the reason does not have a '451' status code", () => {
96
97
  beforeEach('set appropriate status code and spys', () => {
97
98
  reason = new WebexHttpError.InternalServerError({
98
99
  message: 'test message',
@@ -100,22 +101,25 @@ describe('webex-core', () => {
100
101
  options: {
101
102
  url: 'http://not-a-url.com/',
102
103
  headers: {
103
- trackingId: 'tid'
104
- }
105
- }
104
+ trackingId: 'tid',
105
+ },
106
+ },
106
107
  });
107
108
  });
108
109
 
109
110
  it('should return a rejected promise with the reason', () =>
110
- assert.isRejected(interceptor.onResponseError(options, reason))
111
+ assert
112
+ .isRejected(interceptor.onResponseError(options, reason))
111
113
  .then((error) => assert.equal(reason, error)));
112
114
 
113
115
  it('should not clear credentials', () =>
114
- assert.isRejected(interceptor.onResponseError(options, reason))
116
+ assert
117
+ .isRejected(interceptor.onResponseError(options, reason))
115
118
  .then(() => assert.notCalled(credentialsClear)));
116
119
 
117
120
  it('should not present any logger message', () =>
118
- assert.isRejected(interceptor.onResponseError(options, reason))
121
+ assert
122
+ .isRejected(interceptor.onResponseError(options, reason))
119
123
  .then(() => assert.notCalled(loggerInfo)));
120
124
 
121
125
  describe('when the device plugin is mounted', () => {
@@ -123,14 +127,15 @@ describe('webex-core', () => {
123
127
 
124
128
  beforeEach('set up the device plugin', () => {
125
129
  interceptor.webex.internal.device = {
126
- clear: sinon.spy()
130
+ clear: sinon.spy(),
127
131
  };
128
132
 
129
133
  deviceClear = interceptor.webex.internal.device.clear;
130
134
  });
131
135
 
132
136
  it('should not clear the device', () =>
133
- assert.isRejected(interceptor.onResponseError(options, reason))
137
+ assert
138
+ .isRejected(interceptor.onResponseError(options, reason))
134
139
  .then(() => assert.notCalled(deviceClear)));
135
140
  });
136
141
  });
@@ -35,8 +35,8 @@ describe('webex-core', () => {
35
35
  it('adds a networkEnd time to options.$timings', () => {
36
36
  const options = {
37
37
  $timings: {
38
- networkStart: Date.now() - 100
39
- }
38
+ networkStart: Date.now() - 100,
39
+ },
40
40
  };
41
41
 
42
42
  interceptor.onResponse(options);
@@ -15,23 +15,28 @@ describe('webex-core', () => {
15
15
  webex = new WebexCore({
16
16
  config: {
17
17
  payloadTransformer: {
18
- predicates: [{
19
- name: 'transformObject',
20
- direction: 'outbound',
21
- test(ctx, options) {
22
- return Promise.resolve(Boolean(options && options.body && options.body.objectType));
18
+ predicates: [
19
+ {
20
+ name: 'transformObject',
21
+ direction: 'outbound',
22
+ test(ctx, options) {
23
+ return Promise.resolve(
24
+ Boolean(options && options.body && options.body.objectType)
25
+ );
26
+ },
27
+ extract(options) {
28
+ return Promise.resolve(options.body);
29
+ },
23
30
  },
24
- extract(options) {
25
- return Promise.resolve(options.body);
26
- }
27
- }],
31
+ ],
28
32
  transforms: [
29
33
  {
30
34
  name: 'transformObject',
31
35
  fn(ctx, object) {
32
- return ctx.transform('normalizeObject', object)
36
+ return ctx
37
+ .transform('normalizeObject', object)
33
38
  .then((object) => ctx.transform('encryptObject', object));
34
- }
39
+ },
35
40
  },
36
41
  {
37
42
  name: 'normalizeObject',
@@ -43,9 +48,9 @@ describe('webex-core', () => {
43
48
  return Promise.all([
44
49
  ctx.transform(`normalize${capitalize(object.objectType)}`, object),
45
50
  ctx.transform('normalizePropDisplayName', object),
46
- ctx.transform('normalizePropContent', object)
51
+ ctx.transform('normalizePropContent', object),
47
52
  ]);
48
- }
53
+ },
49
54
  },
50
55
  {
51
56
  name: 'normalizeActivity',
@@ -53,9 +58,9 @@ describe('webex-core', () => {
53
58
  return Promise.all([
54
59
  ctx.transform('normalizeObject', activity.actor),
55
60
  ctx.transform('normalizeObject', activity.object),
56
- ctx.transform('normalizeObject', activity.target)
61
+ ctx.transform('normalizeObject', activity.target),
57
62
  ]);
58
- }
63
+ },
59
64
  },
60
65
  {
61
66
  name: 'normalizePerson',
@@ -63,7 +68,7 @@ describe('webex-core', () => {
63
68
  actor.id = 'uuid';
64
69
 
65
70
  return Promise.resolve();
66
- }
71
+ },
67
72
  },
68
73
  {
69
74
  name: 'normalizeComment',
@@ -71,7 +76,7 @@ describe('webex-core', () => {
71
76
  comment.content = 'richtext';
72
77
 
73
78
  return Promise.resolve();
74
- }
79
+ },
75
80
  },
76
81
  {
77
82
  name: 'encryptObject',
@@ -87,13 +92,13 @@ describe('webex-core', () => {
87
92
  }
88
93
 
89
94
  return ctx.transform(`encrypt${capitalize(object.objectType)}`, key, object);
90
- }
95
+ },
91
96
  },
92
97
  {
93
98
  name: 'encryptActivity',
94
99
  fn(ctx, key, activity) {
95
100
  return ctx.transform('encryptComment', key, activity.object);
96
- }
101
+ },
97
102
  },
98
103
  {
99
104
  name: 'encryptComment',
@@ -102,44 +107,48 @@ describe('webex-core', () => {
102
107
  object.content = 'ciphertextCONTENT';
103
108
 
104
109
  return Promise.resolve();
105
- }
106
- }
107
- ]
108
- }
109
- }
110
+ },
111
+ },
112
+ ],
113
+ },
114
+ },
110
115
  });
111
116
  });
112
117
 
113
118
  describe('#transform()', () => {
114
- it('transforms request objects', () => webex.transform('outbound', {
115
- body: {
116
- actor: {
117
- id: 'me@wx2.example.com',
118
- objectType: 'person'
119
- },
120
- object: {
121
- content: '<invalidtag>richtext</invalidtag>',
122
- displayName: 'plaintext',
123
- objectType: 'comment'
124
- },
125
- objectType: 'activity'
126
- }
127
- })
128
- .then((result) => assert.deepEqual(result, {
129
- body: {
130
- actor: {
131
- id: 'uuid',
132
- objectType: 'person'
133
- },
134
- encryptionKeyUrl: 'kms://example.com/uuid',
135
- object: {
136
- content: 'ciphertextCONTENT',
137
- displayName: 'ciphertextDISPLAYNAME',
138
- objectType: 'comment'
119
+ it('transforms request objects', () =>
120
+ webex
121
+ .transform('outbound', {
122
+ body: {
123
+ actor: {
124
+ id: 'me@wx2.example.com',
125
+ objectType: 'person',
126
+ },
127
+ object: {
128
+ content: '<invalidtag>richtext</invalidtag>',
129
+ displayName: 'plaintext',
130
+ objectType: 'comment',
131
+ },
132
+ objectType: 'activity',
139
133
  },
140
- objectType: 'activity'
141
- }
142
- })));
134
+ })
135
+ .then((result) =>
136
+ assert.deepEqual(result, {
137
+ body: {
138
+ actor: {
139
+ id: 'uuid',
140
+ objectType: 'person',
141
+ },
142
+ encryptionKeyUrl: 'kms://example.com/uuid',
143
+ object: {
144
+ content: 'ciphertextCONTENT',
145
+ displayName: 'ciphertextDISPLAYNAME',
146
+ objectType: 'comment',
147
+ },
148
+ objectType: 'activity',
149
+ },
150
+ })
151
+ ));
143
152
  });
144
153
  });
145
154
  });