diff --git a/packages/abstractions/kiota_abstractions/headers_collection.py b/packages/abstractions/kiota_abstractions/headers_collection.py index 729295dc..0fa10363 100644 --- a/packages/abstractions/kiota_abstractions/headers_collection.py +++ b/packages/abstractions/kiota_abstractions/headers_collection.py @@ -98,19 +98,15 @@ def add(self, header_name: str, header_values: Union[str, list[str]]) -> None: if not header_values: # empty list return header_name = header_name.lower() - if isinstance(header_values, list): - if header_name in self.SINGLE_VALUE_HEADERS: - self._headers[header_name] = {header_values[0]} - elif values := self.try_get(header_name): - for header_value in header_values: - values.add(header_value) #type: ignore - else: - self._headers[header_name] = set(header_values) + if not isinstance(header_values, list): + header_values = [header_values] + if header_name in self.SINGLE_VALUE_HEADERS: + self._headers[header_name] = {header_values[0]} + elif values := self.try_get(header_name): + for header_value in header_values: + values.add(header_value) #type: ignore else: - if values := self.try_get(header_name): - values.add(header_values) #type: ignore - else: - self._headers[header_name] = {header_values} + self._headers[header_name] = set(header_values) def keys(self) -> list[str]: """Gets the header names present in the collection. diff --git a/packages/abstractions/tests/test_request_header.py b/packages/abstractions/tests/test_request_header.py index dad8095d..2582f43e 100644 --- a/packages/abstractions/tests/test_request_header.py +++ b/packages/abstractions/tests/test_request_header.py @@ -98,8 +98,8 @@ def test_add_single_value_header_to_existing_header(): headers = HeadersCollection() headers.add("content-type", "value1") headers.add("content-type", "value2") - assert {"value2"} <= headers.try_get("content-type") - assert {"value2"} <= headers.get("content-type") + assert headers.try_get("content-type") == {"value2"} + assert headers.get("content-type") == {"value2"} assert headers.contains("content-type") assert headers.count() == 1 @@ -180,4 +180,13 @@ def test_adds_headers_from_instance(): assert headers.contains("header3") assert headers.contains("header4") assert headers.count() == 4 - assert headers.keys() == ["header1", "header2", "header3", "header4"] \ No newline at end of file + assert headers.keys() == ["header1", "header2", "header3", "header4"] +def test_add_all_replaces_single_value_header(): + """Tests that add_all keeps a single value header to one value + """ + headers = HeadersCollection() + headers.add("Content-Type", "application/json") + other = HeadersCollection() + other.add("Content-Type", "text/plain") + headers.add_all(other) + assert headers.get("content-type") == {"text/plain"}