From f8fb2d952d35a4f73ea90bf2d4519dfc44f6b088 Mon Sep 17 00:00:00 2001 From: William Grant Date: Wed, 9 Mar 2011 22:48:34 +1100 Subject: [PATCH] Fail if there is a duplicate tag. --- dkim/tests/test_dkim.py | 8 +++++++- dkim/util.py | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dkim/tests/test_dkim.py b/dkim/tests/test_dkim.py index c442a96..e5817a8 100644 --- a/dkim/tests/test_dkim.py +++ b/dkim/tests/test_dkim.py @@ -77,10 +77,16 @@ class TestParseTagValue(unittest.TestCase): {'foo': 'bar', 'baz': 'foo=bar'}, parse_tag_value('foo=bar;baz=foo=bar')) - def test_no_value(self): + def test_missing_value_is_an_error(self): self.assertRaises( InvalidTagValueList, parse_tag_value, 'foo=bar;baz') + def test_duplicate_tag_is_an_error(self): + self.assertRaises( + InvalidTagValueList, + parse_tag_value, 'foo=bar;foo=baz') + + if __name__ == '__main__': unittest.main() diff --git a/dkim/util.py b/dkim/util.py index 1b73102..d5d6f1e 100644 --- a/dkim/util.py +++ b/dkim/util.py @@ -42,5 +42,7 @@ def parse_tag_value(tag_list): key, value = tag_spec.split('=', 1) except ValueError: raise InvalidTagValueList() + if key.strip() in tags: + raise InvalidTagValueList() tags[key.strip()] = value.strip() return tags