tinfo-web-server / test /uploadMiddleware.test.js
Faridaqurr
initial backend
e8c33fa
Raw
History Blame Contribute Delete
1.33 kB
const test = require('node:test');
const assert = require('node:assert/strict');
const path = require('path');
test('getFileKindChecker rejects svg mime type', () => {
const IMAGE_EXTENSIONS = new Set(['jpg', 'jpeg', 'png', 'webp']);
const IMAGE_MIME_TYPES = new Set(['image/jpeg', 'image/jpg', 'image/png', 'image/x-png', 'image/webp']);
const isImageAllowed = (file) => {
const ext = path.extname(file.originalname || '').toLowerCase().replace('.', '');
const mime = String(file.mimetype || '').toLowerCase();
return IMAGE_EXTENSIONS.has(ext) && IMAGE_MIME_TYPES.has(mime);
};
assert.equal(isImageAllowed({ originalname: 'evil.svg', mimetype: 'image/svg+xml' }), false, 'SVG must be rejected');
assert.equal(isImageAllowed({ originalname: 'photo.jpg', mimetype: 'image/jpeg' }), true, 'JPEG must be allowed');
assert.equal(isImageAllowed({ originalname: 'photo.png', mimetype: 'image/png' }), true, 'PNG must be allowed');
});
test('createUpload is a function that returns multer middleware', () => {
const createUpload = require('../middleware/uploadMiddleware');
assert.equal(typeof createUpload, 'function', 'createUpload must be a function');
const upload = createUpload({ kind: 'image' });
assert.equal(typeof upload.single, 'function', 'returned object must have .single method');
});