From 6a59e4658e1f8da7d6f0dfe2174d405081f83e6e Mon Sep 17 00:00:00 2001 From: Stefan Wojcik Date: Wed, 22 Feb 2017 12:57:00 -0500 Subject: [PATCH] fix the exception message when validating unicode URLs --- mongoengine/fields.py | 4 ++-- tests/fields/fields.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 0ea7d3b6..11425095 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -139,12 +139,12 @@ class URLField(StringField): # Check first if the scheme is valid scheme = value.split('://')[0].lower() if scheme not in self.schemes: - self.error('Invalid scheme {} in URL: {}'.format(scheme, value)) + self.error(u'Invalid scheme {} in URL: {}'.format(scheme, value)) return # Then check full URL if not self.url_regex.match(value): - self.error('Invalid URL: {}'.format(value)) + self.error(u'Invalid URL: {}'.format(value)) return diff --git a/tests/fields/fields.py b/tests/fields/fields.py index e6898e1b..d900d706 100644 --- a/tests/fields/fields.py +++ b/tests/fields/fields.py @@ -346,6 +346,25 @@ class FieldTest(MongoDBTestCase): class Link(Document): url = URLField() + link = Link() + link.url = u'http://привет.com' + + # TODO fix URL validation - this IS a valid URL + # For now we just want to make sure that the error message is correct + try: + link.validate() + self.assertTrue(False) + except ValidationError as e: + self.assertEqual( + unicode(e), + u"ValidationError (Link:None) (Invalid URL: http://\u043f\u0440\u0438\u0432\u0435\u0442.com: ['url'])" + ) + + def test_unicode_url_validation(self): + """Ensure unicode URLs are validated properly.""" + class Link(Document): + url = URLField() + link = Link() link.url = 'google' self.assertRaises(ValidationError, link.validate)