diff --git a/vcr/stubs/__init__.py b/vcr/stubs/__init__.py index 0922e33..45af7ea 100644 --- a/vcr/stubs/__init__.py +++ b/vcr/stubs/__init__.py @@ -57,7 +57,7 @@ def parse_headers(header_list): def serialize_headers(response): out = {} - for key, values in compat.get_headers(response): + for key, values in compat.get_headers(response.msg): out.setdefault(key, []) out[key].extend(values) return out @@ -108,11 +108,15 @@ class VCRHTTPResponse(HTTPResponse): def getheaders(self): message = parse_headers(self.recorded_response['headers']) - return compat.get_header_items(message) + return list(compat.get_header_items(message)) def getheader(self, header, default=None): - headers = dict(((k.lower(), v) for k, v in self.getheaders())) - return headers.get(header.lower(), default) + values = [v for (k, v) in self.getheaders() if k.lower() == header.lower()] + + if values: + return ', '.join(values) + else: + return default class VCRConnection: diff --git a/vcr/stubs/compat.py b/vcr/stubs/compat.py index 13f30a0..d640ac4 100644 --- a/vcr/stubs/compat.py +++ b/vcr/stubs/compat.py @@ -21,18 +21,17 @@ def get_header(message, name): def get_header_items(message): - if six.PY3: - return dict(message._headers).items() - else: - return message.dict.items() + for (key, values) in get_headers(message): + for value in values: + yield key, value -def get_headers(response): - for key in set(response.msg.keys()): +def get_headers(message): + for key in set(message.keys()): if six.PY3: - yield key, response.msg.get_all(key) + yield key, message.get_all(key) else: - yield key, response.msg.getheaders(key) + yield key, message.getheaders(key) def get_httpmessage(headers):