aboutsummaryrefslogtreecommitdiff
path: root/src/composable/downloadBase64.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/composable/downloadBase64.test.ts')
-rw-r--r--src/composable/downloadBase64.test.ts32
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 });
+ });
+ });
+});