Spaces:
Runtime error
Runtime error
File size: 3,861 Bytes
05b45a5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
import os
from unittest.mock import patch
import pytest
from api.src.core.paths import (
_find_file,
_scan_directories,
get_content_type,
get_temp_dir_size,
get_temp_file_path,
list_temp_files,
)
@pytest.mark.asyncio
async def test_find_file_exists():
"""Test finding existing file."""
with patch("aiofiles.os.path.exists") as mock_exists:
mock_exists.return_value = True
path = await _find_file("test.txt", ["/test/path"])
assert path == "/test/path/test.txt"
@pytest.mark.asyncio
async def test_find_file_not_exists():
"""Test finding non-existent file."""
with patch("aiofiles.os.path.exists") as mock_exists:
mock_exists.return_value = False
with pytest.raises(FileNotFoundError, match="File not found"):
await _find_file("test.txt", ["/test/path"])
@pytest.mark.asyncio
async def test_find_file_with_filter():
"""Test finding file with filter function."""
with patch("aiofiles.os.path.exists") as mock_exists:
mock_exists.return_value = True
filter_fn = lambda p: p.endswith(".txt")
path = await _find_file("test.txt", ["/test/path"], filter_fn)
assert path == "/test/path/test.txt"
@pytest.mark.asyncio
async def test_scan_directories():
"""Test scanning directories."""
mock_entry = type("MockEntry", (), {"name": "test.txt"})()
with (
patch("aiofiles.os.path.exists") as mock_exists,
patch("aiofiles.os.scandir") as mock_scandir,
):
mock_exists.return_value = True
mock_scandir.return_value = [mock_entry]
files = await _scan_directories(["/test/path"])
assert "test.txt" in files
@pytest.mark.asyncio
async def test_get_content_type():
"""Test content type detection."""
test_cases = [
("test.html", "text/html"),
("test.js", "application/javascript"),
("test.css", "text/css"),
("test.png", "image/png"),
("test.unknown", "application/octet-stream"),
]
for filename, expected in test_cases:
content_type = await get_content_type(filename)
assert content_type == expected
@pytest.mark.asyncio
async def test_get_temp_file_path():
"""Test temp file path generation."""
with (
patch("aiofiles.os.path.exists") as mock_exists,
patch("aiofiles.os.makedirs") as mock_makedirs,
):
mock_exists.return_value = False
path = await get_temp_file_path("test.wav")
assert "test.wav" in path
mock_makedirs.assert_called_once()
@pytest.mark.asyncio
async def test_list_temp_files():
"""Test listing temp files."""
class MockEntry:
def __init__(self, name):
self.name = name
def is_file(self):
return True
mock_entry = MockEntry("test.wav")
with (
patch("aiofiles.os.path.exists") as mock_exists,
patch("aiofiles.os.scandir") as mock_scandir,
):
mock_exists.return_value = True
mock_scandir.return_value = [mock_entry]
files = await list_temp_files()
assert "test.wav" in files
@pytest.mark.asyncio
async def test_get_temp_dir_size():
"""Test getting temp directory size."""
class MockEntry:
def __init__(self, path):
self.path = path
def is_file(self):
return True
mock_entry = MockEntry("/tmp/test.wav")
mock_stat = type("MockStat", (), {"st_size": 1024})()
with (
patch("aiofiles.os.path.exists") as mock_exists,
patch("aiofiles.os.scandir") as mock_scandir,
patch("aiofiles.os.stat") as mock_stat_fn,
):
mock_exists.return_value = True
mock_scandir.return_value = [mock_entry]
mock_stat_fn.return_value = mock_stat
size = await get_temp_dir_size()
assert size == 1024
|