class CryptoHelperTestCase(TestCase): def setUp(self): self.crypto_helper = CryptoHelper('---dummy--key---') def test_encrypt_and_decrypt(self): plain_text = 'Hello, World' encrypted_text = self.crypto_helper.encrypt(plain_text) decrypted_text = self.crypto_helper.decrypt(encrypted_text) self.assertEqual(plain_text, decrypted_text)
class EncryptedFieldMixin: def __init__(self, *args, **kwargs): self.key = kwargs.pop('key', None) self.crypto = CryptoHelper(self.key) super().__init__() def from_db_value(self, value, expression, connection, context): if value is None or len(value) <= 1: return value try: return self.crypto.decrypt(value) except ValueError: return value def get_prep_value(self, value): if value is None or value == '': return value return self.crypto.encrypt(value)