|
|
@@ -1,18 +1,26 @@
|
|
|
import unittest
|
|
|
-from keyczar import keyczar
|
|
|
+
|
|
|
|
|
|
from django.db import connection
|
|
|
from django.conf import settings
|
|
|
from django.core.management import call_command
|
|
|
from django.db.models import loading
|
|
|
|
|
|
-from django_extensions.tests.models import Secret
|
|
|
-from django_extensions.db.fields.encrypted import EncryptedTextField, EncryptedCharField
|
|
|
+# Only perform encrypted fields tests if keyczar is present
|
|
|
+# Resolves http://github.com/django-extensions/django-extensions/issues/#issue/17
|
|
|
+try:
|
|
|
+ from keyczar import keyczar
|
|
|
+ from django_extensions.tests.models import Secret
|
|
|
+ from django_extensions.db.fields.encrypted import EncryptedTextField, EncryptedCharField
|
|
|
+ keyczar_active = True
|
|
|
+except ImportError:
|
|
|
+ keyczar_active = False
|
|
|
|
|
|
class EncryptedFieldsTestCase(unittest.TestCase):
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
- self.crypt = keyczar.Crypter.Read(settings.ENCRYPTED_FIELD_KEYS_DIR)
|
|
|
+ if keyczar_active:
|
|
|
+ self.crypt = keyczar.Crypter.Read(settings.ENCRYPTED_FIELD_KEYS_DIR)
|
|
|
|
|
|
super(EncryptedFieldsTestCase, self).__init__(*args, **kwargs)
|
|
|
|
|
|
@@ -26,6 +34,8 @@ class EncryptedFieldsTestCase(unittest.TestCase):
|
|
|
settings.INSTALLED_APPS = self.old_installed_apps
|
|
|
|
|
|
def testCharFieldCreate(self):
|
|
|
+ if not keyczar_active:
|
|
|
+ return
|
|
|
test_val = "Test Secret"
|
|
|
secret = Secret.objects.create(name=test_val)
|
|
|
cursor = connection.cursor()
|
|
|
@@ -36,12 +46,16 @@ class EncryptedFieldsTestCase(unittest.TestCase):
|
|
|
self.assertEqual(test_val, decrypted_val)
|
|
|
|
|
|
def testCharFieldRead(self):
|
|
|
+ if not keyczar_active:
|
|
|
+ return
|
|
|
test_val = "Test Secret"
|
|
|
secret = Secret.objects.create(name=test_val)
|
|
|
retrieved_secret = Secret.objects.get(id=secret.id)
|
|
|
self.assertEqual(test_val, retrieved_secret.name)
|
|
|
|
|
|
def testTextFieldCreate(self):
|
|
|
+ if not keyczar_active:
|
|
|
+ return
|
|
|
test_val = "Test Secret"
|
|
|
secret = Secret.objects.create(text=test_val)
|
|
|
cursor = connection.cursor()
|
|
|
@@ -52,7 +66,9 @@ class EncryptedFieldsTestCase(unittest.TestCase):
|
|
|
self.assertEqual(test_val, decrypted_val)
|
|
|
|
|
|
def testTextFieldRead(self):
|
|
|
+ if not keyczar_active:
|
|
|
+ return
|
|
|
test_val = "Test Secret"
|
|
|
secret = Secret.objects.create(text=test_val)
|
|
|
retrieved_secret = Secret.objects.get(id=secret.id)
|
|
|
- self.assertEqual(test_val, retrieved_secret.text)
|
|
|
+ self.assertEqual(test_val, retrieved_secret.text)
|