parse_tag_value now deals with bytes.

This commit is contained in:
William Grant
2011-03-19 18:47:51 +11:00
parent 88915e3a01
commit 9af52236fc
2 changed files with 14 additions and 14 deletions
+12 -12
View File
@@ -30,38 +30,38 @@ class TestParseTagValue(unittest.TestCase):
def test_single(self): def test_single(self):
self.assertEqual( self.assertEqual(
{'foo': 'bar'}, {b'foo': b'bar'},
parse_tag_value('foo=bar')) parse_tag_value(b'foo=bar'))
def test_trailing_separator_ignored(self): def test_trailing_separator_ignored(self):
self.assertEqual( self.assertEqual(
{'foo': 'bar'}, {b'foo': b'bar'},
parse_tag_value('foo=bar;')) parse_tag_value(b'foo=bar;'))
def test_multiple(self): def test_multiple(self):
self.assertEqual( self.assertEqual(
{'foo': 'bar', 'baz': 'foo'}, {b'foo': b'bar', b'baz': b'foo'},
parse_tag_value('foo=bar;baz=foo')) parse_tag_value(b'foo=bar;baz=foo'))
def test_value_with_equals(self): def test_value_with_equals(self):
self.assertEqual( self.assertEqual(
{'foo': 'bar', 'baz': 'foo=bar'}, {b'foo': b'bar', b'baz': b'foo=bar'},
parse_tag_value('foo=bar;baz=foo=bar')) parse_tag_value(b'foo=bar;baz=foo=bar'))
def test_whitespace_is_stripped(self): def test_whitespace_is_stripped(self):
self.assertEqual( self.assertEqual(
{'foo': 'bar', 'baz': 'f oo=bar'}, {b'foo': b'bar', b'baz': b'f oo=bar'},
parse_tag_value(' foo \t= bar;\tbaz= f oo=bar ')) parse_tag_value(b' foo \t= bar;\tbaz= f oo=bar '))
def test_missing_value_is_an_error(self): def test_missing_value_is_an_error(self):
self.assertRaisesRegexp( self.assertRaisesRegexp(
InvalidTagSpec, 'baz', InvalidTagSpec, 'baz',
parse_tag_value, 'foo=bar;baz') parse_tag_value, b'foo=bar;baz')
def test_duplicate_tag_is_an_error(self): def test_duplicate_tag_is_an_error(self):
self.assertRaisesRegexp( self.assertRaisesRegexp(
DuplicateTag, 'foo', DuplicateTag, 'foo',
parse_tag_value, 'foo=bar;foo=baz') parse_tag_value, b'foo=bar;foo=baz')
def test_suite(): def test_suite():
+2 -2
View File
@@ -55,13 +55,13 @@ def parse_tag_value(tag_list):
@param tag_list: A string containing a DKIM Tag=Value list. @param tag_list: A string containing a DKIM Tag=Value list.
""" """
tags = {} tags = {}
tag_specs = tag_list.split(';') tag_specs = tag_list.split(b';')
# Trailing semicolons are valid. # Trailing semicolons are valid.
if not tag_specs[-1]: if not tag_specs[-1]:
tag_specs.pop() tag_specs.pop()
for tag_spec in tag_specs: for tag_spec in tag_specs:
try: try:
key, value = tag_spec.split('=', 1) key, value = tag_spec.split(b'=', 1)
except ValueError: except ValueError:
raise InvalidTagSpec(tag_spec) raise InvalidTagSpec(tag_spec)
if key.strip() in tags: if key.strip() in tags: