UNPKG

@uploadcare/blocks

Version:

Building blocks for Uploadcare products integration

186 lines (162 loc) 8.08 kB
import { expect } from '@esm-bundle/chai'; import { normalizeCdnOperation, joinCdnOperations, createCdnUrlModifiers, createCdnUrl, createOriginalUrl, extractFilename, trimFilename, } from './cdn-utils.js'; const falsyValues = ['', undefined, null, false, true, 0, 10]; describe('cdn-utils/normalizeCdnOperation', () => { it('should remove trailing and leading delimeters', () => { expect(normalizeCdnOperation('scale_crop/1x1/center')).to.eq('scale_crop/1x1/center'); expect(normalizeCdnOperation('/scale_crop/1x1/center/')).to.eq('scale_crop/1x1/center'); expect(normalizeCdnOperation('-/scale_crop/1x1/center/')).to.eq('scale_crop/1x1/center'); }); it('should return empty string if falsy value is passed', () => { for (let val of falsyValues) { expect(normalizeCdnOperation(val)).to.eq(''); } }); }); describe('cdn-utils/joinCdnOperations', () => { it('should remove trailing and leading delimeters', () => { expect(joinCdnOperations('scale_crop/1x1/center', 'resize')).to.eq('scale_crop/1x1/center/-/resize'); expect(joinCdnOperations('/scale_crop/1x1/center/', '/resize/')).to.eq('scale_crop/1x1/center/-/resize'); expect(joinCdnOperations('-/scale_crop/1x1/center/', '-/resize/')).to.eq('scale_crop/1x1/center/-/resize'); expect(joinCdnOperations('-/scale_crop/1x1/center/', '-/resize/100x/')).to.eq( 'scale_crop/1x1/center/-/resize/100x' ); }); it('should return empty string if falsy values are passed', () => { expect(joinCdnOperations(...falsyValues)).to.eq(''); expect(joinCdnOperations('scale_crop/1x1/center', ...falsyValues, 'resize/100x')).to.eq( 'scale_crop/1x1/center/-/resize/100x' ); }); }); describe('cdn-utils/createCdnUrlModifiers', () => { it('should make cdn operations string that could be concatendated with domain', () => { expect(createCdnUrlModifiers('scale_crop/1x1/center', 'resize')).to.eq('-/scale_crop/1x1/center/-/resize/'); }); it('should add trailing/leading slash and leading delimeter', () => { expect(createCdnUrlModifiers('scale_crop/1x1/center', 'resize')).to.eq('-/scale_crop/1x1/center/-/resize/'); expect(createCdnUrlModifiers('/scale_crop/1x1/center/', '/resize/')).to.eq('-/scale_crop/1x1/center/-/resize/'); expect(createCdnUrlModifiers('-/scale_crop/1x1/center/', '-/resize/')).to.eq('-/scale_crop/1x1/center/-/resize/'); expect(createCdnUrlModifiers('-/scale_crop/1x1/center/', '-/resize/100x/')).to.eq( '-/scale_crop/1x1/center/-/resize/100x/' ); }); it('return empty string if nothing is passed', () => { expect(createCdnUrlModifiers(...falsyValues)).to.eq(''); expect(createCdnUrlModifiers('scale_crop/1x1/center', ...falsyValues, 'resize')).to.eq( '-/scale_crop/1x1/center/-/resize/' ); }); }); describe('cdn-utils/createCdnUrl', () => { it('should concatenate baseCdnUrl with cdnModifiers', () => { expect(createCdnUrl('https://ucarecdn.com/:uuid/', '-/scale_crop/1x1/center/')).to.eq( 'https://ucarecdn.com/:uuid/-/scale_crop/1x1/center/' ); }); it('should accept filename passed as argument', () => { expect(createCdnUrl('https://ucarecdn.com/', '-/scale_crop/1x1/center/', 'image.jpeg')).to.eq( 'https://ucarecdn.com/-/scale_crop/1x1/center/image.jpeg' ); expect( createCdnUrl('https://domain.ucr.io:8080/', '-/scale_crop/1x1/center/', 'https://domain.com/image.jpg?q=1#hash') ).to.eq('https://domain.ucr.io:8080/-/scale_crop/1x1/center/https://domain.com/image.jpg?q=1#hash'); }); it('should extract filename from baseCdnUrl and append it to the result', () => { expect(createCdnUrl('https://ucarecdn.com/:uuid/image.jpeg', '-/scale_crop/1x1/center/')).to.eq( 'https://ucarecdn.com/:uuid/-/scale_crop/1x1/center/image.jpeg' ); expect( createCdnUrl('https://domain.ucr.io:8080/https://domain.com/image.jpg?q=1#hash', '-/scale_crop/1x1/center/') ).to.eq('https://domain.ucr.io:8080/-/scale_crop/1x1/center/https://domain.com/image.jpg?q=1#hash'); }); it('should override filename from baseCdnUrl with provided', () => { expect(createCdnUrl('https://ucarecdn.com/:uuid/image.jpeg', '-/scale_crop/1x1/center/', 'override.jpeg')).to.eq( 'https://ucarecdn.com/:uuid/-/scale_crop/1x1/center/override.jpeg' ); expect( createCdnUrl( 'https://domain.ucr.io:8080/https://domain.com/image.jpg?q=1#hash', '-/scale_crop/1x1/center/', 'https://domain.com/override.jpg?q=2' ) ).to.eq('https://domain.ucr.io:8080/-/scale_crop/1x1/center/https://domain.com/override.jpg?q=2'); }); it('should keep cdn modifiers in the baseCdnUrl', () => { expect(createCdnUrl('https://ucarecdn.com/:uuid/-/resize/10x/', '-/scale_crop/1x1/center/')).to.eq( 'https://ucarecdn.com/:uuid/-/resize/10x/-/scale_crop/1x1/center/' ); expect( createCdnUrl( 'https://domain.ucr.io:8080/-/resize/10x/https://domain.com/image.jpg?q=1#hash', '-/scale_crop/1x1/center/' ) ).to.eq('https://domain.ucr.io:8080/-/resize/10x/-/scale_crop/1x1/center/https://domain.com/image.jpg?q=1#hash'); }); it('should add missing trailing slash to the base url', () => { expect(createCdnUrl('https://ucarecdn.com', '-/scale_crop/1x1/center/')).to.eq( 'https://ucarecdn.com/-/scale_crop/1x1/center/' ); }); }); describe('cdn-utils/createOriginalUrl', () => { it('should concatenate cdnBase and uuid', () => { expect(createOriginalUrl('https://ucarecdn.com/', ':uuid')).to.eq('https://ucarecdn.com/:uuid/'); }); it('should trim any pathname from cdnBase', () => { expect(createOriginalUrl('https://ucarecdn.com/:old-uuid/-/resize/10x/', ':new-uuid')).to.eq( 'https://ucarecdn.com/:new-uuid/' ); }); it('should add trailing slash to the base url', () => { expect(createOriginalUrl('https://ucarecdn.com', ':uuid')).to.eq('https://ucarecdn.com/:uuid/'); }); }); describe('cdn-utils/extractFilename', () => { it('should extract filename or file url', () => { expect(extractFilename('https://ucarecdn.com/:uuid/image.jpeg')).to.eq('image.jpeg'); expect(extractFilename('https://ucarecdn.com/:uuid/-/resize/100x/image.jpeg')).to.eq('image.jpeg'); expect(extractFilename('https://domain.ucr.io:8080/https://domain.com/image.jpg?q=1#hash')).to.eq( 'https://domain.com/image.jpg?q=1#hash' ); expect(extractFilename('https://domain.ucr.io:8080/-/resize/100x/https://domain.com/image.jpg?q=1#hash')).to.eq( 'https://domain.com/image.jpg?q=1#hash' ); }); it('should return empty string if no filename found', () => { expect(extractFilename('https://ucarecdn.com')).to.eq(''); expect(extractFilename('https://ucarecdn.com/')).to.eq(''); expect(extractFilename('https://ucarecdn.com/:uuid/')).to.eq(''); expect(extractFilename('https://ucarecdn.com/:uuid/-/resize/100x/')).to.eq(''); }); }); describe('cdn-utils/trimFilename', () => { it('should trim filename or file url', () => { expect(trimFilename('https://ucarecdn.com/:uuid/image.jpeg')).to.eq('https://ucarecdn.com/:uuid/'); expect(trimFilename('https://ucarecdn.com/:uuid/-/resize/100x/image.jpeg')).to.eq( 'https://ucarecdn.com/:uuid/-/resize/100x/' ); expect(trimFilename('https://domain.ucr.io:8080/https://domain.com/image.jpg?q=1#hash')).to.eq( 'https://domain.ucr.io:8080/' ); expect(trimFilename('https://domain.ucr.io:8080/-/resize/https://domain.com/image.jpg?q=1#hash')).to.eq( 'https://domain.ucr.io:8080/-/resize/' ); }); it('should return original string if no filename found', () => { expect(trimFilename('https://ucarecdn.com')).to.eq('https://ucarecdn.com/'); expect(trimFilename('https://ucarecdn.com/')).to.eq('https://ucarecdn.com/'); expect(trimFilename('https://ucarecdn.com/:uuid/')).to.eq('https://ucarecdn.com/:uuid/'); expect(trimFilename('https://ucarecdn.com/:uuid/-/resize/100x/')).to.eq( 'https://ucarecdn.com/:uuid/-/resize/100x/' ); }); });