File size: 1,284 Bytes
bdb9114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
df73d76
bdb9114
 
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
"""
Tests for file validation utilities.
"""
import pytest
from backend.utils.validators import (
    validate_file_type,
    validate_file_size,
    validate_file,
    FileValidationError
)


def test_validate_file_type_valid_png(sample_image_bytes):
    mime_type, extension = validate_file_type(sample_image_bytes, "test.png")
    assert mime_type == "image/png"
    assert extension == "png"


def test_validate_file_type_invalid():
    fake_image = b"This is not an image"

    with pytest.raises(FileValidationError):
        validate_file_type(fake_image, "fake.jpg")


def test_validate_file_size_within_limit(sample_image_bytes):
    size = validate_file_size(sample_image_bytes, "small.png")
    assert size == len(sample_image_bytes)


def test_validate_file_size_exceeds_limit():
    large_file = b"x" * (60 * 1024 * 1024)

    with pytest.raises(FileValidationError):
        validate_file_size(large_file, "huge.bin")


def test_validate_file_complete(sample_image_bytes):
    result = validate_file(sample_image_bytes, "test.png")

    assert result["valid"] is True
    assert result["mime_type"] == "image/png"
    assert result["extension"] == "png"
    assert result["size_bytes"] > 0
    assert result["size_mb"] < 1.0
    assert result["filename"] == "test.png"