# -*- coding: utf-8 -*- from webob import headers from nose.tools import ok_, assert_raises, eq_ class TestError(Exception): pass def test_ResponseHeaders_delitem_notpresent(): """Deleting a missing key from ResponseHeaders should raise a KeyError""" d = headers.ResponseHeaders() assert_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'] ok_('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) assert_raises(TypeError, d.pop, 'a', 'z', 'y') eq_(d.pop('a'), 1) ok_('a' not in d) eq_(d.pop('B'), 2) ok_('b' not in d) eq_(d.pop('c', 'u'), 3) ok_('c' not in d) eq_(d.pop('e', 'u'), 'u') ok_('e' not in d) assert_raises(KeyError, d.pop, 'z') def test_ResponseHeaders_getitem_miss(): d = headers.ResponseHeaders() assert_raises(KeyError, d.__getitem__, 'a') def test_ResponseHeaders_getall(): d = headers.ResponseHeaders() d.add('a', 1) d.add('a', 2) result = d.getall('a') eq_(result, [1,2]) def test_ResponseHeaders_mixed(): d = headers.ResponseHeaders() d.add('a', 1) d.add('a', 2) d['b'] = 1 result = d.mixed() eq_(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') eq_(result, [1]) def test_ResponseHeaders_contains(): d = headers.ResponseHeaders() d['a'] = 1 ok_('a' in d) ok_(not 'b' in d) def test_EnvironHeaders_delitem(): d = headers.EnvironHeaders({'CONTENT_LENGTH': '10'}) del d['CONTENT-LENGTH'] assert not d assert_raises(KeyError, d.__delitem__, 'CONTENT-LENGTH') def test_EnvironHeaders_getitem(): d = headers.EnvironHeaders({'CONTENT_LENGTH': '10'}) eq_(d['CONTENT-LENGTH'], '10') def test_EnvironHeaders_setitem(): d = headers.EnvironHeaders({}) d['abc'] = '10' eq_(d['abc'], '10') def test_EnvironHeaders_contains(): d = headers.EnvironHeaders({}) d['a'] = '10' ok_('a' in d) ok_(not 'b' in d) def test__trans_key_not_basestring(): result = headers._trans_key(None) eq_(result, None) def test__trans_key_not_a_header(): result = headers._trans_key('') eq_(result, None) def test__trans_key_key2header(): result = headers._trans_key('CONTENT_TYPE') eq_(result, 'Content-Type') def test__trans_key_httpheader(): result = headers._trans_key('HTTP_FOO_BAR') eq_(result, 'Foo-Bar')