|
1 | 1 | import datetime |
| 2 | +import uuid |
2 | 3 | from decimal import Decimal |
3 | 4 |
|
| 5 | +from bson import ObjectId |
| 6 | + |
4 | 7 | from django_mongodb_backend.fields import EncryptedCharField |
5 | 8 |
|
6 | 9 | from .models import ( |
7 | 10 | Actor, |
| 11 | + ArrayModel, |
8 | 12 | BigIntegerModel, |
9 | 13 | Billing, |
10 | 14 | BinaryModel, |
|
19 | 23 | GenericIPAddressModel, |
20 | 24 | IntegerModel, |
21 | 25 | Movie, |
| 26 | + ObjectIdModel, |
22 | 27 | Patient, |
23 | 28 | PatientRecord, |
24 | 29 | PositiveBigIntegerModel, |
|
28 | 33 | TextModel, |
29 | 34 | TimeModel, |
30 | 35 | URLModel, |
| 36 | + UUIDModel, |
31 | 37 | ) |
32 | 38 | from .test_base import EncryptionTestCase |
33 | 39 |
|
34 | 40 |
|
| 41 | +class ArrayModelTests(EncryptionTestCase): |
| 42 | + def setUp(self): |
| 43 | + self.array_model = ArrayModel.objects.create(values=[1, 2, 3, 4, 5]) |
| 44 | + |
| 45 | + def test_array(self): |
| 46 | + array_model = ArrayModel.objects.get(id=self.array_model.id) |
| 47 | + self.assertEqual(array_model.values, [1, 2, 3, 4, 5]) |
| 48 | + # self.assertEncrypted(self.array_model, "values") |
| 49 | + |
| 50 | + |
35 | 51 | class EmbeddedModelTests(EncryptionTestCase): |
36 | 52 | def setUp(self): |
37 | 53 | self.billing = Billing(cc_type="Visa", cc_number="4111111111111111") |
@@ -61,15 +77,6 @@ def test_array(self): |
61 | 77 | self.assertEqual(len(movie.cast), 2) |
62 | 78 | self.assertEqual(movie.cast[0].name, "Actor One") |
63 | 79 | self.assertEqual(movie.cast[1].name, "Actor Two") |
64 | | - |
65 | | - # ====================================================================== |
66 | | - # ERROR: test_array (encryption_.test_fields.EmbeddedModelArrayTests.test_array) |
67 | | - # ---------------------------------------------------------------------- |
68 | | - # Traceback (most recent call last): |
69 | | - # … |
70 | | - # self.assertIsInstance(data[field], Binary) |
71 | | - # ~~~~^^^^^^^ |
72 | | - # TypeError: 'NoneType' object is not subscriptable |
73 | 80 | # self.assertEncrypted(self.movie, "cast") |
74 | 81 |
|
75 | 82 |
|
@@ -104,6 +111,9 @@ def test_email(self): |
104 | 111 | def test_ip(self): |
105 | 112 | self.assertEquality(GenericIPAddressModel, "192.168.0.1") |
106 | 113 |
|
| 114 | + def test_objectid(self): |
| 115 | + self.assertEquality(ObjectIdModel, ObjectId()) |
| 116 | + |
107 | 117 | def test_text(self): |
108 | 118 | self.assertEquality(TextModel, "some text") |
109 | 119 |
|
@@ -205,3 +215,12 @@ def test_deconstruct_preserves_queries_and_rewrites_path(self): |
205 | 215 | self.assertEqual(new_field.queries, field.queries) |
206 | 216 | self.assertIsNot(new_field, field) |
207 | 217 | self.assertEqual(new_field.max_length, field.max_length) |
| 218 | + |
| 219 | + |
| 220 | +class UUIDFieldTests(EncryptionTestCase): |
| 221 | + def test_uuid_field(self): |
| 222 | + test_uuid = uuid.uuid4() |
| 223 | + UUIDModel.objects.create(value=test_uuid) |
| 224 | + fetched = UUIDModel.objects.get(value=test_uuid) |
| 225 | + self.assertEqual(fetched.value, test_uuid) |
| 226 | + # self.assertEncrypted(fetched, "value") |
0 commit comments