@@ -185,4 +185,35 @@ describe('Uploads createFromBuffer unit tests:', () => {
185185
186186 expect ( mockGridfs . createFromBuffer ) . not . toHaveBeenCalled ( ) ;
187187 } ) ;
188+
189+ test ( 'should fallback to bin extension for unmapped MIME types' , async ( ) => {
190+ mockConfig . uploads . generic = {
191+ kind : 'generic' ,
192+ formats : [ 'application/octet-stream' ] ,
193+ limits : { fileSize : 1 * 1024 * 1024 } ,
194+ } ;
195+ mockGridfs . createFromBuffer . mockResolvedValue ( { ...fakeFile , contentType : 'application/octet-stream' } ) ;
196+
197+ const buffer = Buffer . alloc ( 512 ) ;
198+ await UploadsService . createFromBuffer ( buffer , 'application/octet-stream' , 'generic' ) ;
199+
200+ const [ , filename ] = mockGridfs . createFromBuffer . mock . calls [ 0 ] ;
201+ expect ( filename ) . toMatch ( / ^ [ a - f 0 - 9 ] { 64 } \. b i n $ / ) ;
202+ } ) ;
203+
204+ test ( 'should fallback to bin extension when config extension contains invalid characters' , async ( ) => {
205+ mockConfig . uploads . mimeTypes = { 'application/x-tar' : 'tar.gz' } ;
206+ mockConfig . uploads . archive = {
207+ kind : 'archive' ,
208+ formats : [ 'application/x-tar' ] ,
209+ limits : { fileSize : 10 * 1024 * 1024 } ,
210+ } ;
211+ mockGridfs . createFromBuffer . mockResolvedValue ( { ...fakeFile , contentType : 'application/x-tar' } ) ;
212+
213+ const buffer = Buffer . alloc ( 512 ) ;
214+ await UploadsService . createFromBuffer ( buffer , 'application/x-tar' , 'archive' ) ;
215+
216+ const [ , filename ] = mockGridfs . createFromBuffer . mock . calls [ 0 ] ;
217+ expect ( filename ) . toMatch ( / ^ [ a - f 0 - 9 ] { 64 } \. b i n $ / ) ;
218+ } ) ;
188219} ) ;
0 commit comments