Couple of fixes
This commit is contained in:
parent
8f6b908100
commit
9c9f1cb2bf
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
__pycache__
|
||||
*.pyc
|
||||
django_byostorage.egg-info
|
||||
.coverage
|
||||
htmlcov
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
from django.conf import settings
|
||||
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
|
||||
import json
|
||||
|
||||
@ -52,14 +52,19 @@ class UserStorage(models.Model):
|
||||
except Exception as 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
|
||||
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):
|
||||
# check the settings are valid
|
||||
validate_json(self.settings_data)
|
||||
self.test_connection()
|
||||
# ensure the settings JSON isvalid
|
||||
if self.settings_data:
|
||||
validate_json(self.settings_data)
|
||||
|
||||
super(UserStorage, self).save(*args, **kwargs)
|
||||
|
||||
|
||||
@ -7,6 +7,9 @@ from .models import UserStorage
|
||||
from .user import BYOStorage
|
||||
from .http import HTTPStorage
|
||||
|
||||
#import logging
|
||||
#logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
class MultiStorageTestCase(TestCase):
|
||||
|
||||
def test_storage_selection(self):
|
||||
@ -56,8 +59,8 @@ class UserStorageTestCase(TestCase):
|
||||
UserStorage.objects.create(name='one', storage='django.core.files.storage.FileSystemStorage',
|
||||
settings_data='{"location": "foo}')
|
||||
|
||||
def test_bad_settings(self):
|
||||
UserStorage.objects.create(name='one', storage='storages.backends.s3boto3.S3Boto3Storage',
|
||||
def test_connection(self):
|
||||
instance = UserStorage.objects.create(name='one', storage='storages.backends.s3boto3.S3Boto3Storage',
|
||||
settings_data='''
|
||||
{
|
||||
"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):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user