diff --git a/src/lib/Preview.js b/src/lib/Preview.js index 25403a5e4..f79718a9e 100644 --- a/src/lib/Preview.js +++ b/src/lib/Preview.js @@ -707,6 +707,7 @@ class Preview extends EventEmitter { preload = false, isDocFirstPrefetchEnabled = false, docFirstPagesConfig = null, + isAccessTokenHeaderEnabled = false, }) { let file; let loader; @@ -747,6 +748,10 @@ class Preview extends EventEmitter { options.sharedLinkPassword = sharedLinkPassword; options.isDocFirstPrefetchEnabled = isDocFirstPrefetchEnabled; options.docFirstPagesConfig = docFirstPagesConfig; + options.features = { + ...this.options.features, + migrateAccessTokenToHeader: isAccessTokenHeaderEnabled, + }; } const viewerInstance = new viewer.CONSTRUCTOR(this.createViewerOptions(options)); diff --git a/src/lib/__tests__/Preview-test.js b/src/lib/__tests__/Preview-test.js index 764de4115..af20988dc 100644 --- a/src/lib/__tests__/Preview-test.js +++ b/src/lib/__tests__/Preview-test.js @@ -744,6 +744,7 @@ describe('lib/Preview', () => { sharedLinkPassword, isDocFirstPrefetchEnabled: false, docFirstPagesConfig: null, + features: { migrateAccessTokenToHeader: false }, }); }); @@ -805,6 +806,43 @@ describe('lib/Preview', () => { preview.prefetch({ fileId, token, sharedLink, sharedLinkPassword, preload: true }); }); + + test('should pass migrateAccessTokenToHeader feature to viewer options when isAccessTokenHeaderEnabled is true', () => { + jest.spyOn(loader, 'determineViewer').mockReturnValue(viewer); + jest.spyOn(preview, 'createViewerOptions'); + preview.options.features = { existingFeature: true }; + + preview.prefetch({ + fileId, + token, + sharedLink, + sharedLinkPassword, + preload: true, + isAccessTokenHeaderEnabled: true, + }); + + expect(preview.createViewerOptions).toHaveBeenCalledWith( + expect.objectContaining({ + features: { existingFeature: true, migrateAccessTokenToHeader: true }, + }), + ); + expect(preview.options.features).toEqual({ existingFeature: true }); + }); + + test('should pass migrateAccessTokenToHeader=false to viewer options when isAccessTokenHeaderEnabled is false', () => { + jest.spyOn(loader, 'determineViewer').mockReturnValue(viewer); + jest.spyOn(preview, 'createViewerOptions'); + preview.options.features = { existingFeature: true }; + + preview.prefetch({ fileId, token, sharedLink, sharedLinkPassword, preload: true }); + + expect(preview.createViewerOptions).toHaveBeenCalledWith( + expect.objectContaining({ + features: { existingFeature: true, migrateAccessTokenToHeader: false }, + }), + ); + expect(preview.options.features).toEqual({ existingFeature: true }); + }); }); describe('prefetchViewers()', () => {