import moto import pytest 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(unvalidated_config, None, None) else: validator.validate(unvalidated_config, None, None) def test_validate_s3_storage(app): validator = StorageValidator() with moto.mock_s3(): with pytest.raises(ConfigValidationException) as ipe: validator.validate({ 'DISTRIBUTED_STORAGE_CONFIG': { 'default': ('S3Storage', { 's3_access_key': 'invalid', 's3_secret_key': 'invalid', 's3_bucket': 'somebucket', 'storage_path': '' }), } }, None, None) assert ipe.value.message == 'Invalid storage configuration: default: S3ResponseError: 404 Not Found'