Skip to content

Commit a30a1eb

Browse files
committed
Merge pull request #48 from ksonbol/master
Raise ValueError in get_db_prep_value() when value is of invalid length
2 parents 57f6e43 + f00f89d commit a30a1eb

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

uuidfield/fields.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ def get_db_prep_value(self, value, connection, prepared=False):
118118
value = str(value)
119119
if isinstance(value, str):
120120
if '-' in value:
121-
return value.replace('-', '')
121+
value = value.replace('-', '')
122+
uuid.UUID(value) # raises ValueError with invalid UUID format
122123
return value
123124

124125
def value_to_string(self, obj):

uuidfield/tests/tests.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,24 @@ def test_namespace(self):
3333
self.assertTrue(isinstance(obj.uuid, uuid.UUID))
3434
self.assertEquals(obj.uuid.version, 5)
3535

36+
def test_long_uuid(self):
37+
invalid_uuid = "1" * 33
38+
self.assertRaises(ValueError, AutoUUIDField.objects.get, uuid=invalid_uuid)
39+
q = AutoUUIDField.objects.filter(uuid=invalid_uuid)
40+
self.assertRaises(ValueError, list, q)
41+
42+
def test_short_uuid(self):
43+
invalid_uuid = "1" * 31
44+
self.assertRaises(ValueError, AutoUUIDField.objects.get, uuid=invalid_uuid)
45+
q = AutoUUIDField.objects.filter(uuid=invalid_uuid)
46+
self.assertRaises(ValueError, list, q)
47+
48+
def test_invalid_hex(self):
49+
invalid_uuid = 'z' * 32
50+
self.assertRaises(ValueError, AutoUUIDField.objects.get, uuid=invalid_uuid)
51+
q = AutoUUIDField.objects.filter(uuid=invalid_uuid)
52+
self.assertRaises(ValueError, list, q)
53+
3654
def test_broken_namespace(self):
3755
self.assertRaises(ValueError, BrokenNamespaceUUIDField.objects.create)
3856

0 commit comments

Comments
 (0)