40 lines
No EOL
1.4 KiB
Python
40 lines
No EOL
1.4 KiB
Python
import pytest
|
|
|
|
from moto import mock_s3_deprecated as mock_s3
|
|
|
|
from util.config.validator import ValidatorContext
|
|
from util.config.validators import ConfigValidationException
|
|
from util.config.validators.validate_storage import StorageValidator
|
|
|
|
from test.fixtures import *
|
|
|
|
@pytest.mark.parametrize('unvalidated_config, expected', [
|
|
({}, ConfigValidationException),
|
|
({'DISTRIBUTED_STORAGE_CONFIG': {}}, ConfigValidationException),
|
|
({'DISTRIBUTED_STORAGE_CONFIG': {'local': None}}, ConfigValidationException),
|
|
({'DISTRIBUTED_STORAGE_CONFIG': {'local': ['FakeStorage', {}]}}, None),
|
|
])
|
|
def test_validate_storage(unvalidated_config, expected, app):
|
|
validator = StorageValidator()
|
|
if expected is not None:
|
|
with pytest.raises(expected):
|
|
validator.validate(ValidatorContext(unvalidated_config))
|
|
else:
|
|
validator.validate(ValidatorContext(unvalidated_config))
|
|
|
|
def test_validate_s3_storage(app):
|
|
validator = StorageValidator()
|
|
with mock_s3():
|
|
with pytest.raises(ConfigValidationException) as ipe:
|
|
validator.validate(ValidatorContext({
|
|
'DISTRIBUTED_STORAGE_CONFIG': {
|
|
'default': ('S3Storage', {
|
|
's3_access_key': 'invalid',
|
|
's3_secret_key': 'invalid',
|
|
's3_bucket': 'somebucket',
|
|
'storage_path': ''
|
|
}),
|
|
}
|
|
}))
|
|
|
|
assert str(ipe.value) == 'Invalid storage configuration: default: S3ResponseError: 404 Not Found' |