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