53 lines
2.2 KiB
Python
53 lines
2.2 KiB
Python
import logging
|
|
|
|
import pytest
|
|
|
|
from pyinfra.exceptions import DataLoadingFailure
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
|
|
@pytest.mark.parametrize("client_name", ["mock", "azure", "s3"], scope="session")
|
|
class TestStorage:
|
|
def test_clearing_bucket_yields_empty_bucket(self, storage, bucket_name):
|
|
storage.clear_bucket(bucket_name)
|
|
data_received = storage.get_all_objects(bucket_name)
|
|
assert not {*data_received}
|
|
|
|
def test_getting_object_put_in_bucket_is_object(self, storage, bucket_name):
|
|
storage.clear_bucket(bucket_name)
|
|
storage.put_object(bucket_name, "file", b"content")
|
|
data_received = storage.get_object(bucket_name, "file")
|
|
assert b"content" == data_received
|
|
|
|
def test_getting_nested_object_put_in_bucket_is_nested_object(self, storage, bucket_name):
|
|
storage.clear_bucket(bucket_name)
|
|
storage.put_object(bucket_name, "folder/file", b"content")
|
|
data_received = storage.get_object(bucket_name, "folder/file")
|
|
assert b"content" == data_received
|
|
|
|
def test_getting_objects_put_in_bucket_are_objects(self, storage, bucket_name):
|
|
storage.clear_bucket(bucket_name)
|
|
storage.put_object(bucket_name, "file1", b"content 1")
|
|
storage.put_object(bucket_name, "folder/file2", b"content 2")
|
|
data_received = storage.get_all_objects(bucket_name)
|
|
assert {b"content 1", b"content 2"} == {*data_received}
|
|
|
|
def test_make_bucket_produces_bucket(self, storage, bucket_name):
|
|
storage.clear_bucket(bucket_name)
|
|
storage.make_bucket(bucket_name)
|
|
assert storage.has_bucket(bucket_name)
|
|
|
|
def test_listing_bucket_files_yields_all_files_in_bucket(self, storage, bucket_name):
|
|
storage.clear_bucket(bucket_name)
|
|
storage.put_object(bucket_name, "file1", b"content 1")
|
|
storage.put_object(bucket_name, "file2", b"content 2")
|
|
full_names_received = storage.get_all_object_names(bucket_name)
|
|
assert {"file1", "file2"} == {*full_names_received}
|
|
|
|
def test_data_loading_failure_raised_if_object_not_present(self, storage, bucket_name):
|
|
storage.clear_bucket(bucket_name)
|
|
with pytest.raises(DataLoadingFailure):
|
|
storage.get_object(bucket_name, "folder/file")
|