From 04d677f2a7f02c70e3fd6094475305fa58a50425 Mon Sep 17 00:00:00 2001 From: Roy Bregman <48884909+RoyBregman@users.noreply.github.com> Date: Mon, 13 Apr 2020 10:51:49 +0300 Subject: [PATCH] feat(FEC-8872): add provider check for entry status import and converting (#107) Added a check in OVP provider to check status 0 or 1 from the multiRequest response and throw a specific new sub error 2002 of error 7002 --- src/entities/media-entry.js | 5 + src/k-provider/ovp/provider-parser.js | 1 + src/k-provider/ovp/provider.js | 15 + .../base-entry-response-profile.js | 2 +- .../ovp/response-types/kaltura-media-entry.js | 7 + src/util/error/code.js | 6 + test/src/k-provider/ovp/be-data.js | 400 +++++++++++++++++- .../k-provider/ovp/provider-parser-data.js | 2 + test/src/k-provider/ovp/provider.spec.js | 51 +++ 9 files changed, 487 insertions(+), 2 deletions(-) diff --git a/src/entities/media-entry.js b/src/entities/media-entry.js index 3ac662f3..6655b090 100644 --- a/src/entities/media-entry.js +++ b/src/entities/media-entry.js @@ -45,6 +45,11 @@ export default class MediaEntry { * @type {number} */ dvrStatus: number; + /** + * @member - media status + * @type {number} + */ + status: number; /** * @member - media poster * @type {string | Array} diff --git a/src/k-provider/ovp/provider-parser.js b/src/k-provider/ovp/provider-parser.js index 43123335..bf5eb6da 100644 --- a/src/k-provider/ovp/provider-parser.js +++ b/src/k-provider/ovp/provider-parser.js @@ -100,6 +100,7 @@ export default class OVPProviderParser { mediaEntry.metadata.description = entry.description || ''; mediaEntry.metadata.name = entry.name || ''; mediaEntry.metadata.tags = entry.tags || ''; + mediaEntry.status = entry.status; mediaEntry.type = OVPProviderParser._getEntryType(entry.entryType, entry.type); if (mediaEntry.type === MediaEntry.Type.LIVE) { diff --git a/src/k-provider/ovp/provider.js b/src/k-provider/ovp/provider.js index b8d53b82..3238b80c 100644 --- a/src/k-provider/ovp/provider.js +++ b/src/k-provider/ovp/provider.js @@ -2,6 +2,7 @@ import getLogger from '../../util/logger'; import OVPConfiguration from './config'; import OVPProviderParser from './provider-parser'; +import KalturaMediaEntry from './response-types/kaltura-media-entry'; import OVPMediaEntryLoader from './loaders/media-entry-loader'; import OVPSessionLoader from './loaders/session-loader'; import OVPDataLoaderManager from './loaders/data-loader-manager'; @@ -120,6 +121,7 @@ export default class OVPProvider extends BaseProvider { + MultiRequestBuilder.prototype.execute.restore(); + }); + it('should request entryId with status in import', done => { + sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function() { + return new Promise(resolve => { + resolve({response: new MultiRequestResult(BE_DATA.EntryInImport.response)}); + }); + }); + provider = new OVPProvider({partnerId: 2506752}, playerVersion); + provider.getMediaConfig({entryId: '0_fknc1xml'}).catch(err => { + try { + err.severity.should.equal(Error.Severity.CRITICAL); + err.code.should.equal(Error.Code.MEDIA_STATUS_NOT_READY); + done(); + } catch (e) { + done(e); + } + }); + }); + it('should request entryId with status in preconvert', done => { + sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function() { + return new Promise(resolve => { + resolve({response: new MultiRequestResult(BE_DATA.EntryInPreConvert.response)}); + }); + }); + provider = new OVPProvider({partnerId: 2506752}, playerVersion); + provider.getMediaConfig({entryId: '0_fknc1xml'}).catch(err => { + try { + err.severity.should.equal(Error.Severity.CRITICAL); + err.code.should.equal(Error.Code.MEDIA_STATUS_NOT_READY); + done(); + } catch (e) { + done(e); + } + }); + }); + it('should request entryId with status ready', done => { + sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function() { + return new Promise(resolve => { + resolve({response: new MultiRequestResult(BE_DATA.EntryInReady.response)}); + }); + }); + provider = new OVPProvider({partnerId: 2506752}, playerVersion); + provider.getMediaConfig({entryId: '0_yp010l8a'}).then(() => { + done(); + }); + }); + }); }); describe('getPlaylistConfig', function() {