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 not 'b' 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 == None def test__trans_key_not_a_header(): result = headers._trans_key('') assert result == 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'