@@ -36,13 +36,51 @@ func decodeResponse(t *testing.T, recorder *httptest.ResponseRecorder) *graphql.
36
36
}
37
37
return & target
38
38
}
39
+
39
40
func executeTest (t * testing.T , h * handler.Handler , req * http.Request ) (* graphql.Result , * httptest.ResponseRecorder ) {
40
41
resp := httptest .NewRecorder ()
41
42
h .ServeHTTP (resp , req )
42
43
result := decodeResponse (t , resp )
43
44
return result , resp
44
45
}
45
46
47
+ func uploadTest (t * testing.T , mapData string ) * http.Request {
48
+ body := & bytes.Buffer {}
49
+ writer := multipart .NewWriter (body )
50
+
51
+ queryString := `{
52
+ "query":"query HeroNameQuery { hero { name } }",
53
+ "variables":{"file":[null,null]}
54
+ }`
55
+
56
+ writer .WriteField ("operations" , queryString )
57
+ if mapData != "" {
58
+ writer .WriteField ("map" , mapData )
59
+
60
+ part1 , _ := writer .CreateFormFile ("0" , "test1.txt" )
61
+ if _ , err := io .Copy (part1 , strings .NewReader ("How now brown cow" )); err != nil {
62
+ t .Fatalf ("unexpected copy writer fail %v" , err )
63
+ }
64
+ part2 , _ := writer .CreateFormFile ("1" , "test2.txt" )
65
+ if _ , err := io .Copy (part2 , strings .NewReader ("How now gold fish" )); err != nil {
66
+ t .Fatalf ("unexpected copy writer fail %v" , err )
67
+ }
68
+ }
69
+
70
+ err := writer .Close ()
71
+ if err != nil {
72
+ t .Fatalf ("unexpected writer fail %v" , err )
73
+ }
74
+
75
+ req , err := http .NewRequest ("POST" , "/graphql" , body )
76
+ if err != nil {
77
+ t .Fatalf ("unexpected NewRequest fail %v" , err )
78
+ }
79
+ req .Header .Set ("Content-Type" , writer .FormDataContentType ())
80
+
81
+ return req
82
+ }
83
+
46
84
func TestContextPropagated (t * testing.T ) {
47
85
myNameQuery := graphql .NewObject (graphql.ObjectConfig {
48
86
Name : "Query" ,
@@ -226,27 +264,15 @@ func TestHandler_Post(t *testing.T) {
226
264
}
227
265
228
266
func TestHandler_Multipart_Basic (t * testing.T ) {
229
- body := & bytes.Buffer {}
230
-
231
- writer := multipart .NewWriter (body )
232
-
233
267
expected := & graphql.Result {
234
268
Data : map [string ]interface {}{
235
269
"hero" : map [string ]interface {}{
236
270
"name" : "R2-D2" ,
237
271
},
238
272
},
239
273
}
240
- queryString := `{"query":"query HeroNameQuery { hero { name } }"}`
241
274
242
- writer .WriteField ("operations" , queryString )
243
- err := writer .Close ()
244
- if err != nil {
245
- t .Fatalf ("unexpected writer fail %v" , err )
246
- }
247
-
248
- req , err := http .NewRequest ("POST" , "/graphql" , body )
249
- req .Header .Set ("Content-Type" , writer .FormDataContentType ())
275
+ req := uploadTest (t , "" )
250
276
251
277
h := handler .New (& handler.Config {
252
278
Schema : & testutil .StarWarsSchema ,
@@ -285,20 +311,7 @@ func TestHandler_Multipart_Basic_ErrNoOperation(t *testing.T) {
285
311
}
286
312
287
313
func TestHandler_Multipart_Basic_ErrBadMap (t * testing.T ) {
288
- body := & bytes.Buffer {}
289
- writer := multipart .NewWriter (body )
290
-
291
- queryString := `{"query":"query HeroNameQuery { hero { name } }"}`
292
- writer .WriteField ("operations" , queryString )
293
- writer .WriteField ("map" , "{" )
294
-
295
- err := writer .Close ()
296
- if err != nil {
297
- t .Fatalf ("unexpected writer fail %v" , err )
298
- }
299
-
300
- req , err := http .NewRequest ("POST" , "/graphql" , body )
301
- req .Header .Set ("Content-Type" , writer .FormDataContentType ())
314
+ req := uploadTest (t , `{` )
302
315
303
316
h := handler .New (& handler.Config {
304
317
Schema : & testutil .StarWarsSchema ,
@@ -313,29 +326,7 @@ func TestHandler_Multipart_Basic_ErrBadMap(t *testing.T) {
313
326
}
314
327
315
328
func TestHandler_Multipart_Basic_ErrBadMapRoot (t * testing.T ) {
316
- body := & bytes.Buffer {}
317
- writer := multipart .NewWriter (body )
318
-
319
- queryString := `{
320
- "query":"query HeroNameQuery { hero { name } }",
321
- "variables":{"file":null}
322
- }`
323
-
324
- writer .WriteField ("operations" , queryString )
325
- writer .WriteField ("map" , `{"0":["xxx.file"]}` )
326
- part , _ := writer .CreateFormFile ("0" , "test.txt" )
327
-
328
- if _ , err := io .Copy (part , strings .NewReader ("How now brown cow" )); err != nil {
329
- t .Fatalf ("unexpected copy writer fail %v" , err )
330
- }
331
-
332
- err := writer .Close ()
333
- if err != nil {
334
- t .Fatalf ("unexpected writer fail %v" , err )
335
- }
336
-
337
- req , err := http .NewRequest ("POST" , "/graphql" , body )
338
- req .Header .Set ("Content-Type" , writer .FormDataContentType ())
329
+ req := uploadTest (t , `{"0":["xxx.file"]}` )
339
330
340
331
h := handler .New (& handler.Config {
341
332
Schema : & testutil .StarWarsSchema ,
@@ -358,29 +349,7 @@ func TestHandler_Multipart_Basic_Upload(t *testing.T) {
358
349
},
359
350
}
360
351
361
- body := & bytes.Buffer {}
362
- writer := multipart .NewWriter (body )
363
-
364
- queryString := `{
365
- "query":"query HeroNameQuery { hero { name } }",
366
- "variables":{"file":null}
367
- }`
368
-
369
- writer .WriteField ("operations" , queryString )
370
- writer .WriteField ("map" , `{"0":["variables.file"]}` )
371
- part , _ := writer .CreateFormFile ("0" , "test.txt" )
372
-
373
- if _ , err := io .Copy (part , strings .NewReader ("How now brown cow" )); err != nil {
374
- t .Fatalf ("unexpected copy writer fail %v" , err )
375
- }
376
-
377
- err := writer .Close ()
378
- if err != nil {
379
- t .Fatalf ("unexpected writer fail %v" , err )
380
- }
381
-
382
- req , err := http .NewRequest ("POST" , "/graphql" , body )
383
- req .Header .Set ("Content-Type" , writer .FormDataContentType ())
352
+ req := uploadTest (t , `{"0":["variables.file"]}` )
384
353
385
354
h := handler .New (& handler.Config {
386
355
Schema : & testutil .StarWarsSchema ,
@@ -403,34 +372,7 @@ func TestHandler_Multipart_Basic_UploadSlice(t *testing.T) {
403
372
},
404
373
}
405
374
406
- body := & bytes.Buffer {}
407
- writer := multipart .NewWriter (body )
408
-
409
- queryString := `{
410
- "query":"query HeroNameQuery { hero { name } }",
411
- "variables":{"file":[null,null]}
412
- }`
413
-
414
- writer .WriteField ("operations" , queryString )
415
- writer .WriteField ("map" , `{"0":["variables.file.0"],"1":["variables.file.1"]}` )
416
-
417
- part1 , _ := writer .CreateFormFile ("0" , "test.txt" )
418
- if _ , err := io .Copy (part1 , strings .NewReader ("How now brown cow" )); err != nil {
419
- t .Fatalf ("unexpected copy writer fail %v" , err )
420
- }
421
-
422
- part2 , _ := writer .CreateFormFile ("1" , "test.txt" )
423
- if _ , err := io .Copy (part2 , strings .NewReader ("How now gold fish" )); err != nil {
424
- t .Fatalf ("unexpected copy writer fail %v" , err )
425
- }
426
-
427
- err := writer .Close ()
428
- if err != nil {
429
- t .Fatalf ("unexpected writer fail %v" , err )
430
- }
431
-
432
- req , err := http .NewRequest ("POST" , "/graphql" , body )
433
- req .Header .Set ("Content-Type" , writer .FormDataContentType ())
375
+ req := uploadTest (t , `{"0":["variables.file.0"],"1":["variables.file.1"]}` )
434
376
435
377
h := handler .New (& handler.Config {
436
378
Schema : & testutil .StarWarsSchema ,
@@ -445,29 +387,7 @@ func TestHandler_Multipart_Basic_UploadSlice(t *testing.T) {
445
387
}
446
388
447
389
func TestHandler_Multipart_Basic_BadSlice (t * testing.T ) {
448
- body := & bytes.Buffer {}
449
- writer := multipart .NewWriter (body )
450
-
451
- queryString := `{
452
- "query":"query HeroNameQuery { hero { name } }",
453
- "variables":{"file":[null,null]}
454
- }`
455
-
456
- writer .WriteField ("operations" , queryString )
457
- writer .WriteField ("map" , `{"0":["variables.file.x"]}` )
458
-
459
- part , _ := writer .CreateFormFile ("0" , "test.txt" )
460
- if _ , err := io .Copy (part , strings .NewReader ("How now brown cow" )); err != nil {
461
- t .Fatalf ("unexpected copy writer fail %v" , err )
462
- }
463
-
464
- err := writer .Close ()
465
- if err != nil {
466
- t .Fatalf ("unexpected writer fail %v" , err )
467
- }
468
-
469
- req , err := http .NewRequest ("POST" , "/graphql" , body )
470
- req .Header .Set ("Content-Type" , writer .FormDataContentType ())
390
+ req := uploadTest (t , `{"0":["variables.file.x"]}` )
471
391
472
392
h := handler .New (& handler.Config {
473
393
Schema : & testutil .StarWarsSchema ,
@@ -482,29 +402,7 @@ func TestHandler_Multipart_Basic_BadSlice(t *testing.T) {
482
402
}
483
403
484
404
func TestHandler_Multipart_Basic_BadSliceLast (t * testing.T ) {
485
- body := & bytes.Buffer {}
486
- writer := multipart .NewWriter (body )
487
-
488
- queryString := `{
489
- "query":"query HeroNameQuery { hero { name } }",
490
- "variables":{"file":[null,null]}
491
- }`
492
-
493
- writer .WriteField ("operations" , queryString )
494
- writer .WriteField ("map" , `{"0":["variables.file.0.test"]}` )
495
-
496
- part , _ := writer .CreateFormFile ("0" , "test.txt" )
497
- if _ , err := io .Copy (part , strings .NewReader ("How now brown cow" )); err != nil {
498
- t .Fatalf ("unexpected copy writer fail %v" , err )
499
- }
500
-
501
- err := writer .Close ()
502
- if err != nil {
503
- t .Fatalf ("unexpected writer fail %v" , err )
504
- }
505
-
506
- req , err := http .NewRequest ("POST" , "/graphql" , body )
507
- req .Header .Set ("Content-Type" , writer .FormDataContentType ())
405
+ req := uploadTest (t , `{"0":["variables.file.0.test"]}` )
508
406
509
407
h := handler .New (& handler.Config {
510
408
Schema : & testutil .StarWarsSchema ,
@@ -519,29 +417,7 @@ func TestHandler_Multipart_Basic_BadSliceLast(t *testing.T) {
519
417
}
520
418
521
419
func TestHandler_Multipart_Basic_BadSliceMiddle (t * testing.T ) {
522
- body := & bytes.Buffer {}
523
- writer := multipart .NewWriter (body )
524
-
525
- queryString := `{
526
- "query":"query HeroNameQuery { hero { name } }",
527
- "variables":{"file":[null,null]}
528
- }`
529
-
530
- writer .WriteField ("operations" , queryString )
531
- writer .WriteField ("map" , `{"0":["variables.file.x.test"]}` )
532
-
533
- part , _ := writer .CreateFormFile ("0" , "test.txt" )
534
- if _ , err := io .Copy (part , strings .NewReader ("How now brown cow" )); err != nil {
535
- t .Fatalf ("unexpected copy writer fail %v" , err )
536
- }
537
-
538
- err := writer .Close ()
539
- if err != nil {
540
- t .Fatalf ("unexpected writer fail %v" , err )
541
- }
542
-
543
- req , err := http .NewRequest ("POST" , "/graphql" , body )
544
- req .Header .Set ("Content-Type" , writer .FormDataContentType ())
420
+ req := uploadTest (t , `{"0":["variables.file.x.test"]}` )
545
421
546
422
h := handler .New (& handler.Config {
547
423
Schema : & testutil .StarWarsSchema ,
0 commit comments