Skip to content

Commit aebfc1d

Browse files
committed
Add EncryptedUUIDField
1 parent 9bfa86d commit aebfc1d

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

django_mongodb_backend/fields/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
EncryptedTextField,
2828
EncryptedTimeField,
2929
EncryptedURLField,
30+
EncryptedUUIDField,
3031
)
3132
from .json import register_json_field
3233
from .objectid import ObjectIdField
@@ -60,6 +61,7 @@
6061
"EncryptedTextField",
6162
"EncryptedTimeField",
6263
"EncryptedURLField",
64+
"EncryptedUUIDField",
6365
"ObjectIdAutoField",
6466
"ObjectIdField",
6567
"PolymorphicEmbeddedModelArrayField",

django_mongodb_backend/fields/encryption.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,7 @@ class EncryptedTimeField(EncryptedFieldMixin, models.TimeField):
113113

114114
class EncryptedURLField(EncryptedFieldMixin, models.URLField):
115115
pass
116+
117+
118+
class EncryptedUUIDField(EncryptedFieldMixin, models.UUIDField):
119+
pass

tests/encryption_/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
EncryptedTextField,
2525
EncryptedTimeField,
2626
EncryptedURLField,
27+
EncryptedUUIDField,
2728
)
2829
from django_mongodb_backend.models import EmbeddedModel
2930

@@ -108,6 +109,10 @@ class URLModel(EncryptedTestModel):
108109
value = EncryptedURLField(max_length=500, queries={"queryType": "equality"})
109110

110111

112+
class UUIDModel(EncryptedTestModel):
113+
value = EncryptedUUIDField(queries={"queryType": "equality"})
114+
115+
111116
# Range-queryable field models
112117
class BigIntegerModel(EncryptedTestModel):
113118
value = EncryptedBigIntegerField(queries={"queryType": "range"})

tests/encryption_/test_fields.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import datetime
2+
import uuid
23
from decimal import Decimal
34

45
from django_mongodb_backend.fields import EncryptedCharField
@@ -29,6 +30,7 @@
2930
TextModel,
3031
TimeModel,
3132
URLModel,
33+
UUIDModel,
3234
)
3335
from .test_base import EncryptionTestCase
3436

@@ -216,3 +218,12 @@ def test_deconstruct_preserves_queries_and_rewrites_path(self):
216218
self.assertEqual(new_field.queries, field.queries)
217219
self.assertIsNot(new_field, field)
218220
self.assertEqual(new_field.max_length, field.max_length)
221+
222+
223+
class UUIDFieldTests(EncryptionTestCase):
224+
def test_uuid_field(self):
225+
test_uuid = uuid.uuid4()
226+
UUIDModel.objects.create(value=test_uuid)
227+
fetched = UUIDModel.objects.get(value=test_uuid)
228+
self.assertEqual(fetched.value, test_uuid)
229+
self.assertEncrypted(fetched, "value")

0 commit comments

Comments
 (0)