Skip to content

Commit f9bed38

Browse files
author
David Koblas
committed
Reduced the duplication
1 parent 2325bd6 commit f9bed38

File tree

1 file changed

+46
-170
lines changed

1 file changed

+46
-170
lines changed

handler_test.go

Lines changed: 46 additions & 170 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,51 @@ func decodeResponse(t *testing.T, recorder *httptest.ResponseRecorder) *graphql.
3636
}
3737
return &target
3838
}
39+
3940
func executeTest(t *testing.T, h *handler.Handler, req *http.Request) (*graphql.Result, *httptest.ResponseRecorder) {
4041
resp := httptest.NewRecorder()
4142
h.ServeHTTP(resp, req)
4243
result := decodeResponse(t, resp)
4344
return result, resp
4445
}
4546

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+
4684
func TestContextPropagated(t *testing.T) {
4785
myNameQuery := graphql.NewObject(graphql.ObjectConfig{
4886
Name: "Query",
@@ -226,27 +264,15 @@ func TestHandler_Post(t *testing.T) {
226264
}
227265

228266
func TestHandler_Multipart_Basic(t *testing.T) {
229-
body := &bytes.Buffer{}
230-
231-
writer := multipart.NewWriter(body)
232-
233267
expected := &graphql.Result{
234268
Data: map[string]interface{}{
235269
"hero": map[string]interface{}{
236270
"name": "R2-D2",
237271
},
238272
},
239273
}
240-
queryString := `{"query":"query HeroNameQuery { hero { name } }"}`
241274

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, "")
250276

251277
h := handler.New(&handler.Config{
252278
Schema: &testutil.StarWarsSchema,
@@ -285,20 +311,7 @@ func TestHandler_Multipart_Basic_ErrNoOperation(t *testing.T) {
285311
}
286312

287313
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, `{`)
302315

303316
h := handler.New(&handler.Config{
304317
Schema: &testutil.StarWarsSchema,
@@ -313,29 +326,7 @@ func TestHandler_Multipart_Basic_ErrBadMap(t *testing.T) {
313326
}
314327

315328
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"]}`)
339330

340331
h := handler.New(&handler.Config{
341332
Schema: &testutil.StarWarsSchema,
@@ -358,29 +349,7 @@ func TestHandler_Multipart_Basic_Upload(t *testing.T) {
358349
},
359350
}
360351

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"]}`)
384353

385354
h := handler.New(&handler.Config{
386355
Schema: &testutil.StarWarsSchema,
@@ -403,34 +372,7 @@ func TestHandler_Multipart_Basic_UploadSlice(t *testing.T) {
403372
},
404373
}
405374

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"]}`)
434376

435377
h := handler.New(&handler.Config{
436378
Schema: &testutil.StarWarsSchema,
@@ -445,29 +387,7 @@ func TestHandler_Multipart_Basic_UploadSlice(t *testing.T) {
445387
}
446388

447389
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"]}`)
471391

472392
h := handler.New(&handler.Config{
473393
Schema: &testutil.StarWarsSchema,
@@ -482,29 +402,7 @@ func TestHandler_Multipart_Basic_BadSlice(t *testing.T) {
482402
}
483403

484404
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"]}`)
508406

509407
h := handler.New(&handler.Config{
510408
Schema: &testutil.StarWarsSchema,
@@ -519,29 +417,7 @@ func TestHandler_Multipart_Basic_BadSliceLast(t *testing.T) {
519417
}
520418

521419
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"]}`)
545421

546422
h := handler.New(&handler.Config{
547423
Schema: &testutil.StarWarsSchema,

0 commit comments

Comments
 (0)