Skip to content

Commit 50846d9

Browse files
steinfletcherh2non
authored andcommitted
Support multiple response headers with same name #35 (#36)
1 parent 4692cba commit 50846d9

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
language: go
22

33
go:
4+
- "1.11"
45
- "1.10"
56
- "1.92"
67
- "1.82"
78
- "1.72"
89
- "1.62"
9-
- "tip"
10+
- "stable"
1011

1112
before_install:
1213
- go get -u github.com/nbio/st

responder.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,10 @@ func createResponse(req *http.Request) *http.Response {
7171

7272
// mergeHeaders copies the mock headers.
7373
func mergeHeaders(res *http.Response, mres *Response) http.Header {
74-
for key := range mres.Header {
75-
res.Header.Set(key, mres.Header.Get(key))
74+
for key, values := range mres.Header {
75+
for _, value := range values {
76+
res.Header.Add(key, value)
77+
}
7678
}
7779
return res.Header
7880
}

responder_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,19 @@ func TestResponder(t *testing.T) {
2323
st.Expect(t, string(body), "foo")
2424
}
2525

26+
func TestResponderSupportsMultipleHeadersWithSameKey(t *testing.T) {
27+
defer after()
28+
mres := New("http://foo").
29+
Reply(200).
30+
AddHeader("Set-Cookie", "a=1").
31+
AddHeader("Set-Cookie", "b=2")
32+
req := &http.Request{}
33+
34+
res, err := Responder(req, mres, nil)
35+
st.Expect(t, err, nil)
36+
st.Expect(t, res.Header, http.Header{"Set-Cookie": []string{"a=1", "b=2"}})
37+
}
38+
2639
func TestResponderError(t *testing.T) {
2740
defer after()
2841
mres := New("http://foo.com").ReplyError(errors.New("error"))

0 commit comments

Comments
 (0)