From 8070afa9b23142a2eaa39d357e3e3153f89484c3 Mon Sep 17 00:00:00 2001 From: Aron Jones Date: Mon, 29 Jul 2013 09:56:04 -0400 Subject: [PATCH] add boolean field --- encrypted_fields/fields.py | 4 ++++ encrypted_fields/tests.py | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/encrypted_fields/fields.py b/encrypted_fields/fields.py index c2d2017..eaa88fc 100644 --- a/encrypted_fields/fields.py +++ b/encrypted_fields/fields.py @@ -69,6 +69,10 @@ class EncryptedEmailField(EncryptedFieldMixin, models.EmailField): pass +class EncryptedBooleanField(EncryptedFieldMixin, models.BooleanField): + pass + + try: from south.modelsinspector import add_introspection_rules add_introspection_rules([], ['^encrypted_fields\.fields\.\w+Field']) diff --git a/encrypted_fields/tests.py b/encrypted_fields/tests.py index 5f5450d..95b65b8 100644 --- a/encrypted_fields/tests.py +++ b/encrypted_fields/tests.py @@ -12,6 +12,7 @@ EncryptedIntegerField, EncryptedFloatField, EncryptedEmailField, + EncryptedBooleanField, ) @@ -22,6 +23,7 @@ class TestModel(models.Model): integer = EncryptedIntegerField(null=True) floating = EncryptedFloatField(null=True) email = EncryptedEmailField(null=True) + boolean = EncryptedBooleanField(default=False) class FieldTest(TestCase): @@ -124,3 +126,23 @@ def test_email_field_encrypted(self): fresh_model = TestModel.objects.get(id=model.id) self.assertEqual(fresh_model.email, plaintext) + + def test_boolean_field_encrypted(self): + plaintext = True + + model = TestModel() + model.boolean = plaintext + model.save() + + ciphertext = self.get_db_value('boolean', model.id) + + self.assertNotEqual(plaintext, ciphertext) + self.assertNotEqual(True, ciphertext) + self.assertNotEqual('True', ciphertext) + self.assertNotEqual('true', ciphertext) + self.assertNotEqual('1', ciphertext) + self.assertNotEqual(1, ciphertext) + self.assertTrue(not isinstance(ciphertext, bool)) + + fresh_model = TestModel.objects.get(id=model.id) + self.assertEqual(fresh_model.boolean, plaintext)