Skip to content

Commit 78d978f

Browse files
committed
root_path mandatory for minio_util calls
1 parent d0c066f commit 78d978f

3 files changed

Lines changed: 20 additions & 17 deletions

File tree

app/tasks/validation_tasks.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def perform_ro_crate_validation(
188188
def check_ro_crate_exists(
189189
bucket_name: str,
190190
crate_id: str,
191-
root_path: str = None,
191+
root_path: str,
192192
) -> bool:
193193
"""
194194
Checks for the existence of an RO-Crate using the provided Crate ID.
@@ -211,7 +211,7 @@ def check_ro_crate_exists(
211211
def check_validation_exists(
212212
bucket_name: str,
213213
crate_id: str,
214-
root_path: str = None,
214+
root_path: str,
215215
) -> bool:
216216
"""
217217
Checks for the existence of a validation result using the provided Crate ID.
@@ -234,7 +234,7 @@ def check_validation_exists(
234234
def return_ro_crate_validation(
235235
bucket_name: str,
236236
crate_id: str,
237-
root_path: str = None,
237+
root_path: str,
238238
) -> dict | str:
239239
"""
240240
Retrieves the validation result for an RO-Crate using the provided Crate ID.

app/utils/minio_utils.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def update_validation_status_in_minio(minio_bucket: str, crate_id: str, validati
108108
)
109109

110110

111-
def get_validation_status_from_minio(minio_bucket: str, crate_id: str) -> dict:
111+
def get_validation_status_from_minio(minio_bucket: str, crate_id: str, root_path: str) -> dict:
112112
"""
113113
Checks for the existence of a validation report for the given RO-Crate in the MinIO bucket.
114114
Returns validation message if it exists, or notification that it is missing if not.
@@ -120,7 +120,10 @@ def get_validation_status_from_minio(minio_bucket: str, crate_id: str) -> dict:
120120
"""
121121

122122
# The object in MinIO is <crate_id>_validation/validation_status.txt
123-
object_name = f"{crate_id}_validation/validation_status.txt"
123+
if root_path:
124+
object_name = f"{root_path}/{crate_id}_validation/validation_status.txt"
125+
else:
126+
object_name = f"{crate_id}_validation/validation_status.txt"
124127

125128
logging.info(f"Getting object {object_name}")
126129

@@ -182,7 +185,7 @@ def download_file_from_minio(minio_client: object, minio_bucket: str, object_pat
182185
raise InvalidAPIUsage(f"Unknown Error: {e}", 500)
183186

184187

185-
def find_validation_object_on_minio(rocrate_id: str, minio_client, minio_bucket: str, storage_path: str = None) -> object:
188+
def find_validation_object_on_minio(rocrate_id: str, minio_client, minio_bucket: str, storage_path: str) -> object:
186189
"""
187190
Checks that the requested object exists on the MinIO instance.
188191
@@ -219,7 +222,7 @@ def find_validation_object_on_minio(rocrate_id: str, minio_client, minio_bucket:
219222
return return_object
220223

221224

222-
def find_rocrate_object_on_minio(rocrate_id: str, minio_client, minio_bucket: str, storage_path: str = None) -> object | bool:
225+
def find_rocrate_object_on_minio(rocrate_id: str, minio_client, minio_bucket: str, storage_path: str) -> object | bool:
223226
"""
224227
Checks that the requested object exists on the MinIO instance.
225228

tests/test_minio.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def test_rocrate_found_as_zip(mock_get_list):
122122
minio_client = MagicMock()
123123

124124
from app.utils.minio_utils import find_rocrate_object_on_minio
125-
result = find_rocrate_object_on_minio("rocrate123", minio_client, "bucket")
125+
result = find_rocrate_object_on_minio("rocrate123", minio_client, "bucket", None)
126126
assert result == obj
127127

128128

@@ -136,7 +136,7 @@ def test_rocrate_not_found(mock_get_list):
136136
minio_client = MagicMock()
137137

138138
from app.utils.minio_utils import find_rocrate_object_on_minio
139-
result = find_rocrate_object_on_minio("rocrate123", minio_client, "bucket")
139+
result = find_rocrate_object_on_minio("rocrate123", minio_client, "bucket", None)
140140

141141
mock_get_list.assert_called_once()
142142
assert not result
@@ -150,7 +150,7 @@ def test_storage_path_none(mock_get_list):
150150
minio_client = MagicMock()
151151

152152
from app.utils.minio_utils import find_rocrate_object_on_minio
153-
result = find_rocrate_object_on_minio("rocrate456", minio_client, "bucket")
153+
result = find_rocrate_object_on_minio("rocrate456", minio_client, "bucket", None)
154154
assert result == obj
155155

156156

@@ -193,7 +193,7 @@ def test_validation_object_found_without_storage_path(mock_get_list):
193193

194194
from app.utils.minio_utils import find_validation_object_on_minio
195195
# Execute
196-
result = find_validation_object_on_minio("rocrate123", MagicMock(), "bucket")
196+
result = find_validation_object_on_minio("rocrate123", MagicMock(), "bucket", None)
197197

198198
# Assert
199199
assert result == obj
@@ -206,7 +206,7 @@ def test_validation_object_not_found(mock_get_list):
206206
mock_get_list.return_value = [DummyObject("some/other/object.txt")]
207207

208208
from app.utils.minio_utils import find_validation_object_on_minio
209-
result = find_validation_object_on_minio("rocrate999", MagicMock(), "bucket")
209+
result = find_validation_object_on_minio("rocrate999", MagicMock(), "bucket", None)
210210

211211
assert result is False
212212

@@ -217,7 +217,7 @@ def test_validation_object_empty_list(mock_get_list):
217217
mock_get_list.return_value = []
218218

219219
from app.utils.minio_utils import find_validation_object_on_minio
220-
result = find_validation_object_on_minio("rocrate999", MagicMock(), "bucket")
220+
result = find_validation_object_on_minio("rocrate999", MagicMock(), "bucket", None)
221221

222222
assert result is False
223223

@@ -286,7 +286,7 @@ def test_successful_retrieval(mocker, mock_minio_response):
286286
mocker.patch("app.utils.minio_utils.get_minio_client", return_value=mock_client)
287287

288288
from app.utils.minio_utils import get_validation_status_from_minio
289-
result = get_validation_status_from_minio("test_bucket", "crate123")
289+
result = get_validation_status_from_minio("test_bucket", "crate123", None)
290290

291291
assert result == {"status": "valid"}
292292
mock_minio_response.close.assert_called_once()
@@ -307,7 +307,7 @@ def test_s3_error_raised(mocker):
307307

308308
from app.utils.minio_utils import get_validation_status_from_minio, InvalidAPIUsage
309309
with pytest.raises(InvalidAPIUsage) as exc:
310-
get_validation_status_from_minio("test_bucket", "crate123")
310+
get_validation_status_from_minio("test_bucket", "crate123", None)
311311

312312
assert exc.value.status_code == 500
313313
assert "S3 Error" in str(exc.value.message)
@@ -318,7 +318,7 @@ def test_value_error_raised(mocker):
318318

319319
from app.utils.minio_utils import get_validation_status_from_minio, InvalidAPIUsage
320320
with pytest.raises(InvalidAPIUsage) as exc:
321-
get_validation_status_from_minio("test_bucket", "crate123")
321+
get_validation_status_from_minio("test_bucket", "crate123", None)
322322

323323
assert exc.value.status_code == 500
324324
assert "Configuration Error" in str(exc.value.message)
@@ -331,7 +331,7 @@ def test_generic_exception_raised(mocker):
331331

332332
from app.utils.minio_utils import get_validation_status_from_minio, InvalidAPIUsage
333333
with pytest.raises(InvalidAPIUsage) as exc:
334-
get_validation_status_from_minio("test_bucket", "crate123")
334+
get_validation_status_from_minio("test_bucket", "crate123", None)
335335

336336
assert exc.value.status_code == 500
337337
assert "Unknown Error" in str(exc.value.message)

0 commit comments

Comments
 (0)