@@ -195,41 +195,14 @@ func TestRequestSchemeDerived(t *testing.T) {
195
195
assert .Equal (t , "http" , scheme4 )
196
196
}
197
197
198
- func createRequestWithHost (host , remote string ) * http.Request {
199
- return & http.Request {Host : host , RemoteAddr : remote , Header : http.Header {}}
200
- }
201
-
202
- func setUpRequestSaveFile (t * testing.T ) (* Request , string , func ()) {
203
- buf := new (bytes.Buffer )
204
- multipartWriter := multipart .NewWriter (buf )
205
- _ , err := multipartWriter .CreateFormFile ("framework" , "aah" )
206
- assert .Nil (t , err )
207
-
208
- ess .CloseQuietly (multipartWriter )
209
-
210
- req , _ := http .NewRequest ("POST" , "http://localhost:8080" , buf )
211
- req .Header .Add (HeaderContentType , multipartWriter .FormDataContentType ())
212
- aahReq := AcquireRequest (req )
213
- aahReq .Params .File = make (map [string ][]* multipart.FileHeader )
214
-
215
- _ , header , err := req .FormFile ("framework" )
216
- assert .Nil (t , err )
217
-
218
- aahReq .Params .File ["framework" ] = []* multipart.FileHeader {header }
219
-
220
- path := "testdata/aah.txt"
221
-
222
- return aahReq , path , func () {
223
- _ = os .Remove (path ) //Teardown
224
- }
225
- }
226
-
227
198
func TestRequestSaveFile (t * testing.T ) {
228
199
aahReq , path , teardown := setUpRequestSaveFile (t )
229
200
defer teardown ()
230
201
231
- assert .Nil (t , aahReq .SaveFile ("framework" , path ))
232
- _ , err := os .Stat (path )
202
+ size , err := aahReq .SaveFile ("framework" , path )
203
+ assert .Nil (t , err )
204
+ assert .Equal (t , int64 (0 ), size )
205
+ _ , err = os .Stat (path )
233
206
assert .Nil (t , err )
234
207
}
235
208
@@ -238,64 +211,46 @@ func TestRequestSaveFileFailsValidation(t *testing.T) {
238
211
defer teardown ()
239
212
240
213
// Empty keys should error out
241
- assert .NotNil (t , aahReq .SaveFile ("" , path ))
214
+ _ , err := aahReq .SaveFile ("" , path )
215
+ assert .NotNil (t , err )
216
+ assert .Equal (t , "ahttp: key or dstFile is empty" , err .Error ())
242
217
243
218
// Empty path should error out
244
- assert .NotNil (t , aahReq .SaveFile ("framework" , "" ))
219
+ _ , err = aahReq .SaveFile ("framework" , "" )
220
+ assert .NotNil (t , err )
221
+ assert .Equal (t , "ahttp: key or dstFile is empty" , err .Error ())
245
222
246
223
// If "path" is a directory, it should error out
247
- assert .NotNil (t , aahReq .SaveFile ("framework" , "testdata" ))
224
+ _ , err = aahReq .SaveFile ("framework" , "testdata" )
225
+ assert .NotNil (t , err )
226
+ assert .Equal (t , "ahttp: dstFile should not be a directory" , err .Error ())
248
227
}
249
228
250
229
func TestRequestSaveFileFailsForNotFoundFile (t * testing.T ) {
251
230
aahReq , path , teardown := setUpRequestSaveFile (t )
252
231
defer teardown ()
253
232
254
- assert .NotNil (t , aahReq .SaveFile ("unknown-key" , path ))
233
+ _ , err := aahReq .SaveFile ("unknown-key" , path )
234
+ assert .NotNil (t , err )
235
+ assert .Equal (t , "ahttp: no such key/file: unknown-key" , err .Error ())
255
236
}
256
237
257
238
func TestRequestSaveFileCannotCreateFile (t * testing.T ) {
258
239
aahReq , _ , teardown := setUpRequestSaveFile (t )
259
240
defer teardown ()
260
241
261
- assert .NotNil (t , aahReq .SaveFile ("framework" , "/root/aah.txt" ))
262
- }
263
-
264
- func setUpRequestSaveFiles (t * testing.T ) (* Request , string , func ()) {
265
- buf := new (bytes.Buffer )
266
- multipartWriter := multipart .NewWriter (buf )
267
- _ , err := multipartWriter .CreateFormFile ("framework" , "aah" )
268
- assert .Nil (t , err )
269
- _ , err = multipartWriter .CreateFormFile ("framework2" , "aah2" )
270
- assert .Nil (t , err )
271
-
272
- ess .CloseQuietly (multipartWriter )
273
-
274
- req , _ := http .NewRequest ("POST" , "http://localhost:8080" , buf )
275
- req .Header .Add (HeaderContentType , multipartWriter .FormDataContentType ())
276
- aahReq := AcquireRequest (req )
277
- aahReq .Params .File = make (map [string ][]* multipart.FileHeader )
278
-
279
- _ , header , err := req .FormFile ("framework" )
280
- assert .Nil (t , err )
281
- _ , header2 , err := req .FormFile ("framework2" )
282
- assert .Nil (t , err )
283
-
284
- aahReq .Params .File ["framework" ] = []* multipart.FileHeader {header , header2 }
285
-
286
- dir := "testdata/upload"
287
-
288
- _ = ess .MkDirAll (dir , 0755 )
289
- return aahReq , dir , func () {
290
- _ = os .RemoveAll (dir )
291
- }
242
+ _ , err := aahReq .SaveFile ("framework" , "/root/aah.txt" )
243
+ assert .NotNil (t , err )
244
+ assert .True (t , strings .HasPrefix (err .Error (), "ahttp: open /root/aah.txt" ))
292
245
}
293
246
294
247
func TestRequestSaveFiles (t * testing.T ) {
295
248
aahReq , dir , teardown := setUpRequestSaveFiles (t )
296
249
defer teardown ()
297
250
298
- assert .Nil (t , aahReq .SaveFiles ("framework" , dir ))
251
+ sizes , errs := aahReq .SaveFiles ("framework" , dir )
252
+ assert .Nil (t , errs )
253
+ assert .Nil (t , sizes )
299
254
_ , err := os .Stat (dir + "/aah" )
300
255
assert .Nil (t , err )
301
256
_ , err = os .Stat (dir + "/aah2" )
@@ -307,23 +262,99 @@ func TestRequestSaveFilesFailsVaildation(t *testing.T) {
307
262
defer teardown ()
308
263
309
264
// Empty key
310
- assert .NotNil (t , aahReq .SaveFiles ("" , dir ))
265
+ sizes , errs := aahReq .SaveFiles ("" , dir )
266
+ assert .NotNil (t , errs )
267
+ assert .Equal (t , "ahttp: form file key, '' is empty" , errs [0 ].Error ())
268
+ assert .Equal (t , int64 (0 ), sizes [0 ])
311
269
312
270
// Empty directory
313
- assert .NotNil (t , aahReq .SaveFiles ("key" , "" ))
271
+ sizes , errs = aahReq .SaveFiles ("key" , "" )
272
+ assert .NotNil (t , errs )
273
+ assert .Equal (t , "ahttp: destination path, '' is not a directory" , errs [0 ].Error ())
274
+ assert .Equal (t , int64 (0 ), sizes [0 ])
314
275
}
315
276
316
277
func TestRequestSaveFilesCannotCreateFile (t * testing.T ) {
317
278
aahReq , _ , teardown := setUpRequestSaveFiles (t )
318
279
defer teardown ()
319
280
320
- assert .NotNil (t , aahReq .SaveFiles ("framework" , "/root" ))
281
+ sizes , errs := aahReq .SaveFiles ("framework" , "/root" )
282
+ assert .NotNil (t , errs )
283
+ assert .Equal (t , int64 (0 ), sizes [0 ])
284
+
285
+ errMsg := errs [0 ].Error ()
286
+ assert .True (t , ("ahttp: open /root/aah: permission denied" == errMsg ||
287
+ "ahttp: destination path, '/root' is not a directory" == errMsg ))
321
288
}
322
289
323
- func TestRequestsaveFileForExistingFile (t * testing.T ) {
290
+ func TestRequestSaveFileForExistingFile (t * testing.T ) {
324
291
var buf bytes.Buffer
325
292
326
- err := saveFile (& buf , "testdata/file1.txt" )
293
+ size , err := saveFile (& buf , "testdata/file1.txt" )
327
294
assert .NotNil (t , err )
328
- assert .Equal (t , "open testdata/file1.txt: file exists" , err .Error ())
295
+ assert .Equal (t , "ahttp: open testdata/file1.txt: file exists" , err .Error ())
296
+ assert .Equal (t , int64 (0 ), size )
297
+ }
298
+
299
+ //‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
300
+ // test unexported methods
301
+ //___________________________________
302
+
303
+ func createRequestWithHost (host , remote string ) * http.Request {
304
+ return & http.Request {Host : host , RemoteAddr : remote , Header : http.Header {}}
305
+ }
306
+
307
+ func setUpRequestSaveFile (t * testing.T ) (* Request , string , func ()) {
308
+ buf := new (bytes.Buffer )
309
+ multipartWriter := multipart .NewWriter (buf )
310
+ _ , err := multipartWriter .CreateFormFile ("framework" , "aah" )
311
+ assert .Nil (t , err )
312
+
313
+ ess .CloseQuietly (multipartWriter )
314
+
315
+ req , _ := http .NewRequest ("POST" , "http://localhost:8080" , buf )
316
+ req .Header .Add (HeaderContentType , multipartWriter .FormDataContentType ())
317
+ aahReq := AcquireRequest (req )
318
+ aahReq .Params .File = make (map [string ][]* multipart.FileHeader )
319
+
320
+ _ , header , err := req .FormFile ("framework" )
321
+ assert .Nil (t , err )
322
+
323
+ aahReq .Params .File ["framework" ] = []* multipart.FileHeader {header }
324
+
325
+ path := "testdata/aah.txt"
326
+
327
+ return aahReq , path , func () {
328
+ _ = os .Remove (path ) //Teardown
329
+ }
330
+ }
331
+
332
+ func setUpRequestSaveFiles (t * testing.T ) (* Request , string , func ()) {
333
+ buf := new (bytes.Buffer )
334
+ multipartWriter := multipart .NewWriter (buf )
335
+ _ , err := multipartWriter .CreateFormFile ("framework" , "aah" )
336
+ assert .Nil (t , err )
337
+ _ , err = multipartWriter .CreateFormFile ("framework2" , "aah2" )
338
+ assert .Nil (t , err )
339
+
340
+ ess .CloseQuietly (multipartWriter )
341
+
342
+ req , _ := http .NewRequest ("POST" , "http://localhost:8080" , buf )
343
+ req .Header .Add (HeaderContentType , multipartWriter .FormDataContentType ())
344
+ aahReq := AcquireRequest (req )
345
+ aahReq .Params .File = make (map [string ][]* multipart.FileHeader )
346
+
347
+ _ , header , err := req .FormFile ("framework" )
348
+ assert .Nil (t , err )
349
+ _ , header2 , err := req .FormFile ("framework2" )
350
+ assert .Nil (t , err )
351
+
352
+ aahReq .Params .File ["framework" ] = []* multipart.FileHeader {header , header2 }
353
+
354
+ dir := "testdata/upload"
355
+
356
+ _ = ess .MkDirAll (dir , 0755 )
357
+ return aahReq , dir , func () {
358
+ _ = os .RemoveAll (dir )
359
+ }
329
360
}
0 commit comments