File size: 2,705 Bytes
b4ac377
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Tests for the Hugging Face Space verification helper."""

from __future__ import annotations

import os
import sys
from unittest.mock import Mock, patch


sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "scripts"))
import verify_private_spaces


def make_response(

    *,

    status_code: int = 200,

    content_type: str = "text/html; charset=utf-8",

) -> Mock:
    response = Mock()
    response.status_code = status_code
    response.headers = {"Content-Type": content_type}
    return response


def test_gradio_web_ok_html_accepts_gradio_markers() -> None:
    response = make_response()

    assert verify_private_spaces.gradio_web_ok_html(
        response,
        "<html><body><gradio-app></gradio-app></body></html>",
    )


def test_gradio_web_ok_html_rejects_non_gradio_html() -> None:
    response = make_response()

    assert not verify_private_spaces.gradio_web_ok_html(
        response,
        "<html><title>404 - Hugging Face</title><body>Not Found</body></html>",
    )


def test_gradio_web_ok_reset_requires_observation_payload() -> None:
    response = make_response(content_type="application/json")

    assert verify_private_spaces.gradio_web_ok_reset(
        response, {"observation": {"text": "ok"}}
    )
    assert not verify_private_spaces.gradio_web_ok_reset(response, {"state": {}})


@patch("verify_private_spaces.run_probe_request")
def test_probe_gradio_web_space_checks_root_and_reset(mock_run_probe_request) -> None:
    mock_run_probe_request.side_effect = (
        lambda session, base_url, headers, method, path, timeout, payload=None, ok_fn=None: {
            "method": method,
            "path": path,
            "payload": payload,
            "ok": True,
        }
    )

    results = verify_private_spaces.probe_gradio_web_space(
        Mock(),
        "https://example.com",
        {},
        5.0,
    )

    assert [result["path"] for result in results] == [
        "/",
        "/web",
        "/web/",
        "/health",
        "/metadata",
        "/schema",
        "/reset",
    ]
    assert results[-1]["method"] == "POST"
    assert results[-1]["payload"] is None


@patch("verify_private_spaces.probe_gradio_web_space")
def test_probe_space_dispatches_gradio_web(mock_probe_gradio_web_space) -> None:
    mock_probe_gradio_web_space.return_value = [{"ok": True}]

    result = verify_private_spaces.probe_space(
        "https://example.com",
        headers={},
        timeout=5.0,
        probe_profile="gradio_web",
    )

    assert result == [{"ok": True}]
    mock_probe_gradio_web_space.assert_called_once()