from jarvis_gateway.legacy_links import LegacyLinkStatus, validate_legacy_link


def test_localhost_legacy_link_allowed() -> None:
    result = validate_legacy_link("http://127.0.0.1:5173")
    assert result.status == LegacyLinkStatus.CONFIGURED
    assert result.href == "http://127.0.0.1:5173"
    assert result.hostname_category == "localhost"


def test_tailnet_link_only_allowed_with_flag() -> None:
    blocked = validate_legacy_link("http://100.64.0.1:5175")
    allowed = validate_legacy_link("http://100.64.0.1:5175", allow_tailnet_links=True)
    assert blocked.status == LegacyLinkStatus.BLOCKED
    assert blocked.href is None
    assert blocked.hostname_category == "tailnet"
    assert allowed.status == LegacyLinkStatus.CONFIGURED
    assert allowed.href == "http://100.64.0.1:5175"


def test_external_url_blocked() -> None:
    result = validate_legacy_link("https://example.com/dashboard")
    assert result.status == LegacyLinkStatus.BLOCKED
    assert result.href is None


def test_secret_or_query_url_blocked() -> None:
    assert validate_legacy_link("http://127.0.0.1:5173?token=abc").status == LegacyLinkStatus.BLOCKED
    assert validate_legacy_link("http://127.0.0.1:5173/oauth").status == LegacyLinkStatus.BLOCKED
    assert validate_legacy_link("http://user:pass@127.0.0.1:5173").status == LegacyLinkStatus.BLOCKED


def test_invalid_url_fails_closed() -> None:
    result = validate_legacy_link("file:///tmp/dashboard")
    assert result.status == LegacyLinkStatus.BLOCKED
    assert result.href is None
