33const assert = require ( 'node:assert' ) ;
44const fs = require ( 'node:fs' ) ;
55const path = require ( 'node:path' ) ;
6- const temp = require ( 'fs-temp' ) ;
7- const rimraf = require ( 'rimraf' ) ;
6+ const { promisify } = require ( 'node:util' ) ;
7+ const temp = require ( 'fix-esm' ) . require ( 'fs-temp' ) . default ;
8+ const { rimraf } = require ( 'rimraf' ) ;
89const FormData = require ( 'form-data' ) ;
910const multer = require ( '..' ) ;
1011const util = require ( './_util' ) ;
1112
13+ const tempMkdirAsync = promisify ( temp . mkdir ) ;
14+
1215describe ( 'Disk Storage' , ( ) => {
1316 let uploadDir ;
1417 let upload ;
1518
16- beforeEach ( ( done ) => {
17- temp . mkdir ( ( err , path ) => {
18- if ( err ) return done ( err ) ;
19-
20- uploadDir = path ;
21- upload = multer ( { dest : path } ) ;
22- done ( ) ;
23- } ) ;
19+ beforeEach ( async ( ) => {
20+ uploadDir = await tempMkdirAsync ( ) ;
21+ upload = multer ( { dest : uploadDir } ) ;
2422 } ) ;
2523
26- afterEach ( ( done ) => {
27- rimraf ( uploadDir , done ) ;
24+ afterEach ( async ( ) => {
25+ await rimraf ( uploadDir ) ;
2826 } ) ;
2927
30- it ( 'should process parser/form-data POST request' , ( done ) => {
28+ it ( 'should process parser/form-data POST request' , async ( ) => {
3129 const form = new FormData ( ) ;
3230 const parser = upload . single ( 'small0' ) ;
3331
3432 form . append ( 'name' , 'Multer' ) ;
3533 form . append ( 'small0' , util . file ( 'small0.dat' ) ) ;
3634
37- util . submitForm ( parser , form , ( err , req ) => {
38- assert . ifError ( err ) ;
39-
40- assert . equal ( req . body . name , 'Multer' ) ;
35+ const req = await util . submitForm ( parser , form ) ;
4136
42- assert . equal ( req . file . fieldname , 'small0' ) ;
43- assert . equal ( req . file . originalname , 'small0.dat' ) ;
44- assert . equal ( req . file . size , 1778 ) ;
45- assert . equal ( util . fileSize ( req . file . path ) , 1778 ) ;
37+ assert . equal ( req . body . name , 'Multer' ) ;
4638
47- done ( ) ;
48- } ) ;
39+ assert . equal ( req . file . fieldname , 'small0' ) ;
40+ assert . equal ( req . file . originalname , 'small0.dat' ) ;
41+ assert . equal ( req . file . size , 1778 ) ;
42+ assert . equal ( util . fileSize ( req . file . path ) , 1778 ) ;
4943 } ) ;
5044
51- it ( 'should process empty fields and an empty file' , ( done ) => {
45+ it ( 'should process empty fields and an empty file' , async ( ) => {
5246 const form = new FormData ( ) ;
5347 const parser = upload . single ( 'empty' ) ;
5448
@@ -63,27 +57,23 @@ describe('Disk Storage', () => {
6357 form . append ( 'checkboxempty' , '' ) ;
6458 form . append ( 'checkboxempty' , '' ) ;
6559
66- util . submitForm ( parser , form , ( err , req ) => {
67- assert . ifError ( err ) ;
60+ const req = await util . submitForm ( parser , form ) ;
6861
69- assert . equal ( req . body . name , 'Multer' ) ;
70- assert . equal ( req . body . version , '' ) ;
71- assert . equal ( req . body . year , '' ) ;
62+ assert . equal ( req . body . name , 'Multer' ) ;
63+ assert . equal ( req . body . version , '' ) ;
64+ assert . equal ( req . body . year , '' ) ;
7265
73- assert . deepEqual ( req . body . checkboxfull , [ 'cb1' , 'cb2' ] ) ;
74- assert . deepEqual ( req . body . checkboxhalfempty , [ 'cb1' , '' ] ) ;
75- assert . deepEqual ( req . body . checkboxempty , [ '' , '' ] ) ;
66+ assert . deepEqual ( req . body . checkboxfull , [ 'cb1' , 'cb2' ] ) ;
67+ assert . deepEqual ( req . body . checkboxhalfempty , [ 'cb1' , '' ] ) ;
68+ assert . deepEqual ( req . body . checkboxempty , [ '' , '' ] ) ;
7669
77- assert . equal ( req . file . fieldname , 'empty' ) ;
78- assert . equal ( req . file . originalname , 'empty.dat' ) ;
79- assert . equal ( req . file . size , 0 ) ;
80- assert . equal ( util . fileSize ( req . file . path ) , 0 ) ;
81-
82- done ( ) ;
83- } ) ;
70+ assert . equal ( req . file . fieldname , 'empty' ) ;
71+ assert . equal ( req . file . originalname , 'empty.dat' ) ;
72+ assert . equal ( req . file . size , 0 ) ;
73+ assert . equal ( util . fileSize ( req . file . path ) , 0 ) ;
8474 } ) ;
8575
86- it ( 'should process multiple files' , ( done ) => {
76+ it ( 'should process multiple files' , async ( ) => {
8777 const form = new FormData ( ) ;
8878 const parser = upload . fields ( [
8979 { name : 'empty' , maxCount : 1 } ,
@@ -103,70 +93,65 @@ describe('Disk Storage', () => {
10393 form . append ( 'medium' , util . file ( 'medium.dat' ) ) ;
10494 form . append ( 'large' , util . file ( 'large.jpg' ) ) ;
10595
106- util . submitForm ( parser , form , ( err , req ) => {
107- assert . ifError ( err ) ;
108-
109- assert . deepEqual ( req . body , { } ) ;
110-
111- assert . equal ( req . files . empty [ 0 ] . fieldname , 'empty' ) ;
112- assert . equal ( req . files . empty [ 0 ] . originalname , 'empty.dat' ) ;
113- assert . equal ( req . files . empty [ 0 ] . size , 0 ) ;
114- assert . equal ( util . fileSize ( req . files . empty [ 0 ] . path ) , 0 ) ;
115-
116- assert . equal ( req . files . tiny0 [ 0 ] . fieldname , 'tiny0' ) ;
117- assert . equal ( req . files . tiny0 [ 0 ] . originalname , 'tiny0.dat' ) ;
118- assert . equal ( req . files . tiny0 [ 0 ] . size , 122 ) ;
119- assert . equal ( util . fileSize ( req . files . tiny0 [ 0 ] . path ) , 122 ) ;
120-
121- assert . equal ( req . files . tiny1 [ 0 ] . fieldname , 'tiny1' ) ;
122- assert . equal ( req . files . tiny1 [ 0 ] . originalname , 'tiny1.dat' ) ;
123- assert . equal ( req . files . tiny1 [ 0 ] . size , 7 ) ;
124- assert . equal ( util . fileSize ( req . files . tiny1 [ 0 ] . path ) , 7 ) ;
125-
126- assert . equal ( req . files . small0 [ 0 ] . fieldname , 'small0' ) ;
127- assert . equal ( req . files . small0 [ 0 ] . originalname , 'small0.dat' ) ;
128- assert . equal ( req . files . small0 [ 0 ] . size , 1778 ) ;
129- assert . equal ( util . fileSize ( req . files . small0 [ 0 ] . path ) , 1778 ) ;
130-
131- assert . equal ( req . files . small1 [ 0 ] . fieldname , 'small1' ) ;
132- assert . equal ( req . files . small1 [ 0 ] . originalname , 'small1.dat' ) ;
133- assert . equal ( req . files . small1 [ 0 ] . size , 315 ) ;
134- assert . equal ( util . fileSize ( req . files . small1 [ 0 ] . path ) , 315 ) ;
135-
136- assert . equal ( req . files . medium [ 0 ] . fieldname , 'medium' ) ;
137- assert . equal ( req . files . medium [ 0 ] . originalname , 'medium.dat' ) ;
138- assert . equal ( req . files . medium [ 0 ] . size , 13196 ) ;
139- assert . equal ( util . fileSize ( req . files . medium [ 0 ] . path ) , 13196 ) ;
140-
141- assert . equal ( req . files . large [ 0 ] . fieldname , 'large' ) ;
142- assert . equal ( req . files . large [ 0 ] . originalname , 'large.jpg' ) ;
143- assert . equal ( req . files . large [ 0 ] . size , 2413677 ) ;
144- assert . equal ( util . fileSize ( req . files . large [ 0 ] . path ) , 2413677 ) ;
145-
146- done ( ) ;
147- } ) ;
96+ const req = await util . submitForm ( parser , form ) ;
97+ assert . deepEqual ( req . body , { } ) ;
98+
99+ assert . equal ( req . files . empty [ 0 ] . fieldname , 'empty' ) ;
100+ assert . equal ( req . files . empty [ 0 ] . originalname , 'empty.dat' ) ;
101+ assert . equal ( req . files . empty [ 0 ] . size , 0 ) ;
102+ assert . equal ( util . fileSize ( req . files . empty [ 0 ] . path ) , 0 ) ;
103+
104+ assert . equal ( req . files . tiny0 [ 0 ] . fieldname , 'tiny0' ) ;
105+ assert . equal ( req . files . tiny0 [ 0 ] . originalname , 'tiny0.dat' ) ;
106+ assert . equal ( req . files . tiny0 [ 0 ] . size , 122 ) ;
107+ assert . equal ( util . fileSize ( req . files . tiny0 [ 0 ] . path ) , 122 ) ;
108+
109+ assert . equal ( req . files . tiny1 [ 0 ] . fieldname , 'tiny1' ) ;
110+ assert . equal ( req . files . tiny1 [ 0 ] . originalname , 'tiny1.dat' ) ;
111+ assert . equal ( req . files . tiny1 [ 0 ] . size , 7 ) ;
112+ assert . equal ( util . fileSize ( req . files . tiny1 [ 0 ] . path ) , 7 ) ;
113+
114+ assert . equal ( req . files . small0 [ 0 ] . fieldname , 'small0' ) ;
115+ assert . equal ( req . files . small0 [ 0 ] . originalname , 'small0.dat' ) ;
116+ assert . equal ( req . files . small0 [ 0 ] . size , 1778 ) ;
117+ assert . equal ( util . fileSize ( req . files . small0 [ 0 ] . path ) , 1778 ) ;
118+
119+ assert . equal ( req . files . small1 [ 0 ] . fieldname , 'small1' ) ;
120+ assert . equal ( req . files . small1 [ 0 ] . originalname , 'small1.dat' ) ;
121+ assert . equal ( req . files . small1 [ 0 ] . size , 315 ) ;
122+ assert . equal ( util . fileSize ( req . files . small1 [ 0 ] . path ) , 315 ) ;
123+
124+ assert . equal ( req . files . medium [ 0 ] . fieldname , 'medium' ) ;
125+ assert . equal ( req . files . medium [ 0 ] . originalname , 'medium.dat' ) ;
126+ assert . equal ( req . files . medium [ 0 ] . size , 13196 ) ;
127+ assert . equal ( util . fileSize ( req . files . medium [ 0 ] . path ) , 13196 ) ;
128+
129+ assert . equal ( req . files . large [ 0 ] . fieldname , 'large' ) ;
130+ assert . equal ( req . files . large [ 0 ] . originalname , 'large.jpg' ) ;
131+ assert . equal ( req . files . large [ 0 ] . size , 2413677 ) ;
132+ assert . equal ( util . fileSize ( req . files . large [ 0 ] . path ) , 2413677 ) ;
148133 } ) ;
149134
150- it ( 'should remove uploaded files on error' , ( done ) => {
135+ it ( 'should remove uploaded files on error' , async ( ) => {
151136 const form = new FormData ( ) ;
152137 const parser = upload . single ( 'tiny0' ) ;
153138
154139 form . append ( 'tiny0' , util . file ( 'tiny0.dat' ) ) ;
155140 form . append ( 'small0' , util . file ( 'small0.dat' ) ) ;
156141
157- util . submitForm ( parser , form , ( err , req ) => {
142+ try {
143+ await util . submitForm ( parser , form ) ;
144+ } catch ( err ) {
158145 assert . equal ( err . code , 'LIMIT_UNEXPECTED_FILE' ) ;
159146 assert . equal ( err . field , 'small0' ) ;
160147 assert . deepEqual ( err . storageErrors , [ ] ) ;
161148
162149 const files = fs . readdirSync ( uploadDir ) ;
163150 assert . deepEqual ( files , [ ] ) ;
164-
165- done ( ) ;
166- } ) ;
151+ }
167152 } ) ;
168153
169- it ( "should report error when directory doesn't exist" , ( done ) => {
154+ it ( "should report error when directory doesn't exist" , async ( ) => {
170155 const directory = path . join ( temp . mkdirSync ( ) , 'ghost' ) ;
171156 function dest ( $0 , $1 , cb ) {
172157 cb ( null , directory ) ;
@@ -179,11 +164,11 @@ describe('Disk Storage', () => {
179164
180165 form . append ( 'tiny0' , util . file ( 'tiny0.dat' ) ) ;
181166
182- util . submitForm ( parser , form , ( err , req ) => {
167+ try {
168+ await util . submitForm ( parser , form ) ;
169+ } catch ( err ) {
183170 assert . equal ( err . code , 'ENOENT' ) ;
184171 assert . equal ( path . dirname ( err . path ) , directory ) ;
185-
186- done ( ) ;
187- } ) ;
172+ }
188173 } ) ;
189174} ) ;
0 commit comments