def setUpClass(cls): cls.tmpdir = tempfile.mkdtemp() keyczart.Create(cls.tmpdir, "test", keyinfo.DECRYPT_AND_ENCRYPT, asymmetric=True) keyczart.AddKey(cls.tmpdir, "PRIMARY", size=4096)
def main(): # Dynamically configure the Django settings with the minimum necessary to # get Django running tests. KEY_LOCS = {} try: try: # If KeyCzar is available, set up the environment. from keyczar import keyczart, keyinfo # Create an RSA private key. keys_dir = tempfile.mkdtemp( "django_extensions_tests_keyzcar_rsa_dir") keyczart.Create(keys_dir, "test", keyinfo.DECRYPT_AND_ENCRYPT, asymmetric=True) keyczart.AddKey(keys_dir, "PRIMARY", size=4096) KEY_LOCS['DECRYPT_AND_ENCRYPT'] = keys_dir # Create an RSA public key. pub_dir = tempfile.mkdtemp( "django_extensions_tests_keyzcar_pub_dir") keyczart.PubKey(keys_dir, pub_dir) KEY_LOCS['ENCRYPT'] = pub_dir except ImportError: pass settings.configure( INSTALLED_APPS=[ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.admin', 'django.contrib.sessions', 'django_extensions', 'django_extensions.tests', ], # Django replaces this, but it still wants it. *shrugs* DATABASE_ENGINE='django.db.backends.sqlite3', DATABASES={'default': { 'ENGINE': 'django.db.backends.sqlite3', }}, MEDIA_ROOT='/tmp/django_extensions_test_media/', MEDIA_PATH='/media/', ROOT_URLCONF='django_extensions.tests.urls', DEBUG=True, TEMPLATE_DEBUG=True, ENCRYPTED_FIELD_KEYS_DIR=KEY_LOCS, ) from django.test.utils import get_runner test_runner = get_runner(settings)(verbosity=2, interactive=True) failures = test_runner.run_tests(['django_extensions']) sys.exit(failures) finally: for name, path in KEY_LOCS.items(): # cleanup crypto key temp dirs shutil.rmtree(path)
def main(): # Dynamically configure the Django settings with the minimum necessary to # get Django running tests ENCRYPTED_FIELD_KEYS_DIR = None try: try: from keyczar import keyczart, keyinfo ENCRYPTED_FIELD_KEYS_DIR = tempfile.mkdtemp( "django_extensions_tests_keyzcar_keys_dir") # TODO: move this to the unit test for encrypted fields keyczart.Create(ENCRYPTED_FIELD_KEYS_DIR, "test", keyinfo.DECRYPT_AND_ENCRYPT) keyczart.AddKey(ENCRYPTED_FIELD_KEYS_DIR, "PRIMARY") except ImportError: pass settings.configure( INSTALLED_APPS=[ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.admin', 'django.contrib.sessions', 'django_extensions', 'django_extensions.tests', ], # Django replaces this, but it still wants it. *shrugs* DATABASE_ENGINE='django.db.backends.sqlite3', DATABASES={'default': { 'ENGINE': 'django.db.backends.sqlite3', }}, MEDIA_ROOT='/tmp/django_extensions_test_media/', MEDIA_PATH='/media/', ROOT_URLCONF='django_extensions.tests.urls', DEBUG=True, TEMPLATE_DEBUG=True, ENCRYPTED_FIELD_KEYS_DIR=ENCRYPTED_FIELD_KEYS_DIR, ) from django.test.utils import get_runner test_runner = get_runner(settings)(verbosity=2, interactive=True) failures = test_runner.run_tests(['django_extensions']) sys.exit(failures) finally: if ENCRYPTED_FIELD_KEYS_DIR: # cleanup crypto key temp dir shutil.rmtree(ENCRYPTED_FIELD_KEYS_DIR)
def test_happy_path(self): with TempDirectory() as dir_name: keyczart.Create(dir_name, "some purpose", keyczart.keyinfo.SIGN_AND_VERIFY) keyczart.AddKey(dir_name, keyczart.keyinfo.PRIMARY) signer = keyczar.Signer.Read(dir_name) doc = { "dave": "was", "here": "today", } pre_sign_doc_len = len(doc) tamper.sign(signer, doc) self.assertEqual(len(doc), 1 + pre_sign_doc_len) self.assertTrue(tamper.verify(signer, doc))
def setUpClass(cls): """Setup the integration tests environment. Specifically: -- create a temporary database including creating a design doc which permits reading persistant instances of Fruit -- create a tampering signer -- configure the async model I/O classes to use the newly created tampering signer and temporary database """ # in case a previous test didn't clean itself up delete database # totally ignoring the result response = requests.delete(_database_url) # create database response = requests.put(_database_url) assert response.status_code == httplib.CREATED # install design doc url = "%s/_design/%s" % (_database_url, _design_doc_name) response = requests.put( url, data=_design_doc, headers={"Content-Type": "application/json; charset=utf8"}) assert response.status_code == httplib.CREATED # get async_model_actions using our temp database async_model_actions.database = _database_url # create a tampering signer and get async_model_actions using it tampering_dir_name = tempfile.mkdtemp() keyczart.Create( tampering_dir_name, "some purpose", keyczart.keyinfo.SIGN_AND_VERIFY) keyczart.AddKey( tampering_dir_name, keyczart.keyinfo.PRIMARY) tampering_signer = keyczar.Signer.Read(tampering_dir_name) shutil.rmtree(tampering_dir_name, ignore_errors=True) # get async_model_actions using our tampering signer async_model_actions.tampering_signer = tampering_signer
def keyczar_keys(request): # If KeyCzar is available, set up the environment. if keyczar_active: # Create an RSA private key. keys_dir = tempfile.mkdtemp("django_extensions_tests_keyzcar_rsa_dir") keyczart.Create(keys_dir, "test", keyinfo.DECRYPT_AND_ENCRYPT, asymmetric=True) keyczart.AddKey(keys_dir, "PRIMARY", size=4096) KEY_LOCS['DECRYPT_AND_ENCRYPT'] = keys_dir # Create an RSA public key. pub_dir = tempfile.mkdtemp("django_extensions_tests_keyzcar_pub_dir") keyczart.PubKey(keys_dir, pub_dir) KEY_LOCS['ENCRYPT'] = pub_dir # cleanup crypto key temp dirs def cleanup(): import shutil for name, path in KEY_LOCS.items(): shutil.rmtree(path) request.addfinalizer(cleanup)
def test_verify_fails_when_sig_tampered_with(self): with TempDirectory() as dir_name: keyczart.Create(dir_name, "some purpose", keyczart.keyinfo.SIGN_AND_VERIFY) keyczart.AddKey(dir_name, keyczart.keyinfo.PRIMARY) signer = keyczar.Signer.Read(dir_name) doc = { "dave": "was", "here": "today", } pre_sign_doc_len = len(doc) tamper.sign(signer, doc) self.assertEqual(len(doc), 1 + pre_sign_doc_len) doc[tamper._tampering_sig_prop_name] = "dave" self.assertFalse(tamper.verify(signer, doc))
def main(): # Dynamically configure the Django settings with the minimum necessary to # get Django running tests. KEY_LOCS = {} try: try: # If KeyCzar is available, set up the environment. from keyczar import keyczart, keyinfo # Create an RSA private key. keys_dir = tempfile.mkdtemp("django_extensions_tests_keyzcar_rsa_dir") keyczart.Create(keys_dir, "test", keyinfo.DECRYPT_AND_ENCRYPT, asymmetric=True) keyczart.AddKey(keys_dir, "PRIMARY", size=4096) KEY_LOCS['DECRYPT_AND_ENCRYPT'] = keys_dir # Create an RSA public key. pub_dir = tempfile.mkdtemp("django_extensions_tests_keyzcar_pub_dir") keyczart.PubKey(keys_dir, pub_dir) KEY_LOCS['ENCRYPT'] = pub_dir except ImportError: pass settings.configure( INSTALLED_APPS=[ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.admin', 'django.contrib.sessions', 'django_extensions.tests.testapp', 'django_extensions', ], # Django replaces this, but it still wants it. *shrugs* DATABASE_ENGINE='django.db.backends.sqlite3', DATABASES={ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': ':memory:', } }, MEDIA_ROOT='/tmp/django_extensions_test_media/', MEDIA_PATH='/media/', ROOT_URLCONF='django_extensions.tests.urls', DEBUG=True, TEMPLATE_DEBUG=True, ENCRYPTED_FIELD_KEYS_DIR=KEY_LOCS, ) if django.VERSION[:2] >= (1, 7): django.setup() apps = ['django_extensions'] if django.VERSION[:2] >= (1, 6): apps.append('django_extensions.tests.testapp') apps.append('django_extensions.tests') from django.core.management import call_command from django.test.utils import get_runner try: from django.contrib.auth import get_user_model except ImportError: USERNAME_FIELD = "username" else: USERNAME_FIELD = get_user_model().USERNAME_FIELD DjangoTestRunner = get_runner(settings) class TestRunner(DjangoTestRunner): def setup_databases(self, *args, **kwargs): result = super(TestRunner, self).setup_databases(*args, **kwargs) kwargs = { "interactive": False, "email": "*****@*****.**", USERNAME_FIELD: "admin", } call_command("createsuperuser", **kwargs) return result failures = TestRunner(verbosity=2, interactive=True).run_tests(apps) sys.exit(failures) finally: for name, path in KEY_LOCS.items(): # cleanup crypto key temp dirs shutil.rmtree(path)