diff --git a/src/modules/system/index.ts b/src/modules/system/index.ts index cfa9c04e6b6..18e55897cb2 100644 --- a/src/modules/system/index.ts +++ b/src/modules/system/index.ts @@ -1,3 +1,4 @@ +import { FakerError } from '../../errors/faker-error'; import { ModuleBase } from '../../internal/module-base'; const commonFileTypes = ['video', 'audio', 'image', 'text', 'application']; @@ -175,7 +176,12 @@ export class SystemModule extends ModuleBase { const mimeTypes = this.faker.definitions.system.mime_type; if (typeof mimeType === 'string') { - return this.faker.helpers.arrayElement(mimeTypes[mimeType].extensions); + const entry = mimeTypes[mimeType]; + if (entry == null) { + throw new FakerError(`MIME type ${mimeType} is not supported.`); + } + + return this.faker.helpers.arrayElement(entry.extensions); } const extensionSet = new Set( diff --git a/test/modules/system.spec.ts b/test/modules/system.spec.ts index 1e3ff79bf89..6139e33529e 100644 --- a/test/modules/system.spec.ts +++ b/test/modules/system.spec.ts @@ -1,6 +1,6 @@ import { isMimeType, isSemVer } from 'validator'; import { describe, expect, it } from 'vitest'; -import { faker } from '../../src'; +import { FakerError, faker } from '../../src'; import { seededTests } from '../support/seeded-runs'; import { times } from './../support/times'; @@ -190,6 +190,12 @@ describe('system', () => { )}]. Got "${actual}".` ).include(actual); }); + + it('should throw for unsupported mimeType', () => { + expect(() => faker.system.fileExt('application/not-real')).toThrow( + new FakerError('MIME type application/not-real is not supported.') + ); + }); }); describe('fileName()', () => {