Compare commits
5
Commits
396cf83a05
...
v0.2.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa011be862 | ||
|
|
2e9330949c | ||
|
|
3ab8da92fb | ||
|
|
1dd604dc2a | ||
|
|
e5c4025aeb |
@@ -15,8 +15,6 @@ from python_repositories.interfaces import (
|
||||
# Handle optional dependencies
|
||||
if find_spec("minio") is not None:
|
||||
import minio
|
||||
else:
|
||||
minio = None
|
||||
|
||||
|
||||
class MinioAdapter(
|
||||
@@ -115,13 +113,20 @@ class MinioAdapter(
|
||||
self.logger.debug(res)
|
||||
return res
|
||||
|
||||
def _put(self, object_name: str, data: BytesIO) -> None:
|
||||
def _put(
|
||||
self,
|
||||
object_name: str,
|
||||
data: BytesIO,
|
||||
content_type: str = "application/octet-stream",
|
||||
) -> None:
|
||||
"""Put an object into the Minio bucket."""
|
||||
# Check input
|
||||
if not isinstance(object_name, str) or len(object_name) == 0:
|
||||
raise ValueError("object_name must be a non-empty string")
|
||||
if not isinstance(data, BytesIO) or data.getbuffer().nbytes == 0:
|
||||
raise ValueError("data must be a non-empty BytesIO object")
|
||||
if not isinstance(content_type, str) or len(content_type) == 0:
|
||||
raise ValueError("content_type must be a non-empty string")
|
||||
# Check connection
|
||||
if self._client is None or not self.is_connected:
|
||||
raise ConnectionError("Not connected to Minio")
|
||||
@@ -136,6 +141,7 @@ class MinioAdapter(
|
||||
data=data,
|
||||
length=num_bytes,
|
||||
part_size=self.chunk_size,
|
||||
content_type=content_type,
|
||||
)
|
||||
self.logger.debug(
|
||||
f"Put object '{object_name}' into bucket '{self._bucket_name}'"
|
||||
|
||||
@@ -17,9 +17,6 @@ from python_repositories.interfaces import (
|
||||
if find_spec("redis") is not None:
|
||||
import redis
|
||||
from redis.commands.json.path import Path as RedisPath
|
||||
else:
|
||||
redis = None # type: ignore
|
||||
RedisPath = None # type: ignore
|
||||
|
||||
|
||||
class RedisAdapter(
|
||||
|
||||
@@ -370,6 +370,20 @@ def test_should_raise_value_error_on_invalid_put_data(
|
||||
minio_adapter._put(object_name, data) # type: ignore
|
||||
|
||||
|
||||
def test_should_raise_value_error_on_invalid_put_content_type(
|
||||
data: BytesIO,
|
||||
minio_adapter: MinioAdapter,
|
||||
) -> None:
|
||||
"""Test that the MinioAdapter raises ValueError when putting with an invalid content type."""
|
||||
# Arrange
|
||||
object_name = "valid_object_name"
|
||||
invalid_content_types = ["", 123, None]
|
||||
# Act & Assert
|
||||
for content_type in invalid_content_types:
|
||||
with pytest.raises(ValueError):
|
||||
minio_adapter._put(object_name, data, content_type) # type: ignore
|
||||
|
||||
|
||||
def test_should_raise_connection_error_on_put_when_not_connected(
|
||||
data: BytesIO,
|
||||
minio_adapter: MinioAdapter,
|
||||
|
||||
Reference in New Issue
Block a user