@playkit-js/playkit-js-providers 2.39.1 → 2.39.2

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 (130) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/playkit-analytics-service.js +2 -0
  3. package/dist/playkit-analytics-service.js.map +1 -0
  4. package/dist/playkit-bookmark-service.js +2 -0
  5. package/dist/playkit-bookmark-service.js.map +1 -0
  6. package/dist/playkit-ott-provider.js +2 -0
  7. package/dist/playkit-ott-provider.js.map +1 -0
  8. package/dist/playkit-ovp-provider.js +2 -0
  9. package/dist/playkit-ovp-provider.js.map +1 -0
  10. package/dist/playkit-stats-service.js +2 -0
  11. package/dist/playkit-stats-service.js.map +1 -0
  12. package/package.json +1 -1
  13. package/.babelrc +0 -22
  14. package/.editorconfig +0 -10
  15. package/.eslintignore +0 -3
  16. package/.eslintrc.json +0 -26
  17. package/.flowconfig +0 -5
  18. package/.github/ISSUE_TEMPLATE.md +0 -28
  19. package/.github/PULL_REQUEST_TEMPLATE.md +0 -12
  20. package/.github/workflows/run_canary_full_flow.yaml +0 -28
  21. package/.github/workflows/run_prod.yaml +0 -24
  22. package/.github/workflows/run_tests.yaml +0 -24
  23. package/.prettierignore +0 -7
  24. package/.prettierrc +0 -12
  25. package/docs/configuration.md +0 -225
  26. package/karma.conf.js +0 -42
  27. package/src/entities/bumper.js +0 -23
  28. package/src/entities/drm.js +0 -46
  29. package/src/entities/entry-list.js +0 -15
  30. package/src/entities/image-source.js +0 -37
  31. package/src/entities/media-entry.js +0 -96
  32. package/src/entities/media-format.js +0 -46
  33. package/src/entities/media-source.js +0 -70
  34. package/src/entities/media-sources.js +0 -79
  35. package/src/entities/playlist.js +0 -37
  36. package/src/index.html +0 -11
  37. package/src/k-provider/common/base-provider-parser.js +0 -0
  38. package/src/k-provider/common/base-provider.js +0 -110
  39. package/src/k-provider/common/base-service-result.js +0 -57
  40. package/src/k-provider/common/data-loader-manager.js +0 -115
  41. package/src/k-provider/common/multi-request-builder.js +0 -112
  42. package/src/k-provider/common/response-types/kaltura-access-control-message.js +0 -22
  43. package/src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.js +0 -39
  44. package/src/k-provider/ott/config.js +0 -22
  45. package/src/k-provider/ott/index.js +0 -15
  46. package/src/k-provider/ott/loaders/asset-list-loader.js +0 -68
  47. package/src/k-provider/ott/loaders/asset-loader.js +0 -69
  48. package/src/k-provider/ott/loaders/data-loader-manager.js +0 -15
  49. package/src/k-provider/ott/loaders/session-loader.js +0 -62
  50. package/src/k-provider/ott/provider-parser.js +0 -282
  51. package/src/k-provider/ott/provider.js +0 -242
  52. package/src/k-provider/ott/response-types/kaltura-asset.js +0 -79
  53. package/src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.js +0 -28
  54. package/src/k-provider/ott/response-types/kaltura-playback-context.js +0 -74
  55. package/src/k-provider/ott/response-types/kaltura-playback-source.js +0 -63
  56. package/src/k-provider/ott/response-types/kaltura-rule-action.js +0 -26
  57. package/src/k-provider/ott/services/asset-service.js +0 -50
  58. package/src/k-provider/ott/services/bookmark/bookmark-service.js +0 -49
  59. package/src/k-provider/ott/services/bookmark/index.js +0 -12
  60. package/src/k-provider/ott/services/ott-service.js +0 -34
  61. package/src/k-provider/ott/services/user-service.js +0 -32
  62. package/src/k-provider/ovp/config.js +0 -28
  63. package/src/k-provider/ovp/external-captions-builder.js +0 -38
  64. package/src/k-provider/ovp/index.js +0 -13
  65. package/src/k-provider/ovp/loaders/data-loader-manager.js +0 -17
  66. package/src/k-provider/ovp/loaders/entry-list-loader.js +0 -69
  67. package/src/k-provider/ovp/loaders/media-entry-loader.js +0 -84
  68. package/src/k-provider/ovp/loaders/playlist-loader.js +0 -66
  69. package/src/k-provider/ovp/loaders/session-loader.js +0 -62
  70. package/src/k-provider/ovp/loaders/ui-config-loader.js +0 -71
  71. package/src/k-provider/ovp/play-source-url-builder.js +0 -60
  72. package/src/k-provider/ovp/provider-parser.js +0 -451
  73. package/src/k-provider/ovp/provider.js +0 -344
  74. package/src/k-provider/ovp/regex-action-handler.js +0 -147
  75. package/src/k-provider/ovp/request-params/base-entry-response-profile.js +0 -29
  76. package/src/k-provider/ovp/response-types/index.js +0 -18
  77. package/src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-action.js +0 -36
  78. package/src/k-provider/ovp/response-types/kaltura-base-entry-list-response.js +0 -31
  79. package/src/k-provider/ovp/response-types/kaltura-bumper.js +0 -26
  80. package/src/k-provider/ovp/response-types/kaltura-flavor-asset.js +0 -109
  81. package/src/k-provider/ovp/response-types/kaltura-media-entries.js +0 -23
  82. package/src/k-provider/ovp/response-types/kaltura-media-entry.js +0 -141
  83. package/src/k-provider/ovp/response-types/kaltura-metadata-list-response.js +0 -23
  84. package/src/k-provider/ovp/response-types/kaltura-metadata.js +0 -51
  85. package/src/k-provider/ovp/response-types/kaltura-playback-context.js +0 -96
  86. package/src/k-provider/ovp/response-types/kaltura-playback-source.js +0 -90
  87. package/src/k-provider/ovp/response-types/kaltura-playlist.js +0 -35
  88. package/src/k-provider/ovp/response-types/kaltura-rule-action.js +0 -28
  89. package/src/k-provider/ovp/response-types/kaltura-ui-conf-response.js +0 -90
  90. package/src/k-provider/ovp/services/analytics/analytics-service.js +0 -57
  91. package/src/k-provider/ovp/services/analytics/index.js +0 -12
  92. package/src/k-provider/ovp/services/base-entry-service.js +0 -76
  93. package/src/k-provider/ovp/services/meta-data-service.js +0 -30
  94. package/src/k-provider/ovp/services/ovp-service.js +0 -33
  95. package/src/k-provider/ovp/services/playlist-service.js +0 -63
  96. package/src/k-provider/ovp/services/session-service.js +0 -28
  97. package/src/k-provider/ovp/services/stats/index.js +0 -12
  98. package/src/k-provider/ovp/services/stats/stats-service.js +0 -33
  99. package/src/k-provider/ovp/services/ui-conf-service.js +0 -33
  100. package/src/util/clone.js +0 -23
  101. package/src/util/error/category.js +0 -12
  102. package/src/util/error/code.js +0 -79
  103. package/src/util/error/error.js +0 -48
  104. package/src/util/error/severity.js +0 -23
  105. package/src/util/logger.js +0 -108
  106. package/src/util/param.js +0 -45
  107. package/src/util/request-builder.js +0 -187
  108. package/src/util/xml-parser.js +0 -40
  109. package/test/.eslintrc.json +0 -9
  110. package/test/setup/karma.js +0 -5
  111. package/test/setup/load-specs.js +0 -13
  112. package/test/setup/prepare-test-environment.js +0 -17
  113. package/test/src/k-provider/ott/be-data.js +0 -3306
  114. package/test/src/k-provider/ott/media-config-data.js +0 -793
  115. package/test/src/k-provider/ott/provider-parser.spec.js +0 -30
  116. package/test/src/k-provider/ott/provider.spec.js +0 -384
  117. package/test/src/k-provider/ott/services/bookmark-service.spec.js +0 -38
  118. package/test/src/k-provider/ovp/be-data.js +0 -3932
  119. package/test/src/k-provider/ovp/external-captions-builder.spec.js +0 -59
  120. package/test/src/k-provider/ovp/media-config-data.js +0 -1509
  121. package/test/src/k-provider/ovp/playback-sources-data.js +0 -229
  122. package/test/src/k-provider/ovp/provider-parser-data.js +0 -142
  123. package/test/src/k-provider/ovp/provider-parser.spec.js +0 -96
  124. package/test/src/k-provider/ovp/provider.spec.js +0 -1075
  125. package/test/src/k-provider/ovp/regex-action-handler-data.js +0 -794
  126. package/test/src/k-provider/ovp/regex-action-handler.spec.js +0 -93
  127. package/test/src/k-provider/ovp/services/analytics-service.spec.js +0 -62
  128. package/test/src/k-provider/ovp/services/stats-service.spec.js +0 -37
  129. package/test/src/util/param.spec.js +0 -23
  130. package/webpack.config.js +0 -85
@@ -1,1075 +0,0 @@
1
- import OVPProvider from '../../../../src/k-provider/ovp/provider';
2
- import * as BE_DATA from './be-data';
3
- import * as MEDIA_CONFIG_DATA from './media-config-data';
4
- import {MultiRequestResult} from '../../../../src/k-provider/common/multi-request-builder';
5
- import MultiRequestBuilder from '../../../../src/k-provider/common/multi-request-builder';
6
- import Error from '../../../../src/util/error/error';
7
- import OVPConfiguration from '../../../../src/k-provider/ovp/config';
8
- import OVPMediaEntryLoader from '../../../../src/k-provider/ovp/loaders/media-entry-loader';
9
- import OVPSessionLoader from '../../../../src/k-provider/ovp/loaders/session-loader';
10
-
11
- describe('default configuration', () => {
12
- const partnerId = 1082342;
13
- const playerVersion = '1.2.3';
14
-
15
- const defaultConfig = OVPConfiguration.get();
16
-
17
- beforeEach(() => {
18
- OVPConfiguration.set(defaultConfig);
19
- });
20
-
21
- afterEach(() => {
22
- OVPConfiguration.set(defaultConfig);
23
- });
24
-
25
- it('should use config values if they are set', () => {
26
- const provider = new OVPProvider(
27
- {
28
- partnerId: partnerId,
29
- env: {
30
- serviceUrl: '111',
31
- cdnUrl: '222',
32
- serviceParams: {
33
- apiVersion: '333',
34
- format: 4
35
- },
36
- useApiCaptions: false
37
- }
38
- },
39
- playerVersion
40
- );
41
- provider.env.serviceUrl.should.equal('111');
42
- provider.env.cdnUrl.should.equal('222');
43
- provider.env.serviceParams.apiVersion.should.equal('333');
44
- provider.env.serviceParams.format.should.equal(4);
45
- provider.env.useApiCaptions.should.equal(false);
46
- });
47
-
48
- it('should use default values if config values are not set', () => {
49
- const provider = new OVPProvider({partnerId: partnerId}, playerVersion);
50
- provider.env.serviceUrl.should.equal(defaultConfig.serviceUrl);
51
- provider.env.cdnUrl.should.equal(defaultConfig.cdnUrl);
52
- provider.env.serviceParams.apiVersion.should.equal(defaultConfig.serviceParams.apiVersion);
53
- provider.env.serviceParams.format.should.equal(defaultConfig.serviceParams.format);
54
- provider.env.useApiCaptions.should.equal(defaultConfig.useApiCaptions);
55
- });
56
- });
57
-
58
- describe('OVPProvider.partnerId:1082342', function () {
59
- let provider, sandbox;
60
- const partnerId = 1082342;
61
- const playerVersion = '1.2.3';
62
- beforeEach(() => {
63
- sandbox = sinon.createSandbox();
64
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
65
- });
66
-
67
- afterEach(() => {
68
- sandbox.restore();
69
- MultiRequestBuilder.prototype.execute.restore();
70
- });
71
-
72
- it('should return config without plugins and without drm data', done => {
73
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
74
- return new Promise(resolve => {
75
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousMocEntryWithoutUIConfNoDrmData.response)});
76
- });
77
- });
78
- provider.getMediaConfig({entryId: '1_rsrdfext'}).then(
79
- mediaConfig => {
80
- try {
81
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.NoPluginsNoDrm);
82
- done();
83
- } catch (err) {
84
- done(err);
85
- }
86
- },
87
- err => {
88
- done(err);
89
- }
90
- );
91
- });
92
-
93
- it('should apply the request host regex to all source urls', done => {
94
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
95
- return new Promise(resolve => {
96
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousMocEntryWithRequestHostRegexAction.response)});
97
- });
98
- });
99
- provider.getMediaConfig({entryId: '1_rsrdfext'}).then(
100
- mediaConfig => {
101
- try {
102
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.RegexAppliedAllSources);
103
- done();
104
- } catch (err) {
105
- done(err);
106
- }
107
- },
108
- err => {
109
- done(err);
110
- }
111
- );
112
- });
113
-
114
- it('should apply the request host regex only to the playManifest source urls', done => {
115
- OVPConfiguration.set({replaceHostOnlyManifestUrls: true});
116
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
117
- return new Promise(resolve => {
118
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousMocEntryWithRequestHostRegexAction.response)});
119
- });
120
- });
121
- provider.getMediaConfig({entryId: '1_rsrdfext'}).then(
122
- mediaConfig => {
123
- try {
124
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.RegexAppliedPlayManifestSources);
125
- done();
126
- } catch (err) {
127
- done(err);
128
- }
129
- },
130
- err => {
131
- done(err);
132
- }
133
- );
134
- });
135
-
136
- it('should return config with plugins and without drm data', done => {
137
- provider = new OVPProvider({partnerId: partnerId, uiConfId: 38621471}, playerVersion);
138
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
139
- return new Promise(resolve => {
140
- resolve({response: new MultiRequestResult(BE_DATA.EntryWithUIConfNoDrmData.response)});
141
- });
142
- });
143
- provider.getMediaConfig({entryId: '1_rsrdfext'}).then(
144
- mediaConfig => {
145
- try {
146
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.WithPluginsNoDrm);
147
- done();
148
- } catch (err) {
149
- done(err);
150
- }
151
- },
152
- err => {
153
- done(err);
154
- }
155
- );
156
- });
157
-
158
- it('should be able to get media config by referenceId', done => {
159
- provider = new OVPProvider({partnerId: partnerId, uiConfId: 38621471}, playerVersion);
160
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
161
- try {
162
- this.requests[1].params.filter.referenceIdEqual.should.equal('1_rsrdfext');
163
- done();
164
- } catch (err) {
165
- done(err);
166
- }
167
- });
168
- provider.getMediaConfig({referenceId: '1_rsrdfext'});
169
- });
170
-
171
- it('should return config without plugins and without drm data for audio', done => {
172
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
173
- return new Promise(resolve => {
174
- resolve({response: new MultiRequestResult(BE_DATA.AudioEntryWithoutPlugins.response)});
175
- });
176
- });
177
- provider.getMediaConfig({entryId: '0_vyzw3ceu'}).then(
178
- mediaConfig => {
179
- try {
180
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.AudioEntryWithoutPlugins);
181
- done();
182
- } catch (err) {
183
- done(err);
184
- }
185
- },
186
- err => {
187
- done(err);
188
- }
189
- );
190
- });
191
-
192
- // currently. the player cannot handle an image (need to add support). So this test is not valid.
193
- it.skip('should return config without plugins and without drm data for image', done => {
194
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
195
- return new Promise(resolve => {
196
- resolve({response: new MultiRequestResult(BE_DATA.ImageEntryWithoutPlugins.response)});
197
- });
198
- });
199
- provider.getMediaConfig({entryId: '0_vyzw3ceu'}).then(
200
- mediaConfig => {
201
- try {
202
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.ImageEntryWithoutPlugins);
203
- done();
204
- } catch (err) {
205
- done(err);
206
- }
207
- },
208
- err => {
209
- done(err);
210
- }
211
- );
212
- });
213
-
214
- it('should return block error for server block response', done => {
215
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
216
- return new Promise(resolve => {
217
- resolve({response: new MultiRequestResult(BE_DATA.BlockActionEntry.response)});
218
- });
219
- });
220
- provider.getMediaConfig({entryId: 1234}).then(
221
- mediaConfig => {
222
- try {
223
- throw new Error('no error returned where block action error was expected', mediaConfig);
224
- } catch (e) {
225
- done(e);
226
- }
227
- },
228
- err => {
229
- const expected = {
230
- severity: 2,
231
- category: 2,
232
- code: 2001,
233
- data: {
234
- action: {
235
- type: 1
236
- },
237
- messages: [
238
- {
239
- message: "Un authorized country\nWe're sorry, this content is only available in certain countries.",
240
- code: 'COUNTRY_RESTRICTED'
241
- }
242
- ]
243
- }
244
- };
245
- try {
246
- err.should.deep.equal(expected);
247
- done();
248
- } catch (e) {
249
- done(e);
250
- }
251
- }
252
- );
253
- });
254
- });
255
-
256
- describe('OVPProvider.partnerId:1068292', function () {
257
- let provider, sandbox;
258
- const partnerId = 1068292;
259
- const ks =
260
- 'NTAwZjViZWZjY2NjNTRkNGEyMjU1MTg4OGE1NmUwNDljZWJkMzk1MXwxMDY4MjkyOzEwNjgyOTI7MTQ5MDE3NjE0NjswOzE0OTAwODk3NDYuMDIyNjswO3ZpZXc6Kix3aWRnZXQ6MTs7';
261
- const playerVersion = '1.2.3';
262
-
263
- beforeEach(() => {
264
- sandbox = sinon.createSandbox();
265
- provider = new OVPProvider({partnerId: partnerId, ks: ks}, playerVersion);
266
- });
267
-
268
- afterEach(() => {
269
- sandbox.restore();
270
- MultiRequestBuilder.prototype.execute.restore();
271
- });
272
-
273
- it('should return config without plugins with drm data', done => {
274
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
275
- return new Promise(resolve => {
276
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousMocEntryWithoutUIConfWithDrmData.response)});
277
- });
278
- });
279
- provider.getMediaConfig({entryId: '1_rwbj3j0a'}).then(
280
- mediaConfig => {
281
- try {
282
- let data = JSON.parse(JSON.stringify(MEDIA_CONFIG_DATA.NoPluginsWithDrm));
283
- data.session.isAnonymous = false;
284
- mediaConfig.should.deep.equal(data);
285
- done();
286
- } catch (err) {
287
- done(err);
288
- }
289
- },
290
- err => {
291
- done(err);
292
- }
293
- );
294
- });
295
-
296
- it('should return reject when try to get config with wrong entryId', done => {
297
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
298
- return new Promise((resolve, reject) => {
299
- const response = new MultiRequestResult(BE_DATA.WrongEntryIDWithoutUIConf.response);
300
- if (response.success) {
301
- resolve({
302
- response
303
- });
304
- } else {
305
- reject(response);
306
- }
307
- });
308
- });
309
- provider.getMediaConfig({entryId: '1_rwbj3j0affff'}).then(
310
- mediaConfig => {
311
- should.fail(mediaConfig);
312
- },
313
- err => {
314
- err.results.should.deep.equal(MEDIA_CONFIG_DATA.entryIDError);
315
- done();
316
- }
317
- );
318
- });
319
-
320
- it('should return config with plugins and with drm data', done => {
321
- provider = new OVPProvider({partnerId: partnerId, ks: ks, uiConfId: 38601981}, playerVersion);
322
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
323
- return new Promise(resolve => {
324
- const response = new MultiRequestResult(BE_DATA.EntryWithUIConfWithDrmData.response);
325
- resolve({
326
- response
327
- });
328
- });
329
- });
330
- provider.getMediaConfig({entryId: '1_rwbj3j0a'}).then(
331
- mediaConfig => {
332
- try {
333
- let data = JSON.parse(JSON.stringify(MEDIA_CONFIG_DATA.WithPluginsWithDrm));
334
- data.session.isAnonymous = false;
335
- mediaConfig.should.deep.equal(data);
336
- done();
337
- } catch (err) {
338
- done(err);
339
- }
340
- },
341
- err => {
342
- done(err);
343
- }
344
- );
345
- });
346
-
347
- it('should return reject when try to get config with wrong uiConf ID', done => {
348
- provider = new OVPProvider({partnerId: partnerId, ks: ks, uiConfId: 38601981}, playerVersion);
349
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
350
- return new Promise((resolve, reject) => {
351
- const response = new MultiRequestResult(BE_DATA.WrongUiConfID.response);
352
- if (response.success) {
353
- resolve({
354
- response
355
- });
356
- } else {
357
- reject(response);
358
- }
359
- });
360
- });
361
- provider.getMediaConfig({entryId: '1_rwbj3j0a'}).then(
362
- mediaConfig => {
363
- should.fail(mediaConfig);
364
- },
365
- err => {
366
- err.results.should.deep.equal(MEDIA_CONFIG_DATA.WrongUiConfID);
367
- done();
368
- }
369
- );
370
- });
371
- });
372
-
373
- describe('OVPProvider.partnerId:0', function () {
374
- let provider, sandbox;
375
- const partnerId = 0;
376
- const ks =
377
- 'djJ8MTY0NTE2MXzvlA0ktfU5h5Q_sBfvomsONiVGDO4zRRaJHvTBmnxd9eGmGQq3yvwzedJ8elff4L85A8hbCNE5rhDZsPMqDBFT_cfr1ytLeTLyEhS_ZjyYzEpZWUxzrsXjvgiSo9np4Y9H1pH6avyV4TpknfDDX20H59wjh3QhpZRn3DLryzgoTQ';
378
- const playerVersion = '1.2.3';
379
-
380
- beforeEach(() => {
381
- sandbox = sinon.createSandbox();
382
- provider = new OVPProvider({partnerId: partnerId, ks: ks}, playerVersion);
383
- });
384
-
385
- afterEach(() => {
386
- sandbox.restore();
387
- MultiRequestBuilder.prototype.execute.restore();
388
- });
389
-
390
- it('should return entry', done => {
391
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
392
- return new Promise(resolve => {
393
- resolve({response: new MultiRequestResult(BE_DATA.Partner0EntryData.response)});
394
- });
395
- });
396
- provider.getMediaConfig({entryId: '0_pi55vv3r'}).then(
397
- mediaConfig => {
398
- try {
399
- let data = JSON.parse(JSON.stringify(MEDIA_CONFIG_DATA.EntryOfPartner0));
400
- mediaConfig.should.deep.equal(data);
401
- done();
402
- } catch (err) {
403
- done(err);
404
- }
405
- },
406
- err => {
407
- done(err);
408
- }
409
- );
410
- });
411
- });
412
-
413
- describe('getMediaConfig', function () {
414
- let provider, sandbox;
415
- const partnerId = 1068292;
416
- const widgetId = '_123456';
417
- const ks =
418
- 'NTAwZjViZWZjY2NjNTRkNGEyMjU1MTg4OGE1NmUwNDljZWJkMzk1MXwxMDY4MjkyOzEwNjgyOTI7MTQ5MDE3NjE0NjswOzE0OTAwODk3NDYuMDIyNjswO3ZpZXc6Kix3aWRnZXQ6MTs7';
419
- const playerVersion = '1.2.3';
420
-
421
- describe('getMediaConfig with ks', function () {
422
- beforeEach(() => {
423
- sandbox = sinon.createSandbox();
424
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
425
- return new Promise(resolve => {
426
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousMocEntryWithoutUIConfWithDrmData.response)});
427
- });
428
- });
429
- });
430
-
431
- afterEach(() => {
432
- sandbox.restore();
433
- MultiRequestBuilder.prototype.execute.restore();
434
- });
435
-
436
- it('should set anonymous to false when given a KS', done => {
437
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
438
- provider.getMediaConfig({entryId: '1_rwbj3j0a', ks: ks}).then(
439
- mediaConfig => {
440
- try {
441
- mediaConfig.session.isAnonymous.should.be.false;
442
- done();
443
- } catch (err) {
444
- done(err);
445
- }
446
- },
447
- err => {
448
- done(err);
449
- }
450
- );
451
- });
452
-
453
- it('should use the response KS on request with widgetId', done => {
454
- provider = new OVPProvider({partnerId, widgetId}, playerVersion);
455
- provider.getMediaConfig({entryId: '1_rwbj3j0a', ks: ks}).then(
456
- () => {
457
- try {
458
- provider.ks.should.equal(ks);
459
- done();
460
- } catch (err) {
461
- done(err);
462
- }
463
- },
464
- err => {
465
- done(err);
466
- }
467
- );
468
- });
469
- });
470
-
471
- describe('getMediaConfig without ks', function () {
472
- beforeEach(() => {
473
- sandbox = sinon.createSandbox();
474
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
475
- return new Promise(resolve => {
476
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousMocEntryWithoutUIConfNoDrmData.response)});
477
- });
478
- });
479
- });
480
-
481
- afterEach(() => {
482
- sandbox.restore();
483
- MultiRequestBuilder.prototype.execute.restore();
484
- });
485
-
486
- it('should pass widgetId to the session loader', done => {
487
- provider = new OVPProvider({partnerId, widgetId}, playerVersion);
488
- provider.getMediaConfig({entryId: '1_rwbj3j0a'}).then(
489
- () => {
490
- try {
491
- provider._dataLoader._loaders.get('session')._widgetId.should.equal('_123456');
492
- done();
493
- } catch (err) {
494
- done(err);
495
- }
496
- },
497
- err => {
498
- done(err);
499
- }
500
- );
501
- });
502
-
503
- it('should set anonymous to false when given a widgetId', done => {
504
- provider = new OVPProvider({partnerId, widgetId}, playerVersion);
505
- provider.getMediaConfig({entryId: '1_rwbj3j0a'}).then(
506
- () => {
507
- try {
508
- provider._isAnonymous.should.be.false;
509
- done();
510
- } catch (err) {
511
- done(err);
512
- }
513
- },
514
- err => {
515
- done(err);
516
- }
517
- );
518
- });
519
-
520
- it('should pass _partnerId to the session loader', done => {
521
- provider = new OVPProvider({partnerId}, playerVersion);
522
- provider.getMediaConfig({entryId: '1_rwbj3j0a'}).then(
523
- () => {
524
- try {
525
- provider._dataLoader._loaders.get('session')._widgetId.should.equal('_1068292');
526
- done();
527
- } catch (err) {
528
- done(err);
529
- }
530
- },
531
- err => {
532
- done(err);
533
- }
534
- );
535
- });
536
-
537
- it('should use the response KS on request with widgetId', done => {
538
- provider = new OVPProvider({partnerId, widgetId}, playerVersion);
539
- provider.getMediaConfig({entryId: '1_rwbj3j0a'}).then(
540
- () => {
541
- try {
542
- provider.ks.should.equal(BE_DATA.AnonymousMocEntryWithoutUIConfNoDrmData.response[0].ks);
543
- done();
544
- } catch (err) {
545
- done(err);
546
- }
547
- },
548
- err => {
549
- done(err);
550
- }
551
- );
552
- });
553
- });
554
-
555
- describe('getMediaConfig status check', function () {
556
- afterEach(() => {
557
- MultiRequestBuilder.prototype.execute.restore();
558
- });
559
- it('should request entryId with status in import', done => {
560
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
561
- return new Promise(resolve => {
562
- resolve({response: new MultiRequestResult(BE_DATA.EntryInImport.response)});
563
- });
564
- });
565
- provider = new OVPProvider({partnerId: 2506752}, playerVersion);
566
- provider.getMediaConfig({entryId: '0_fknc1xml'}).catch(err => {
567
- try {
568
- err.severity.should.equal(Error.Severity.CRITICAL);
569
- err.code.should.equal(Error.Code.MEDIA_STATUS_NOT_READY);
570
- done();
571
- } catch (e) {
572
- done(e);
573
- }
574
- });
575
- });
576
- it('should request entryId with status in preconvert', done => {
577
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
578
- return new Promise(resolve => {
579
- resolve({response: new MultiRequestResult(BE_DATA.EntryInPreConvert.response)});
580
- });
581
- });
582
- provider = new OVPProvider({partnerId: 2506752}, playerVersion);
583
- provider.getMediaConfig({entryId: '0_fknc1xml'}).catch(err => {
584
- try {
585
- err.severity.should.equal(Error.Severity.CRITICAL);
586
- err.code.should.equal(Error.Code.MEDIA_STATUS_NOT_READY);
587
- done();
588
- } catch (e) {
589
- done(e);
590
- }
591
- });
592
- });
593
- it('should request entryId with status ready', done => {
594
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
595
- return new Promise(resolve => {
596
- resolve({response: new MultiRequestResult(BE_DATA.EntryInReady.response)});
597
- });
598
- });
599
- provider = new OVPProvider({partnerId: 2506752}, playerVersion);
600
- provider.getMediaConfig({entryId: '0_yp010l8a'}).then(() => {
601
- done();
602
- });
603
- });
604
- });
605
-
606
- describe('getMediaConfig with bumper', function () {
607
- let provider, sandbox;
608
- const partnerId = 1091;
609
- const ks =
610
- 'YmMzNzUyZWM4ZmVkYjRiMzRlOTBlYTZjMGY2YTI1NzRkZDUwZjZjNnwxMDkxOzEwOTE7MTYwNTcyMjI5NDsyOzE2MDU2MzU4OTQuMTA0MzthdmkuYmFydWNoQGthbHR1cmEuY29tOyosZGlzYWJsZWVudGl0bGVtZW50Ozs';
611
- const playerVersion = '1.2.3';
612
-
613
- beforeEach(() => {
614
- sandbox = sinon.createSandbox();
615
- });
616
-
617
- afterEach(() => {
618
- sandbox.restore();
619
- MultiRequestBuilder.prototype.execute.restore();
620
- });
621
-
622
- it('should set the bumper plugin with no ks', done => {
623
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
624
- return new Promise(resolve => {
625
- resolve({response: new MultiRequestResult(BE_DATA.EntryWithBumper.response)});
626
- });
627
- });
628
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
629
- provider.getMediaConfig({entryId: '0_wifqaipd'}).then(
630
- mediaConfig => {
631
- try {
632
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.EntryWithBumper);
633
- done();
634
- } catch (err) {
635
- done(err);
636
- }
637
- },
638
- err => {
639
- done(err);
640
- }
641
- );
642
- });
643
-
644
- it('should set the bumper plugin with ks', done => {
645
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
646
- return new Promise(resolve => {
647
- resolve({response: new MultiRequestResult(BE_DATA.EntryWithBumperWithKs.response)});
648
- });
649
- });
650
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
651
- provider.getMediaConfig({entryId: '0_wifqaipd', ks}).then(
652
- mediaConfig => {
653
- try {
654
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.EntryWithBumperWithKs);
655
- done();
656
- } catch (err) {
657
- done(err);
658
- }
659
- },
660
- err => {
661
- done(err);
662
- }
663
- );
664
- });
665
-
666
- it('should not set the bumper plugin when no sources given', done => {
667
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
668
- return new Promise(resolve => {
669
- resolve({response: new MultiRequestResult(BE_DATA.EntryWithBumperWitNoSources.response)});
670
- });
671
- });
672
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
673
- provider.getMediaConfig({entryId: '0_wifqaipd', ks}).then(
674
- mediaConfig => {
675
- try {
676
- mediaConfig.should.deep.equal(MEDIA_CONFIG_DATA.EntryWithNoBumper);
677
- done();
678
- } catch (err) {
679
- done(err);
680
- }
681
- },
682
- err => {
683
- done(err);
684
- }
685
- );
686
- });
687
- });
688
- });
689
-
690
- describe('getPlaylistConfig', function () {
691
- let provider, sandbox;
692
- const partnerId = 1091;
693
- const ks = 'MDlkOTIzMzRhZmM4MmJmNTIwYzZkYzZhMzc0ZTRiNWI1NTRiZjNhM3wxMDkxOzEwOTE7MTU0NDc5NzcyMjswOzE1NDQ3MTEzMjIuODk2MTswO3ZpZXc6Kix3aWRnZXQ6MTs7';
694
- const playerVersion = '1.2.3';
695
-
696
- beforeEach(() => {
697
- sandbox = sinon.createSandbox();
698
- provider = new OVPProvider({partnerId}, playerVersion);
699
- });
700
-
701
- afterEach(() => {
702
- sandbox.restore();
703
- MultiRequestBuilder.prototype.execute.restore();
704
- });
705
-
706
- it('should load a playlist by id - anonymous', done => {
707
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
708
- return new Promise(resolve => {
709
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousPlaylistById.response)});
710
- });
711
- });
712
- provider.getPlaylistConfig({playlistId: '0_wckoqjnn'}).then(
713
- playlistConfig => {
714
- try {
715
- playlistConfig.id.should.equal('0_wckoqjnn');
716
- playlistConfig.items.length.should.equal(8);
717
- playlistConfig.metadata.name.should.equal('Playlist_VOD_Only');
718
- playlistConfig.metadata.description.should.equal('Playlist_VOD_Only_desc');
719
- playlistConfig.poster.should.equal('http://cdntesting.qa.mkaltura.com/p/1091/sp/0/thumbnail/entry_id/0_wckoqjnn/version/100162');
720
- done();
721
- } catch (err) {
722
- done(err);
723
- }
724
- },
725
- err => {
726
- done(err);
727
- }
728
- );
729
- });
730
-
731
- it('should load a playlist by id - with KS', done => {
732
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
733
- return new Promise(resolve => {
734
- resolve({response: new MultiRequestResult(BE_DATA.PlaylistById.response)});
735
- });
736
- });
737
- provider.getPlaylistConfig({playlistId: '0_wckoqjnn', ks}).then(
738
- playlistConfig => {
739
- try {
740
- playlistConfig.id.should.equal('0_wckoqjnn');
741
- playlistConfig.items.length.should.equal(8);
742
- playlistConfig.metadata.name.should.equal('Playlist_VOD_Only');
743
- playlistConfig.metadata.description.should.equal('Playlist_VOD_Only_desc');
744
- playlistConfig.poster.should.equal('http://cdntesting.qa.mkaltura.com/p/1091/sp/0/thumbnail/entry_id/0_wckoqjnn/version/100162');
745
- done();
746
- } catch (err) {
747
- done(err);
748
- }
749
- },
750
- err => {
751
- done(err);
752
- }
753
- );
754
- });
755
- });
756
-
757
- describe('getEntryListConfig', function () {
758
- let provider, sandbox;
759
- const partnerId = 1091;
760
- const ks = 'MGVjMWI2ZDRkNmUwNTU4ODk5MWQyZmU4NzZlMmU4OGJjYzI5OTFmYnwxMDkxOzEwOTE7MTU0NDc5NDg4NzswOzE1NDQ3MDg0ODcuOTY1OTswO3ZpZXc6Kix3aWRnZXQ6MTs7';
761
- const playerVersion = '1.2.3';
762
-
763
- beforeEach(() => {
764
- sandbox = sinon.createSandbox();
765
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
766
- });
767
-
768
- afterEach(() => {
769
- sandbox.restore();
770
- MultiRequestBuilder.prototype.execute.restore();
771
- });
772
-
773
- it('should load a playlist by entry list - anonymous', done => {
774
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
775
- return new Promise(resolve => {
776
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousPlaylistByEntryList.response)});
777
- });
778
- });
779
- provider.getEntryListConfig({entries: ['0_nwkp7jtx', {entryId: '0_wifqaipd'}, '0_p8aigvgu']}).then(
780
- entryListConfig => {
781
- try {
782
- entryListConfig.id.should.equal('');
783
- entryListConfig.items.length.should.equal(3);
784
- entryListConfig.metadata.name.should.equal('');
785
- entryListConfig.metadata.description.should.equal('');
786
- entryListConfig.poster.should.equal('');
787
- done();
788
- } catch (err) {
789
- done(err);
790
- }
791
- },
792
- err => {
793
- done(err);
794
- }
795
- );
796
- });
797
-
798
- it('should load a playlist by entry list - with KS', done => {
799
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
800
- return new Promise(resolve => {
801
- resolve({response: new MultiRequestResult(BE_DATA.PlaylistByEntryList.response)});
802
- });
803
- });
804
- provider.getEntryListConfig({entries: ['0_nwkp7jtx', {entryId: '0_wifqaipd'}, '0_p8aigvgu'], ks}).then(
805
- entryListConfig => {
806
- try {
807
- entryListConfig.id.should.equal('');
808
- entryListConfig.items.length.should.equal(3);
809
- entryListConfig.metadata.name.should.equal('');
810
- entryListConfig.metadata.description.should.equal('');
811
- entryListConfig.poster.should.equal('');
812
- done();
813
- } catch (err) {
814
- done(err);
815
- }
816
- },
817
- err => {
818
- done(err);
819
- }
820
- );
821
- });
822
-
823
- it('should load a partial playlist by entry list if some requests have an error', done => {
824
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
825
- return new Promise(resolve => {
826
- resolve({response: new MultiRequestResult([...BE_DATA.PlaylistByEntryList.response, BE_DATA.WrongEntryIDWithoutUIConf.response])});
827
- });
828
- });
829
-
830
- provider.getEntryListConfig({entries: ['0_nwkp7jtx', {entryId: '0_wifqaipd'}, '0_p8aigvgu'], ks}).then(
831
- entryListConfig => {
832
- try {
833
- entryListConfig.id.should.equal('');
834
- entryListConfig.items.length.should.equal(3);
835
- entryListConfig.metadata.name.should.equal('');
836
- entryListConfig.metadata.description.should.equal('');
837
- entryListConfig.poster.should.equal('');
838
- done();
839
- } catch (err) {
840
- done(err);
841
- }
842
- },
843
- err => {
844
- done(err);
845
- }
846
- );
847
- });
848
- });
849
-
850
- describe('getPlaybackContext', () => {
851
- let provider, sandbox;
852
- const partnerId = 1068292;
853
- const ks =
854
- 'NTAwZjViZWZjY2NjNTRkNGEyMjU1MTg4OGE1NmUwNDljZWJkMzk1MXwxMDY4MjkyOzEwNjgyOTI7MTQ5MDE3NjE0NjswOzE0OTAwODk3NDYuMDIyNjswO3ZpZXc6Kix3aWRnZXQ6MTs7';
855
- const playerVersion = '1.2.3';
856
-
857
- afterEach(() => {
858
- sandbox.restore();
859
- MultiRequestBuilder.prototype.execute.restore();
860
- });
861
-
862
- it('should request entryId token {1:result:objects:0:id} in request with valid KS', done => {
863
- sandbox = sinon.createSandbox();
864
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
865
- return new Promise(resolve => {
866
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousMocEntryWithoutUIConfWithDrmData.response)});
867
- });
868
- });
869
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
870
- provider
871
- .getMediaConfig({entryId: '1_rwbj3j0a', ks: ks})
872
- .then(() => {
873
- const getPlaybackContext = provider._dataLoader._multiRequest.requests.find(request => {
874
- return request.action === 'getPlaybackContext';
875
- });
876
- getPlaybackContext.params.entryId.should.equal('{1:result:objects:0:id}');
877
- done();
878
- })
879
- .catch(err => {
880
- done(err);
881
- });
882
- });
883
-
884
- it('should add KS to direct playbackContext', done => {
885
- sandbox = sinon.createSandbox();
886
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
887
- return new Promise(resolve => {
888
- resolve({response: new MultiRequestResult(BE_DATA.EntryDirectWithKs.response)});
889
- });
890
- });
891
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
892
- provider.getMediaConfig({entryId: '0_wifqaipd', ks: ks}).then(
893
- mediaConfig => {
894
- try {
895
- const result = mediaConfig.sources.dash.filter(source => {
896
- const ksParam = source.url.indexOf('?') === -1 ? 'ks/' : source.url.indexOf('?ks') === -1 ? '&ks=' : '?ks=';
897
- return source.url.indexOf(ksParam + ks) !== -1;
898
- });
899
- result.should.deep.equal(mediaConfig.sources.dash);
900
- done();
901
- } catch (err) {
902
- done(err);
903
- }
904
- },
905
- err => {
906
- done(err);
907
- }
908
- );
909
- });
910
-
911
- it('should add KS to external captions url', done => {
912
- sandbox = sinon.createSandbox();
913
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
914
- return new Promise(resolve => {
915
- resolve({response: new MultiRequestResult(BE_DATA.EntryExternalCaptionWithKS.response)});
916
- });
917
- });
918
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
919
- provider.getMediaConfig({entryId: '1_rwbj3j0a', ks: ks}).then(
920
- mediaConfig => {
921
- try {
922
- const result = mediaConfig.sources.captions.filter(caption => {
923
- const ksParam = caption.url.indexOf('?') === -1 ? 'ks/' : caption.url.indexOf('?ks') === -1 ? '&ks=' : '?ks=';
924
- return caption.url.indexOf(ksParam + ks) !== -1;
925
- });
926
- result.should.deep.equal(mediaConfig.sources.captions);
927
- done();
928
- } catch (err) {
929
- done(err);
930
- }
931
- },
932
- err => {
933
- done(err);
934
- }
935
- );
936
- });
937
-
938
- it('should request entryId token {2:result:objects:0:id} in request with anonymous KS', done => {
939
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
940
- return new Promise(resolve => {
941
- resolve({response: new MultiRequestResult(BE_DATA.AnonymousMocEntryWithoutUIConfNoDrmData.response)});
942
- });
943
- });
944
- provider = new OVPProvider({partnerId: 1082342}, playerVersion);
945
- provider
946
- .getMediaConfig({entryId: '1_rsrdfext'})
947
- .then(() => {
948
- const getPlaybackContext = provider._dataLoader._multiRequest.requests.find(request => {
949
- return request.action === 'getPlaybackContext';
950
- });
951
- getPlaybackContext.params.entryId.should.equal('{2:result:objects:0:id}');
952
- done();
953
- })
954
- .catch(err => {
955
- done(err);
956
- });
957
- });
958
-
959
- it('should not add KS to external captions', done => {
960
- sandbox = sinon.createSandbox();
961
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
962
- return new Promise(resolve => {
963
- resolve({response: new MultiRequestResult(BE_DATA.EntryExternalCaptionNoKS.response)});
964
- });
965
- });
966
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
967
- provider.getMediaConfig({entryId: '1_rwbj3j0a'}).then(
968
- mediaConfig => {
969
- try {
970
- const result = mediaConfig.sources.captions.filter(caption => {
971
- const ksParam = caption.url.indexOf('?') === -1 ? 'ks/' : caption.url.indexOf('?ks') === -1 ? '&ks=' : '?ks=';
972
- return caption.url.indexOf(ksParam + ks) === -1;
973
- });
974
- result.should.deep.equal(mediaConfig.sources.captions);
975
- done();
976
- } catch (err) {
977
- done(err);
978
- }
979
- },
980
- err => {
981
- done(err);
982
- }
983
- );
984
- });
985
- });
986
-
987
- describe('doRequest', () => {
988
- let provider, params, sandbox;
989
- const partnerId = 1068292;
990
- const playerVersion = '1.2.3';
991
- const ks =
992
- 'NDIxYjc3MmJhMmI1YTBhYTc1N2U2ODI0NjA4MWU0YzVhNGI3ZDQzM3wxMDY4MjkyOzEwNjgyOTI7MTYzOTM5NDk2OTsyOzE2MzkzMDg1NjkuOTg1NTtwaGlsbC5wcmljZUBkaXNuZXkuY29tOyosZGlzYWJsZWVudGl0bGVtZW50Ozs';
993
-
994
- beforeEach(() => {
995
- provider = new OVPProvider({partnerId: partnerId}, playerVersion);
996
- params = {
997
- referenceId: '',
998
- entryId: '1_rwbj3j0a',
999
- redirectFromEntryId: true,
1000
- ks: ''
1001
- };
1002
- });
1003
-
1004
- afterEach(() => {
1005
- sandbox.restore();
1006
- MultiRequestBuilder.prototype.execute.restore();
1007
- });
1008
-
1009
- it('should add session request to the multirequest and use that KS', done => {
1010
- sandbox = sinon.createSandbox();
1011
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
1012
- return new Promise(resolve => {
1013
- resolve({response: new MultiRequestResult(BE_DATA.Session.response)});
1014
- });
1015
- });
1016
- provider
1017
- .doRequest([{loader: OVPMediaEntryLoader, params}])
1018
- .then((data: Map<string, any>) => {
1019
- data.has(OVPSessionLoader.id).should.be.true;
1020
- data.get(OVPSessionLoader.id).response.should.equal(ks);
1021
- provider.isAnonymous.should.be.true;
1022
- const mediaLoader = data.get(OVPMediaEntryLoader.id);
1023
- mediaLoader._requests[1].params.ks.should.equal('{1:result:ks}');
1024
- done();
1025
- })
1026
- .catch(err => {
1027
- done(err);
1028
- });
1029
- });
1030
-
1031
- it('should use KS from provider', done => {
1032
- sandbox = sinon.createSandbox();
1033
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
1034
- return new Promise(resolve => {
1035
- resolve({response: {}});
1036
- });
1037
- });
1038
- params.ks = ks;
1039
- provider.ks = ks;
1040
- provider
1041
- .doRequest([{loader: OVPMediaEntryLoader, params}])
1042
- .then((data: Map<string, any>) => {
1043
- data.has(OVPSessionLoader.id).should.be.false;
1044
- const mediaLoader = data.get(OVPMediaEntryLoader.id);
1045
- mediaLoader._requests[0].params.ks.should.equal(provider.ks);
1046
- done();
1047
- })
1048
- .catch(err => {
1049
- done(err);
1050
- });
1051
- });
1052
-
1053
- it('should use external KS', done => {
1054
- sandbox = sinon.createSandbox();
1055
- sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function () {
1056
- return new Promise(resolve => {
1057
- resolve({response: {}});
1058
- });
1059
- });
1060
- params.ks = ks;
1061
- provider
1062
- .doRequest([{loader: OVPMediaEntryLoader, params}], ks)
1063
- .then((data: Map<string, any>) => {
1064
- provider.ks.should.equal('');
1065
- data.has(OVPSessionLoader.id).should.be.false;
1066
- provider.isAnonymous.should.be.true;
1067
- const mediaLoader = data.get(OVPMediaEntryLoader.id);
1068
- mediaLoader._requests[0].params.ks.should.equal(ks);
1069
- done();
1070
- })
1071
- .catch(err => {
1072
- done(err);
1073
- });
1074
- });
1075
- });