mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import pytest
|
|
|
|
from infrastructure.s3.s3_uri import parse_s3_uri
|
|
|
|
|
|
def test_parses_simple_s3_uri() -> None:
|
|
# act / assert
|
|
assert parse_s3_uri("s3://my-bucket/file.csv") == ("my-bucket", "file.csv")
|
|
|
|
|
|
def test_parses_s3_uri_with_nested_key() -> None:
|
|
# act
|
|
bucket, key = parse_s3_uri("s3://my-bucket/nested/path/to/file.csv")
|
|
# assert
|
|
assert (bucket, key) == ("my-bucket", "nested/path/to/file.csv")
|
|
|
|
|
|
def test_rejects_s3_uri_without_key() -> None:
|
|
# act / assert
|
|
with pytest.raises(ValueError, match="bucket and a key"):
|
|
parse_s3_uri("s3://my-bucket")
|
|
|
|
|
|
def test_rejects_s3_uri_with_empty_key() -> None:
|
|
# act / assert
|
|
with pytest.raises(ValueError, match="bucket and a key"):
|
|
parse_s3_uri("s3://my-bucket/")
|
|
|
|
|
|
def test_parses_console_url_prefix() -> None:
|
|
# arrange
|
|
url = "https://eu-west-2.console.aws.amazon.com/s3/object/my-bucket?prefix=nested%2Ffile.csv"
|
|
# act / assert
|
|
assert parse_s3_uri(url) == ("my-bucket", "nested/file.csv")
|
|
|
|
|
|
def test_rejects_unparseable_string() -> None:
|
|
# act / assert
|
|
with pytest.raises(ValueError):
|
|
parse_s3_uri("not-a-uri-at-all")
|