File size: 1,340 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
import pytest

from app.capabilities import (
    normalize_capability, validate_capability, register_capabilities,
    get_capabilities, find_workers_with_capability, capability_to_endpoint_path,
    CAPABILITY_NAMES,
)
from app.models import JobType, WorkerRuntimeType


def test_valid_capability_names():
    names = list(CAPABILITY_NAMES.values())
    assert "iphone.text.embedding.private" in names
    assert "iphone.image.classify.local" in names
    assert "iphone.privacy.redact.local" in names


def test_invalid_capability_rejected():
    from app.capabilities import validate_capability
    cap = normalize_capability({"capability_name": "invalid.name", "runtime_type": WorkerRuntimeType.SAFARI_WASM})
    assert validate_capability(cap) is False


def test_capability_maps_to_endpoint():
    path = capability_to_endpoint_path("sess_abc", "iphone.text.embedding.private")
    assert path == "/api/session/sess_abc/cap/iphone.text.embedding.private"


def test_find_worker_for_capability():
    session_id = "sess_test"
    worker_id = "wk_test"
    caps = [{"capability_name": "iphone.text.embedding.private", "runtime_type": "safari_wasm", "model_id": "emb"}]
    register_capabilities(session_id, worker_id, caps)
    workers = find_workers_with_capability(session_id, JobType.TEXT_EMBEDDING)
    assert worker_id in workers