Skip to content

Commit 2d2ee88

Browse files
Piper Merriamphpdude
Piper Merriam
authored andcommitted
Add uuid version to uuid regex
1 parent 321877b commit 2d2ee88

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

macrosurl/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
'month': r'(0?([1-9])|10|11|12)',
1111
'day': r'((0|1|2)?([1-9])|[1-3]0|31)',
1212
'date': r'\d{4}-(0?([1-9])|10|11|12)-((0|1|2)?([1-9])|[1-3]0|31)',
13-
'uuid': r'[a-fA-F0-9]{8}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{12}'
13+
'uuid': r'[a-fA-F0-9]{8}-?[a-fA-F0-9]{4}-?[1345][a-fA-F0-9]{3}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{12}',
1414
}
1515

1616

@@ -74,4 +74,4 @@ def url(regex, view, kwargs=None, name=None, prefix=''):
7474
if isinstance(view, tuple) and len(view) == 3:
7575
end_dollar = False
7676

77-
return baseurl(MacroUrlPattern(regex, end_dollar=end_dollar), view, kwargs=kwargs, name=name, prefix=prefix)
77+
return baseurl(MacroUrlPattern(regex, end_dollar=end_dollar), view, kwargs=kwargs, name=name, prefix=prefix)

tests/urls.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ def test_date(self):
6666

6767
def test_uid(self):
6868
self.assertEqual(MacroUrlPattern('invoice/:uuid').compiled,
69-
'^invoice/(?P<uuid>[a-fA-F0-9]{8}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{12})$')
69+
'^invoice/(?P<uuid>[a-fA-F0-9]{8}-?[a-fA-F0-9]{4}-?[1345][a-fA-F0-9]{3}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{12})$')
7070

7171
def test_strongurl(self):
7272
self.assertEqual(MacroUrlPattern('orders/:date/:uuid/products/:slug/:variant_id').compiled,
73-
'^orders/(?P<date>\\d{4}-(0?([1-9])|10|11|12)-((0|1|2)?([1-9])|[1-3]0|31))/(?P<uuid>[a-fA-F0-9]{8}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{12})/products/(?P<slug>[\\w-]+)/(?P<variant_id>\\d+)$')
73+
'^orders/(?P<date>\\d{4}-(0?([1-9])|10|11|12)-((0|1|2)?([1-9])|[1-3]0|31))/(?P<uuid>[a-fA-F0-9]{8}-?[a-fA-F0-9]{4}-?[1345][a-fA-F0-9]{3}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{12})/products/(?P<slug>[\\w-]+)/(?P<variant_id>\\d+)$')
7474

7575
# noinspection PyProtectedMember
7676
def test_includes_end(self):
@@ -130,3 +130,10 @@ def test_uuid(self):
130130
self.assertIsNone(url("invoice/:uuid", 'view').resolve('invoice/123123-123123-1231231-1231312-3-1312312-'))
131131
for i in range(1, 1000):
132132
self.assertIsNotNone(url("invoice/:uuid", 'view').resolve('invoice/%s' % uuid.uuid4()))
133+
134+
def test_no_match_for_invalid_uuid(self):
135+
"""
136+
UUID with invalid version. The allowed versions are 1, 2, 4 and 5
137+
xxxxxxxx-xxxx-Vxxx-xxx-xxxxxxxxxxxx
138+
"""
139+
self.assertIsNone(url("invoice/:uuid", 'view').resolve('invoice/3e41b04d-0978-9027-86c2-aa90c63ecb54'))

0 commit comments

Comments
 (0)