Skip to content

Commit 2325bd6

Browse files
author
David Koblas
committed
More tests
1 parent 42fc4ce commit 2325bd6

File tree

1 file changed

+110
-5
lines changed

1 file changed

+110
-5
lines changed

handler_test.go

Lines changed: 110 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -389,9 +389,6 @@ func TestHandler_Multipart_Basic_Upload(t *testing.T) {
389389
if resp.Code != http.StatusOK {
390390
t.Fatalf("unexpected server response %v", resp.Code)
391391
}
392-
if resp.Code != http.StatusOK {
393-
t.Fatalf("unexpected server response %v", resp.Code)
394-
}
395392
if !reflect.DeepEqual(result, expected) {
396393
t.Fatalf("wrong result, graphql result diff: %v", testutil.Diff(expected, result))
397394
}
@@ -442,10 +439,118 @@ func TestHandler_Multipart_Basic_UploadSlice(t *testing.T) {
442439
if resp.Code != http.StatusOK {
443440
t.Fatalf("unexpected server response %v", resp.Code)
444441
}
442+
if !reflect.DeepEqual(result, expected) {
443+
t.Fatalf("wrong result, graphql result diff: %v", testutil.Diff(expected, result))
444+
}
445+
}
446+
447+
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())
471+
472+
h := handler.New(&handler.Config{
473+
Schema: &testutil.StarWarsSchema,
474+
})
475+
result, resp := executeTest(t, h, req)
445476
if resp.Code != http.StatusOK {
446477
t.Fatalf("unexpected server response %v", resp.Code)
447478
}
448-
if !reflect.DeepEqual(result, expected) {
449-
t.Fatalf("wrong result, graphql result diff: %v", testutil.Diff(expected, result))
479+
if len(result.Errors) != 1 || result.Errors[0].Message != "Must provide an operation." {
480+
t.Fatalf("unexpected response %+v", result)
481+
}
482+
}
483+
484+
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())
508+
509+
h := handler.New(&handler.Config{
510+
Schema: &testutil.StarWarsSchema,
511+
})
512+
result, resp := executeTest(t, h, req)
513+
if resp.Code != http.StatusOK {
514+
t.Fatalf("unexpected server response %v", resp.Code)
515+
}
516+
if len(result.Errors) != 1 || result.Errors[0].Message != "Must provide an operation." {
517+
t.Fatalf("unexpected response %+v", result)
518+
}
519+
}
520+
521+
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())
545+
546+
h := handler.New(&handler.Config{
547+
Schema: &testutil.StarWarsSchema,
548+
})
549+
result, resp := executeTest(t, h, req)
550+
if resp.Code != http.StatusOK {
551+
t.Fatalf("unexpected server response %v", resp.Code)
552+
}
553+
if len(result.Errors) != 1 || result.Errors[0].Message != "Must provide an operation." {
554+
t.Fatalf("unexpected response %+v", result)
450555
}
451556
}

0 commit comments

Comments
 (0)