27 lines
792 B
Python
27 lines
792 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from app.api.v1.endpoints.platform import _validate_storage_key
|
||
|
|
|
||
|
|
|
||
|
|
def test_storage_key_is_scoped_to_resource_version() -> None:
|
||
|
|
assert (
|
||
|
|
_validate_storage_key("dataset", "ds_123", "v1", None, "train.jsonl")
|
||
|
|
== "datasets/ds_123/versions/v1/train.jsonl"
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.mark.parametrize(
|
||
|
|
"object_key",
|
||
|
|
[
|
||
|
|
"models/other/versions/v1/model.bin",
|
||
|
|
"datasets/ds_123/versions/v1/../secret.bin",
|
||
|
|
"datasets/ds_123/versions/v1/../../secret.bin",
|
||
|
|
"/datasets/ds_123/versions/v1/model.bin",
|
||
|
|
],
|
||
|
|
)
|
||
|
|
def test_storage_key_rejects_escape_or_cross_resource_paths(object_key: str) -> None:
|
||
|
|
with pytest.raises(ValueError):
|
||
|
|
_validate_storage_key("dataset", "ds_123", "v1", object_key, None)
|