Skip to content

Commit 8fe38f4

Browse files
committed
Add EncryptedObjectIdField + test
1 parent f7c5077 commit 8fe38f4

File tree

4 files changed

+18
-9
lines changed

4 files changed

+18
-9
lines changed

django_mongodb_backend/fields/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
EncryptedFloatField,
2121
EncryptedGenericIPAddressField,
2222
EncryptedIntegerField,
23+
EncryptedObjectIdField,
2324
EncryptedPositiveBigIntegerField,
2425
EncryptedPositiveIntegerField,
2526
EncryptedPositiveSmallIntegerField,
@@ -54,6 +55,7 @@
5455
"EncryptedFloatField",
5556
"EncryptedGenericIPAddressField",
5657
"EncryptedIntegerField",
58+
"EncryptedObjectIdField",
5759
"EncryptedPositiveBigIntegerField",
5860
"EncryptedPositiveIntegerField",
5961
"EncryptedPositiveSmallIntegerField",

django_mongodb_backend/fields/encryption.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from django.db import models
22

33
from django_mongodb_backend.fields import ArrayField, EmbeddedModelArrayField, EmbeddedModelField
4+
from django_mongodb_backend.fields.objectid import ObjectIdField
45

56

67
class EncryptedArrayField(ArrayField):
@@ -87,6 +88,10 @@ class EncryptedIntegerField(EncryptedFieldMixin, models.IntegerField):
8788
pass
8889

8990

91+
class EncryptedObjectIdField(EncryptedFieldMixin, ObjectIdField):
92+
pass
93+
94+
9095
class EncryptedPositiveBigIntegerField(EncryptedFieldMixin, models.PositiveBigIntegerField):
9196
pass
9297

tests/encryption_/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
EncryptedFloatField,
1818
EncryptedGenericIPAddressField,
1919
EncryptedIntegerField,
20+
EncryptedObjectIdField,
2021
EncryptedPositiveBigIntegerField,
2122
EncryptedPositiveIntegerField,
2223
EncryptedPositiveSmallIntegerField,
@@ -101,6 +102,10 @@ class GenericIPAddressModel(EncryptedTestModel):
101102
value = EncryptedGenericIPAddressField(queries={"queryType": "equality"})
102103

103104

105+
class ObjectIdModel(EncryptedTestModel):
106+
value = EncryptedObjectIdField(queries={"queryType": "equality"})
107+
108+
104109
class TextModel(EncryptedTestModel):
105110
value = EncryptedTextField(queries={"queryType": "equality"})
106111

tests/encryption_/test_fields.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
import uuid
33
from decimal import Decimal
44

5+
from bson import ObjectId
6+
57
from django_mongodb_backend.fields import EncryptedCharField
68

79
from .models import (
@@ -21,6 +23,7 @@
2123
GenericIPAddressModel,
2224
IntegerModel,
2325
Movie,
26+
ObjectIdModel,
2427
Patient,
2528
PatientRecord,
2629
PositiveBigIntegerModel,
@@ -74,15 +77,6 @@ def test_array(self):
7477
self.assertEqual(len(movie.cast), 2)
7578
self.assertEqual(movie.cast[0].name, "Actor One")
7679
self.assertEqual(movie.cast[1].name, "Actor Two")
77-
78-
# ======================================================================
79-
# ERROR: test_array (encryption_.test_fields.EmbeddedModelArrayTests.test_array)
80-
# ----------------------------------------------------------------------
81-
# Traceback (most recent call last):
82-
# …
83-
# self.assertIsInstance(data[field], Binary)
84-
# ~~~~^^^^^^^
85-
# TypeError: 'NoneType' object is not subscriptable
8680
# self.assertEncrypted(self.movie, "cast")
8781

8882

@@ -117,6 +111,9 @@ def test_email(self):
117111
def test_ip(self):
118112
self.assertEquality(GenericIPAddressModel, "192.168.0.1")
119113

114+
def test_objectid(self):
115+
self.assertEquality(ObjectIdModel, ObjectId())
116+
120117
def test_text(self):
121118
self.assertEquality(TextModel, "some text")
122119

0 commit comments

Comments
 (0)