MCPcopy
hub / github.com/go-kit/kit / TestHTTPClient

Function TestHTTPClient

transport/http/client_test.go:24–100  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

22}
23
24func TestHTTPClient(t *testing.T) {
25 var (
26 testbody = "testbody"
27 encode = func(context.Context, *http.Request, interface{}) error { return nil }
28 decode = func(_ context.Context, r *http.Response) (interface{}, error) {
29 buffer := make([]byte, len(testbody))
30 r.Body.Read(buffer)
31 return TestResponse{r.Body, string(buffer)}, nil
32 }
33 headers = make(chan string, 1)
34 headerKey = "X-Foo"
35 headerVal = "abcde"
36 afterHeaderKey = "X-The-Dude"
37 afterHeaderVal = "Abides"
38 afterVal = ""
39 afterFunc = func(ctx context.Context, r *http.Response) context.Context {
40 afterVal = r.Header.Get(afterHeaderKey)
41 return ctx
42 }
43 )
44
45 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
46 headers <- r.Header.Get(headerKey)
47 w.Header().Set(afterHeaderKey, afterHeaderVal)
48 w.WriteHeader(http.StatusOK)
49 w.Write([]byte(testbody))
50 }))
51
52 client := httptransport.NewClient(
53 "GET",
54 mustParse(server.URL),
55 encode,
56 decode,
57 httptransport.ClientBefore(httptransport.SetRequestHeader(headerKey, headerVal)),
58 httptransport.ClientAfter(afterFunc),
59 )
60
61 res, err := client.Endpoint()(context.Background(), struct{}{})
62 if err != nil {
63 t.Fatal(err)
64 }
65
66 var have string
67 select {
68 case have = <-headers:
69 case <-time.After(time.Millisecond):
70 t.Fatalf("timeout waiting for %s", headerKey)
71 }
72 // Check that Request Header was successfully received
73 if want := headerVal; want != have {
74 t.Errorf("want %q, have %q", want, have)
75 }
76
77 // Check that Response header set from server was received in SetClientAfter
78 if want, have := afterVal, afterHeaderVal; want != have {
79 t.Errorf("want %q, have %q", want, have)
80 }
81

Callers

nothing calls this directly

Calls 7

EndpointMethod · 0.95
ReadMethod · 0.80
mustParseFunction · 0.70
SetMethod · 0.65
WriteMethod · 0.65
GetMethod · 0.45
WriteHeaderMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…