"""Dispatch route project_ref resolution from script names and tpl fallback."""
from src.domain.hosting.routing_plane import (
    parse_project_ref_from_p2hs_proxy_script_name,
    resolve_dispatch_route_project_ref,
)


def test_parse_prod_script_production_env():
    assert parse_project_ref_from_p2hs_proxy_script_name("p2hs-prod-pabc12def", "production") == "pabc12def"
    assert parse_project_ref_from_p2hs_proxy_script_name("P2HS-PROD-myref", "staging") == "myref"


def test_parse_prev_script_preview_env():
    assert parse_project_ref_from_p2hs_proxy_script_name("p2hs-prev-pabc12def", "preview") == "pabc12def"


def test_parse_mismatch_returns_none():
    assert parse_project_ref_from_p2hs_proxy_script_name("p2hs-prod-x", "preview") is None
    assert parse_project_ref_from_p2hs_proxy_script_name("p2hs-prev-x", "production") is None
    assert parse_project_ref_from_p2hs_proxy_script_name("custom-name", "production") is None


def test_resolve_explicit_wins():
    assert (
        resolve_dispatch_route_project_ref(
            subdomain="foo",
            script_name="p2hs-prod-ignored",
            environment="production",
            explicit_project_ref="manual",
        )
        == "manual"
    )


def test_resolve_parsed_then_tpl():
    assert (
        resolve_dispatch_route_project_ref(
            subdomain="myapp",
            script_name="p2hs-prod-pxyz",
            environment="production",
            explicit_project_ref=None,
        )
        == "pxyz"
    )
    assert (
        resolve_dispatch_route_project_ref(
            subdomain="myapp",
            script_name="custom-worker",
            environment="production",
            explicit_project_ref=None,
        )
        == "tpl-myapp"
    )


def test_proxy_and_dispatcher_preserve_public_host():
    from src.domain.hosting.routing_plane import CloudflareRoutingProvider

    provider = CloudflareRoutingProvider.__new__(CloudflareRoutingProvider)
    proxy = provider._proxy_worker_source("https://preview.p2hs-abc.pages.dev", "pabc12def")
    assert "x-p2hs-public-origin" in proxy
    assert "x-forwarded-host" in proxy
    dispatcher = provider._dispatcher_source("p2hsapp.com")
    assert "x-p2hs-public-origin" in dispatcher
    assert "x-forwarded-host" in dispatcher
