From bbc9b0f7681730ac97b077c87321f50d84179e9f Mon Sep 17 00:00:00 2001 From: Friday Godswill Date: Tue, 18 Jul 2023 07:15:47 +0200 Subject: [PATCH] Add tests that ensure keys are retained, update default arg for json TestModel field --- package_test/models.py | 2 +- package_test/tests.py | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/package_test/models.py b/package_test/models.py index 07601c0..115e7c9 100644 --- a/package_test/models.py +++ b/package_test/models.py @@ -10,4 +10,4 @@ class TestModel(models.Model): floating = EncryptedFloatField(null=True, blank=True) email = EncryptedEmailField(null=True, blank=True) boolean = EncryptedBooleanField(default=False, null=True) - json = EncryptedJSONField(default={}, null=True, blank=True) + json = EncryptedJSONField(default=dict, null=True, blank=True) diff --git a/package_test/tests.py b/package_test/tests.py index e002443..9d2c9b1 100644 --- a/package_test/tests.py +++ b/package_test/tests.py @@ -1,3 +1,4 @@ +import json import re from django.db import connection @@ -207,13 +208,25 @@ class FieldTest(TestCase): model.full_clean() model.save() - ciphertext = self.get_db_value("json", model.id) + ciphertext = json.loads(self.get_db_value("json", model.id)) + self.assertNotEqual(dict_values, ciphertext) fresh_model = TestModel.objects.get(id=model.id) self.assertEqual(fresh_model.json, dict_values) + def test_json_field_retains_keys(self): + plain_value = {"key": "value", "another_key": "some value"} + + model = TestModel() + model.json = plain_value + model.full_clean() + model.save() + + ciphertext = json.loads(self.get_db_value("json", model.id)) + + self.assertEqual(plain_value.keys(), ciphertext.keys()) class RotatedSaltTestCase(TestCase):