diff options
Diffstat (limited to 'src/composable/downloadBase64.test.ts')
-rw-r--r-- | src/composable/downloadBase64.test.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/composable/downloadBase64.test.ts b/src/composable/downloadBase64.test.ts new file mode 100644 index 0000000..3f2e3f7 --- /dev/null +++ b/src/composable/downloadBase64.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from 'vitest'; +import { getMimeTypeFromBase64 } from './downloadBase64'; + +describe('downloadBase64', () => { + describe('getMimeTypeFromBase64', () => { + it('when the base64 string has a data URI, it returns the mime type', () => { + expect(getMimeTypeFromBase64({ base64String: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA' })).to.deep.equal({ mimeType: 'image/png' }); + expect(getMimeTypeFromBase64({ base64String: 'data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA' })).to.deep.equal({ mimeType: 'image/jpg' }); + }); + + it('when the base64 string has no data URI, it try to infer the mime type from the signature', () => { + // https://en.wikipedia.org/wiki/List_of_file_signatures + + // PNG + expect(getMimeTypeFromBase64({ base64String: 'iVBORw0KGgoAAAANSUhEUgAAAAUA' })).to.deep.equal({ mimeType: 'image/png' }); + + // GIF + expect(getMimeTypeFromBase64({ base64String: 'R0lGODdh' })).to.deep.equal({ mimeType: 'image/gif' }); + expect(getMimeTypeFromBase64({ base64String: 'R0lGODlh' })).to.deep.equal({ mimeType: 'image/gif' }); + + // JPG + expect(getMimeTypeFromBase64({ base64String: '/9j/' })).to.deep.equal({ mimeType: 'image/jpg' }); + + // PDF + expect(getMimeTypeFromBase64({ base64String: 'JVBERi0' })).to.deep.equal({ mimeType: 'application/pdf' }); + }); + + it('when the base64 string has no data URI and no signature, it returns an undefined mimeType', () => { + expect(getMimeTypeFromBase64({ base64String: 'JVBERi' })).to.deep.equal({ mimeType: undefined }); + }); + }); +}); |