import pytest from webob import headers def test_ResponseHeaders_delitem_notpresent(): """Deleting a missing key from ResponseHeaders should raise a KeyError""" d = headers.ResponseHeaders() with pytest.raises(KeyError): d.__delitem__("b") def test_ResponseHeaders_delitem_present(): """ Deleting a present key should not raise an error at all """ d = headers.ResponseHeaders(a=1) del d["a"] assert "a" not in d def test_ResponseHeaders_setdefault(): """Testing set_default for ResponseHeaders""" d = headers.ResponseHeaders(a=1) res = d.setdefault("b", 1) assert res == d["b"] == 1 res = d.setdefault("b", 10) assert res == d["b"] == 1 res = d.setdefault("B", 10) assert res == d["b"] == d["B"] == 1 def test_ResponseHeader_pop(): """Testing if pop return TypeError when more than len(*args)>1 plus other assorted tests""" d = headers.ResponseHeaders(a=1, b=2, c=3, d=4) with pytest.raises(TypeError): d.pop("a", "z", "y") assert d.pop("a") == 1 assert "a" not in d assert d.pop("B") == 2 assert "b" not in d assert d.pop("c", "u") == 3 assert "c" not in d assert d.pop("e", "u") == "u" assert "e" not in d with pytest.raises(KeyError): d.pop("z") def test_ResponseHeaders_getitem_miss(): d = headers.ResponseHeaders() with pytest.raises(KeyError): d.__getitem__("a") def test_ResponseHeaders_getall(): d = headers.ResponseHeaders() d.add("a", 1) d.add("a", 2) result = d.getall("a") assert result == [1, 2] def test_ResponseHeaders_mixed(): d = headers.ResponseHeaders() d.add("a", 1) d.add("a", 2) d["b"] = 1 result = d.mixed() assert result == {"a": [1, 2], "b": 1} def test_ResponseHeaders_setitem_scalar_replaces_seq(): d = headers.ResponseHeaders() d.add("a", 2) d["a"] = 1 result = d.getall("a") assert result == [1] def test_ResponseHeaders_contains(): d = headers.ResponseHeaders() d["a"] = 1 assert "a" in d assert "b" not in d def test_EnvironHeaders_delitem(): d = headers.EnvironHeaders({"CONTENT_LENGTH": "10"}) del d["CONTENT-LENGTH"] assert not d with pytest.raises(KeyError): d.__delitem__("CONTENT-LENGTH") def test_EnvironHeaders_getitem(): d = headers.EnvironHeaders({"CONTENT_LENGTH": "10"}) assert d["CONTENT-LENGTH"] == "10" def test_EnvironHeaders_setitem(): d = headers.EnvironHeaders({}) d["abc"] = "10" assert d["abc"] == "10" def test_EnvironHeaders_contains(): d = headers.EnvironHeaders({}) d["a"] = "10" assert "a" in d assert "b" not in d def test__trans_key_not_basestring(): result = headers._trans_key(None) assert result is None def test__trans_key_not_a_header(): result = headers._trans_key("") assert result is None def test__trans_key_key2header(): result = headers._trans_key("CONTENT_TYPE") assert result == "Content-Type" def test__trans_key_httpheader(): result = headers._trans_key("HTTP_FOO_BAR") assert result == "Foo-Bar"