Skip to content

Commit bb93313

Browse files
author
David Koblas
committed
Improved coverage
1 parent 758ab94 commit bb93313

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

handler_test.go

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"encoding/json"
66
"fmt"
7+
"io"
78
"io/ioutil"
89
"mime/multipart"
910
"net/http"
@@ -258,3 +259,103 @@ func TestHandler_Multipart_Basic(t *testing.T) {
258259
t.Fatalf("wrong result, graphql result diff: %v", testutil.Diff(expected, result))
259260
}
260261
}
262+
263+
func TestHandler_Multipart_Basic_ErrNoOperation(t *testing.T) {
264+
body := &bytes.Buffer{}
265+
writer := multipart.NewWriter(body)
266+
267+
err := writer.Close()
268+
if err != nil {
269+
t.Fatalf("unexpected writer fail %v", err)
270+
}
271+
272+
req, err := http.NewRequest("POST", "/graphql", body)
273+
req.Header.Set("Content-Type", writer.FormDataContentType())
274+
275+
h := handler.New(&handler.Config{
276+
Schema: &testutil.StarWarsSchema,
277+
})
278+
result, resp := executeTest(t, h, req)
279+
if resp.Code != http.StatusOK {
280+
t.Fatalf("unexpected server response %v", resp.Code)
281+
}
282+
if len(result.Errors) != 1 || result.Errors[0].Message != "Must provide an operation." {
283+
t.Fatalf("unexpected response")
284+
}
285+
}
286+
287+
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())
302+
303+
h := handler.New(&handler.Config{
304+
Schema: &testutil.StarWarsSchema,
305+
})
306+
result, resp := executeTest(t, h, req)
307+
if resp.Code != http.StatusOK {
308+
t.Fatalf("unexpected server response %v", resp.Code)
309+
}
310+
if len(result.Errors) != 1 || result.Errors[0].Message != "Must provide an operation." {
311+
t.Fatalf("unexpected response")
312+
}
313+
}
314+
315+
func TestHandler_Multipart_Basic_Upload(t *testing.T) {
316+
expected := &graphql.Result{
317+
Data: map[string]interface{}{
318+
"hero": map[string]interface{}{
319+
"name": "R2-D2",
320+
},
321+
},
322+
}
323+
324+
body := &bytes.Buffer{}
325+
writer := multipart.NewWriter(body)
326+
327+
queryString := `{
328+
"query":"query HeroNameQuery { hero { name } }",
329+
"variables":{"file":null}
330+
}`
331+
332+
writer.WriteField("operations", queryString)
333+
writer.WriteField("map", `{"0":["variables.file"]}`)
334+
part, _ := writer.CreateFormFile("0", "test.txt")
335+
336+
if _, err := io.Copy(part, strings.NewReader("How now brown cow")); err != nil {
337+
t.Fatalf("unexpected copy writer fail %v", err)
338+
}
339+
340+
err := writer.Close()
341+
if err != nil {
342+
t.Fatalf("unexpected writer fail %v", err)
343+
}
344+
345+
req, err := http.NewRequest("POST", "/graphql", body)
346+
req.Header.Set("Content-Type", writer.FormDataContentType())
347+
348+
h := handler.New(&handler.Config{
349+
Schema: &testutil.StarWarsSchema,
350+
})
351+
result, resp := executeTest(t, h, req)
352+
if resp.Code != http.StatusOK {
353+
t.Fatalf("unexpected server response %v", resp.Code)
354+
}
355+
if resp.Code != http.StatusOK {
356+
t.Fatalf("unexpected server response %v", resp.Code)
357+
}
358+
if !reflect.DeepEqual(result, expected) {
359+
t.Fatalf("wrong result, graphql result diff: %v", testutil.Diff(expected, result))
360+
}
361+
}

0 commit comments

Comments
 (0)