| 302 | } |
| 303 | |
| 304 | func TestAddMultipleHeadersErrorEncoder(t *testing.T) { |
| 305 | errStr := "oh no" |
| 306 | handler := httptransport.NewServer( |
| 307 | func(context.Context, interface{}) (interface{}, error) { |
| 308 | return nil, multiHeaderResponseError{msg: errStr} |
| 309 | }, |
| 310 | func(context.Context, *http.Request) (interface{}, error) { return struct{}{}, nil }, |
| 311 | httptransport.EncodeJSONResponse, |
| 312 | ) |
| 313 | |
| 314 | server := httptest.NewServer(handler) |
| 315 | defer server.Close() |
| 316 | |
| 317 | resp, err := http.Get(server.URL) |
| 318 | if err != nil { |
| 319 | t.Fatal(err) |
| 320 | } |
| 321 | expect := map[string]map[string]struct{}{"Vary": map[string]struct{}{"Origin": struct{}{}, "User-Agent": struct{}{}}} |
| 322 | for k, vls := range resp.Header { |
| 323 | for _, v := range vls { |
| 324 | delete((expect[k]), v) |
| 325 | } |
| 326 | if len(expect[k]) != 0 { |
| 327 | t.Errorf("Header: unexpected header %s: %v", k, expect[k]) |
| 328 | } |
| 329 | } |
| 330 | if b, _ := ioutil.ReadAll(resp.Body); errStr != string(b) { |
| 331 | t.Errorf("ErrorEncoder: got: %q, expected: %q", b, errStr) |
| 332 | } |
| 333 | } |
| 334 | |
| 335 | type noContentResponse struct{} |
| 336 | |