You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.7 KiB
Python

import pytest
from datetime import datetime, timedelta
from src.utils import parse_relative_expression, parse_date_string, sanitize_filename
def test_parse_relative_expression_days():
# Test T, T+n, T-n
result = parse_relative_expression("T")
assert result is not None
result_plus = parse_relative_expression("T+5")
assert result_plus is not None
result_minus = parse_relative_expression("T-3")
assert result_minus is not None
def test_parse_relative_expression_invalid():
assert parse_relative_expression("abc") is None
assert parse_relative_expression("123") is None
assert parse_relative_expression("T++1") is None
def test_parse_date_string_formats():
# Test various ISO and common formats
dt = parse_date_string("2024-11-08")
assert dt.year == 2024
assert dt.month == 11
assert dt.day == 8
dt = parse_date_string("08-11-2024")
assert dt.year == 2024
assert dt.month == 11
assert dt.day == 8
def test_sanitize_filename_basic():
assert sanitize_filename("test.txt") == "test.txt"
assert sanitize_filename("test space.txt") == "test space.txt"
assert sanitize_filename("test/path.txt") == "path.txt"
def test_sanitize_filename_unsafe_chars():
# Test removing unsafe characters
assert sanitize_filename("test$(id).txt") == "test.txt"
assert sanitize_filename("test${env}.txt") == "test.txt"
assert ".." not in sanitize_filename("test..txt")
assert sanitize_filename("test;rm -rf.txt") == "testrm -rf.txt"
def test_sanitize_filename_empty_or_invalid():
with pytest.raises(ValueError):
sanitize_filename("")
with pytest.raises(ValueError):
sanitize_filename("../../../")