Skip to content

Commit 7b0956d

Browse files
committed
Add EncryptedArrayField + test
1 parent 8a3ccf5 commit 7b0956d

File tree

4 files changed

+27
-1
lines changed

4 files changed

+27
-1
lines changed

django_mongodb_backend/fields/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .embedded_model import EmbeddedModelField
55
from .embedded_model_array import EmbeddedModelArrayField
66
from .encryption import (
7+
EncryptedArrayField,
78
EncryptedBigIntegerField,
89
EncryptedBinaryField,
910
EncryptedBooleanField,
@@ -36,6 +37,7 @@
3637
"ArrayField",
3738
"EmbeddedModelArrayField",
3839
"EmbeddedModelField",
40+
"EncryptedArrayField",
3941
"EncryptedBigIntegerField",
4042
"EncryptedBinaryField",
4143
"EncryptedBooleanField",

django_mongodb_backend/fields/encryption.py

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

3-
from django_mongodb_backend.fields import EmbeddedModelArrayField, EmbeddedModelField
3+
from django_mongodb_backend.fields import ArrayField, EmbeddedModelArrayField, EmbeddedModelField
4+
5+
6+
class EncryptedArrayField(ArrayField):
7+
encrypted = True
48

59

610
class EncryptedEmbeddedModelArrayField(EmbeddedModelArrayField):

tests/encryption_/models.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from django_mongodb_backend.fields import (
44
EmbeddedModelField,
5+
EncryptedArrayField,
56
EncryptedBigIntegerField,
67
EncryptedBinaryField,
78
EncryptedBooleanField,
@@ -33,6 +34,14 @@ class Meta:
3334
required_db_features = {"supports_queryable_encryption"}
3435

3536

37+
# Array models
38+
class ArrayModel(EncryptedTestModel):
39+
values = EncryptedArrayField(
40+
models.IntegerField(),
41+
size=5,
42+
)
43+
44+
3645
# Embedded models
3746
class Patient(EncryptedTestModel):
3847
patient_name = models.CharField(max_length=255)

tests/encryption_/test_fields.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from .models import (
77
Actor,
8+
ArrayModel,
89
BigIntegerModel,
910
Billing,
1011
BinaryModel,
@@ -32,6 +33,16 @@
3233
from .test_base import EncryptionTestCase
3334

3435

36+
class ArrayModelTests(EncryptionTestCase):
37+
def setUp(self):
38+
self.array_model = ArrayModel.objects.create(values=[1, 2, 3, 4, 5])
39+
40+
def test_array(self):
41+
array_model = ArrayModel.objects.get(id=self.array_model.id)
42+
self.assertEqual(array_model.values, [1, 2, 3, 4, 5])
43+
self.assertEncrypted(self.array_model, "values")
44+
45+
3546
class EmbeddedModelTests(EncryptionTestCase):
3647
def setUp(self):
3748
self.billing = Billing(cc_type="Visa", cc_number="4111111111111111")

0 commit comments

Comments
 (0)