payload
Version:
Node, React, Headless CMS and Application Framework built on Next.js
83 lines (82 loc) • 2.95 kB
JavaScript
import { mimeTypeValidator } from './mimeTypeValidator';
const options = {
siblingData: {
filename: 'file.xyz'
}
};
describe('mimeTypeValidator', ()=>{
it('should validate single mimeType', ()=>{
const mimeTypes = [
'image/png'
];
const validate = mimeTypeValidator(mimeTypes);
expect(validate('image/png', options)).toBe(true);
});
it('should validate multiple mimeTypes', ()=>{
const mimeTypes = [
'image/png',
'application/pdf'
];
const validate = mimeTypeValidator(mimeTypes);
expect(validate('image/png', options)).toBe(true);
expect(validate('application/pdf', options)).toBe(true);
});
it('should validate using wildcard', ()=>{
const mimeTypes = [
'image/*'
];
const validate = mimeTypeValidator(mimeTypes);
expect(validate('image/png', options)).toBe(true);
expect(validate('image/gif', options)).toBe(true);
});
it('should validate multiple wildcards', ()=>{
const mimeTypes = [
'image/*',
'audio/*'
];
const validate = mimeTypeValidator(mimeTypes);
expect(validate('image/png', options)).toBe(true);
expect(validate('audio/mpeg', options)).toBe(true);
});
it('should not validate when unmatched', ()=>{
const mimeTypes = [
'image/png'
];
const validate = mimeTypeValidator(mimeTypes);
expect(validate('audio/mpeg', options)).toBe("Invalid file type: 'audio/mpeg'");
});
it('should not validate when unmatched - multiple mimeTypes', ()=>{
const mimeTypes = [
'image/png',
'application/pdf'
];
const validate = mimeTypeValidator(mimeTypes);
expect(validate('audio/mpeg', options)).toBe("Invalid file type: 'audio/mpeg'");
});
it('should not validate using wildcard - unmatched', ()=>{
const mimeTypes = [
'image/*'
];
const validate = mimeTypeValidator(mimeTypes);
expect(validate('audio/mpeg', options)).toBe("Invalid file type: 'audio/mpeg'");
});
it('should not validate multiple wildcards - unmatched', ()=>{
const mimeTypes = [
'image/*',
'audio/*'
];
const validate = mimeTypeValidator(mimeTypes);
expect(validate('video/mp4', options)).toBe("Invalid file type: 'video/mp4'");
expect(validate('application/pdf', options)).toBe("Invalid file type: 'application/pdf'");
});
it('should not error when mimeType is missing', ()=>{
const mimeTypes = [
'image/*',
'application/pdf'
];
const validate = mimeTypeValidator(mimeTypes);
let value;
expect(validate(value, options)).toBe('Invalid file type');
});
});
//# sourceMappingURL=mimeTypeValidator.spec.js.map