Couple of fixes
This commit is contained in:
parent
8f6b908100
commit
9c9f1cb2bf
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
|||||||
__pycache__
|
__pycache__
|
||||||
*.pyc
|
*.pyc
|
||||||
django_byostorage.egg-info
|
django_byostorage.egg-info
|
||||||
|
.coverage
|
||||||
|
htmlcov
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.core.files.storage import get_storage_class
|
from django.core.files.storage import get_storage_class, FileSystemStorage
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
import json
|
import json
|
||||||
|
|
||||||
@ -52,14 +52,19 @@ class UserStorage(models.Model):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValueError("Error in settings for storage '{0}' [{1}]".format(self.name, e))
|
raise ValueError("Error in settings for storage '{0}' [{1}]".format(self.name, e))
|
||||||
|
|
||||||
def test_connection(self):
|
def test_storage(self):
|
||||||
# just do something that requires connection
|
# just do something that requires connection
|
||||||
self.instance().exists('ping.txt')
|
try:
|
||||||
|
self.instance().listdir('')
|
||||||
|
except FileNotFoundError:
|
||||||
|
# FileSystemStorage doesn't create the base_dir until write
|
||||||
|
pass
|
||||||
|
return True
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
# check the settings are valid
|
# ensure the settings JSON isvalid
|
||||||
validate_json(self.settings_data)
|
if self.settings_data:
|
||||||
self.test_connection()
|
validate_json(self.settings_data)
|
||||||
|
|
||||||
super(UserStorage, self).save(*args, **kwargs)
|
super(UserStorage, self).save(*args, **kwargs)
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,9 @@ from .models import UserStorage
|
|||||||
from .user import BYOStorage
|
from .user import BYOStorage
|
||||||
from .http import HTTPStorage
|
from .http import HTTPStorage
|
||||||
|
|
||||||
|
#import logging
|
||||||
|
#logging.basicConfig(level=logging.DEBUG)
|
||||||
|
|
||||||
class MultiStorageTestCase(TestCase):
|
class MultiStorageTestCase(TestCase):
|
||||||
|
|
||||||
def test_storage_selection(self):
|
def test_storage_selection(self):
|
||||||
@ -56,8 +59,8 @@ class UserStorageTestCase(TestCase):
|
|||||||
UserStorage.objects.create(name='one', storage='django.core.files.storage.FileSystemStorage',
|
UserStorage.objects.create(name='one', storage='django.core.files.storage.FileSystemStorage',
|
||||||
settings_data='{"location": "foo}')
|
settings_data='{"location": "foo}')
|
||||||
|
|
||||||
def test_bad_settings(self):
|
def test_connection(self):
|
||||||
UserStorage.objects.create(name='one', storage='storages.backends.s3boto3.S3Boto3Storage',
|
instance = UserStorage.objects.create(name='one', storage='storages.backends.s3boto3.S3Boto3Storage',
|
||||||
settings_data='''
|
settings_data='''
|
||||||
{
|
{
|
||||||
"access_key": "polyphonic_test_key",
|
"access_key": "polyphonic_test_key",
|
||||||
@ -67,6 +70,23 @@ class UserStorageTestCase(TestCase):
|
|||||||
}
|
}
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
|
||||||
|
def test_bad_connection(self):
|
||||||
|
try:
|
||||||
|
UserStorage.objects.create(name='one', storage='storages.backends.s3boto3.S3Boto3Storage',
|
||||||
|
settings_data='''
|
||||||
|
{
|
||||||
|
"access_key": "polyphonic_test_key",
|
||||||
|
"secret_key": "the_wrong_secret",
|
||||||
|
"endpoint_url": "http://localhost:9000",
|
||||||
|
"bucket_name": "missing"
|
||||||
|
}
|
||||||
|
''')
|
||||||
|
self.fail("Should have raised an exception")
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class BYOStorageTestCase(TestCase):
|
class BYOStorageTestCase(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user