blob: e07721a3c83b538c31d5ef1114951ddc3d21fe48 [file] [edit]
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"