github.com/maeglindeveloper/gqlgen@v0.13.1-0.20210413081235-57808b12a0a0/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  }