github.com/fortexxx/gqlgen@v0.10.3-0.20191216030626-ca5ea8b21ead/client/client_test.go (about) 1 package client_test 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 "net/http" 7 "testing" 8 9 "github.com/99designs/gqlgen/client" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestClient(t *testing.T) { 14 h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 15 b, err := ioutil.ReadAll(r.Body) 16 if err != nil { 17 panic(err) 18 } 19 require.Equal(t, `{"query":"user(id:$id){name}","variables":{"id":1}}`, string(b)) 20 21 err = json.NewEncoder(w).Encode(map[string]interface{}{ 22 "data": map[string]interface{}{ 23 "name": "bob", 24 }, 25 }) 26 if err != nil { 27 panic(err) 28 } 29 }) 30 31 c := client.New(h) 32 33 var resp struct { 34 Name string 35 } 36 37 c.MustPost("user(id:$id){name}", &resp, client.Var("id", 1)) 38 39 require.Equal(t, "bob", resp.Name) 40 } 41 42 func TestAddHeader(t *testing.T) { 43 h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 44 require.Equal(t, "ASDF", r.Header.Get("Test-Key")) 45 46 w.Write([]byte(`{}`)) 47 }) 48 49 c := client.New(h) 50 51 var resp struct{} 52 c.MustPost("{ id }", &resp, 53 client.AddHeader("Test-Key", "ASDF"), 54 ) 55 } 56 57 func TestAddClientHeader(t *testing.T) { 58 h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 59 require.Equal(t, "ASDF", r.Header.Get("Test-Key")) 60 61 w.Write([]byte(`{}`)) 62 }) 63 64 c := client.New(h, client.AddHeader("Test-Key", "ASDF")) 65 66 var resp struct{} 67 c.MustPost("{ id }", &resp) 68 } 69 70 func TestBasicAuth(t *testing.T) { 71 h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 72 user, pass, ok := r.BasicAuth() 73 require.True(t, ok) 74 require.Equal(t, "user", user) 75 require.Equal(t, "pass", pass) 76 77 w.Write([]byte(`{}`)) 78 }) 79 80 c := client.New(h) 81 82 var resp struct{} 83 c.MustPost("{ id }", &resp, 84 client.BasicAuth("user", "pass"), 85 ) 86 } 87 88 func TestAddCookie(t *testing.T) { 89 h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 90 c, err := r.Cookie("foo") 91 require.NoError(t, err) 92 require.Equal(t, "value", c.Value) 93 94 w.Write([]byte(`{}`)) 95 }) 96 97 c := client.New(h) 98 99 var resp struct{} 100 c.MustPost("{ id }", &resp, 101 client.AddCookie(&http.Cookie{Name: "foo", Value: "value"}), 102 ) 103 }