From 0007d0d2effaa70822d97f3956d1a15eb6e47795 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 31 May 2022 10:17:46 +0200 Subject: refactor: inject $imageResolver in EditorWrapper Signed-off-by: Max --- src/tests/nodes/ImageResolver.spec.js | 109 ------------------------------- src/tests/services/ImageResolver.spec.js | 109 +++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 109 deletions(-) delete mode 100644 src/tests/nodes/ImageResolver.spec.js create mode 100644 src/tests/services/ImageResolver.spec.js (limited to 'src/tests') diff --git a/src/tests/nodes/ImageResolver.spec.js b/src/tests/nodes/ImageResolver.spec.js deleted file mode 100644 index 4feff4f9e..000000000 --- a/src/tests/nodes/ImageResolver.spec.js +++ /dev/null @@ -1,109 +0,0 @@ -import ImageResolver from './../../nodes/ImageResolver.js' - -describe('Image resolver', () => { - - const session = { - documentId: 123, - id: 456, - token: 'mySessionToken', - } - const user = { - uid: 'user-uid', - } - - it('is a class with one constructor argument', () => { - const resolver = new ImageResolver({}) - expect(resolver).toBeInstanceOf(ImageResolver) - }) - - it('handles text:// urls via Text API', () => { - const src = 'text://image?imageFileName=group%20pic.jpg' - const resolver = new ImageResolver({ session }) - const [url] = resolver.resolve(src) - expect(url).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg') - }) - - it('handles text:// urls with token via Text API', () => { - const src = 'text://image?imageFileName=group%20pic.jpg' - const resolver = new ImageResolver({ - session, - shareToken: 'myShareToken', - }) - const [url] = resolver.resolve(src) - expect(url).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg&shareToken=myShareToken') - }) - - it('uses user auth over token auth', () => { - const src = 'text://image?imageFileName=group%20pic.jpg' - const resolver = new ImageResolver({ - session, - user, - shareToken: 'myShareToken', - }) - const [url] = resolver.resolve(src) - expect(url).not.toContain('myShareToken') - }) - - it('handles .attachments urls via Text API', () => { - const src = `.attachments.${session.documentId}/group%20pic.jpg` - const resolver = new ImageResolver({ session }) - const [url] = resolver.resolve(src) - expect(url).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg') - }) - - it('handles .attachments urls with token via Text API', () => { - const src = `.attachments.${session.documentId}/group%20pic.jpg` - const resolver = new ImageResolver({ - session, - shareToken: 'myShareToken', - }) - const [url] = resolver.resolve(src) - expect(url).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg&shareToken=myShareToken') - }) - - it('leaves urls unchanged if they can be loaded directly', () => { - const sources = [ - 'http://nextcloud.com/pic.jpg', - 'https://nextcloud.com/pic.jpg', - 'data:123456789ASDF', - '/core/preview.png?file=pic.jpg&x=1024&y=1024&a=true', - '/apps/files_sharing/publicpreview/ASDFWERASDF?x=1024&y=1024&a=true', - ] - const resolver = new ImageResolver({ }) - for (const src of sources) { - const [url] = resolver.resolve(src) - expect(url).toBe(src) - } - }) - - it('uses fileId for preview', () => { - const src = '/Media/photo.jpeg?fileId=7#mimetype=image%2Fjpeg&hasPreview=true' - const resolver = new ImageResolver({ user }) - const [url] = resolver.resolve(src) - expect(url).toContain('/core/preview?fileId=7') - }) - - it('uses fileId for public preview', () => { - const src = '/Media/photo.jpeg?fileId=7#mimetype=image%2Fjpeg&hasPreview=true' - const resolver = new ImageResolver({ shareToken: 'SHARE_TOKEN' }) - const [url] = resolver.resolve(src) - expect(url).toContain('/apps/files_sharing/publicpreview/SHARE_TOKEN?fileId=7') - }) - - it('handles old .attachments urls via webdav with text API fallback', () => { - const src = `.attachments.${session.documentId + 1}/group%20pic.jpg` - const resolver = new ImageResolver({ session, user }) - const [url, fallback] = resolver.resolve(src) - expect(url).toBe('http://localhost/nc-webroot/remote.php/dav/files/user-uid/.attachments.124/group%20pic.jpg') - expect(fallback).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg') - }) - - it.skip('handles text:// urls as a preview when missing session', () => { - const src = 'text://image?imageFileName=group%20pic.jpg' - const resolver = new ImageResolver({ - }) - const [url] = resolver.resolve(src) - expect(url).toBe('https://cloud.nextcloud.com/core/preview.png?file=Kollektive%2Ftest%20new%20collective%2F.attachments.5934333%2FFOSDEM%20group%20pic.jpg&x=1024&y=1024&a=true') - }) - -}) diff --git a/src/tests/services/ImageResolver.spec.js b/src/tests/services/ImageResolver.spec.js new file mode 100644 index 000000000..4475a47df --- /dev/null +++ b/src/tests/services/ImageResolver.spec.js @@ -0,0 +1,109 @@ +import ImageResolver from './../../services/ImageResolver.js' + +describe('Image resolver', () => { + + const session = { + documentId: 123, + id: 456, + token: 'mySessionToken', + } + const user = { + uid: 'user-uid', + } + + it('is a class with one constructor argument', () => { + const resolver = new ImageResolver({}) + expect(resolver).toBeInstanceOf(ImageResolver) + }) + + it('handles text:// urls via Text API', () => { + const src = 'text://image?imageFileName=group%20pic.jpg' + const resolver = new ImageResolver({ session }) + const [url] = resolver.resolve(src) + expect(url).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg') + }) + + it('handles text:// urls with token via Text API', () => { + const src = 'text://image?imageFileName=group%20pic.jpg' + const resolver = new ImageResolver({ + session, + shareToken: 'myShareToken', + }) + const [url] = resolver.resolve(src) + expect(url).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg&shareToken=myShareToken') + }) + + it('uses user auth over token auth', () => { + const src = 'text://image?imageFileName=group%20pic.jpg' + const resolver = new ImageResolver({ + session, + user, + shareToken: 'myShareToken', + }) + const [url] = resolver.resolve(src) + expect(url).not.toContain('myShareToken') + }) + + it('handles .attachments urls via Text API', () => { + const src = `.attachments.${session.documentId}/group%20pic.jpg` + const resolver = new ImageResolver({ session }) + const [url] = resolver.resolve(src) + expect(url).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg') + }) + + it('handles .attachments urls with token via Text API', () => { + const src = `.attachments.${session.documentId}/group%20pic.jpg` + const resolver = new ImageResolver({ + session, + shareToken: 'myShareToken', + }) + const [url] = resolver.resolve(src) + expect(url).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg&shareToken=myShareToken') + }) + + it('leaves urls unchanged if they can be loaded directly', () => { + const sources = [ + 'http://nextcloud.com/pic.jpg', + 'https://nextcloud.com/pic.jpg', + 'data:123456789ASDF', + '/core/preview.png?file=pic.jpg&x=1024&y=1024&a=true', + '/apps/files_sharing/publicpreview/ASDFWERASDF?x=1024&y=1024&a=true', + ] + const resolver = new ImageResolver({ }) + for (const src of sources) { + const [url] = resolver.resolve(src) + expect(url).toBe(src) + } + }) + + it('uses fileId for preview', () => { + const src = '/Media/photo.jpeg?fileId=7#mimetype=image%2Fjpeg&hasPreview=true' + const resolver = new ImageResolver({ user }) + const [url] = resolver.resolve(src) + expect(url).toContain('/core/preview?fileId=7') + }) + + it('uses fileId for public preview', () => { + const src = '/Media/photo.jpeg?fileId=7#mimetype=image%2Fjpeg&hasPreview=true' + const resolver = new ImageResolver({ shareToken: 'SHARE_TOKEN' }) + const [url] = resolver.resolve(src) + expect(url).toContain('/apps/files_sharing/publicpreview/SHARE_TOKEN?fileId=7') + }) + + it('handles old .attachments urls via webdav with text API fallback', () => { + const src = `.attachments.${session.documentId + 1}/group%20pic.jpg` + const resolver = new ImageResolver({ session, user }) + const [url, fallback] = resolver.resolve(src) + expect(url).toBe('http://localhost/nc-webroot/remote.php/dav/files/user-uid/.attachments.124/group%20pic.jpg') + expect(fallback).toBe('/nc-webroot/apps/text/image?documentId=123&sessionId=456&sessionToken=mySessionToken&imageFileName=group%20pic.jpg') + }) + + it.skip('handles text:// urls as a preview when missing session', () => { + const src = 'text://image?imageFileName=group%20pic.jpg' + const resolver = new ImageResolver({ + }) + const [url] = resolver.resolve(src) + expect(url).toBe('https://cloud.nextcloud.com/core/preview.png?file=Kollektive%2Ftest%20new%20collective%2F.attachments.5934333%2FFOSDEM%20group%20pic.jpg&x=1024&y=1024&a=true') + }) + +}) -- cgit v1.2.3