File size: 1,455 Bytes
d958e80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pytest

from app.security import (
    generate_session_id, generate_worker_id, generate_job_id,
    hash_payload, hash_json, constant_time_compare,
    create_worker_join_token, verify_worker_join_token,
    validate_payload_size, validate_allowed_job_type,
    validate_origin, sanitize_public_error,
)
from app.config import Settings


def test_payload_hash():
    h1 = hash_payload(b"hello")
    h2 = hash_payload(b"hello")
    h3 = hash_payload(b"world")
    assert h1 == h2
    assert h1 != h3
    assert len(h1) == 64


def test_payload_size_limit():
    from app.config import Settings
    small = b"x" * 100
    large = b"x" * (Settings.get_max_payload_bytes() + 1)
    assert validate_payload_size(small) is True
    assert validate_payload_size(large) is False


def test_constant_time_compare():
    assert constant_time_compare("abc", "abc") is True
    assert constant_time_compare("abc", "abC") is False


def test_origin_validation():
    assert validate_origin("https://huggingface.co") is True
    assert validate_origin("http://localhost:7860") is True
    assert validate_origin(None) is True


def test_public_error_sanitization():
    assert sanitize_public_error("secret key leaked") == "Internal error"
    assert sanitize_public_error("normal error") == "normal error"


def test_valid_job_type():
    assert validate_allowed_job_type("text_embedding") is True
    assert validate_allowed_job_type("invalid_type") is False