Skip to content

Commit

Permalink
Support multiple response headers with same name #35
Browse files Browse the repository at this point in the history
  • Loading branch information
stein committed Sep 8, 2018
1 parent 4692cba commit 454ce72
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
language: go

go:
- "1.11"
- "1.10"
- "1.92"
- "1.82"
- "1.72"
- "1.62"
- "tip"
- "stable"

before_install:
- go get -u github.com/nbio/st
Expand Down
6 changes: 4 additions & 2 deletions responder.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,10 @@ func createResponse(req *http.Request) *http.Response {

// mergeHeaders copies the mock headers.
func mergeHeaders(res *http.Response, mres *Response) http.Header {
for key := range mres.Header {
res.Header.Set(key, mres.Header.Get(key))
for key, values := range mres.Header {
for _, value := range values {
res.Header.Add(key, value)
}
}
return res.Header
}
Expand Down
13 changes: 13 additions & 0 deletions responder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,19 @@ func TestResponder(t *testing.T) {
st.Expect(t, string(body), "foo")
}

func TestResponderSupportsMultipleHeadersWithSameKey(t *testing.T) {
defer after()
mres := New("http://foo").
Reply(200).
AddHeader("Set-Cookie", "a=1").
AddHeader("Set-Cookie", "b=2")
req := &http.Request{}

res, err := Responder(req, mres, nil)
st.Expect(t, err, nil)
st.Expect(t, res.Header, http.Header{"Set-Cookie": []string{"a=1", "b=2"}})
}

func TestResponderError(t *testing.T) {
defer after()
mres := New("http://foo.com").ReplyError(errors.New("error"))
Expand Down

0 comments on commit 454ce72

Please sign in to comment.