Files
PolyWeather/tests/test_cloudflare_free_config.py
2026-06-10 21:00:48 +08:00

79 lines
2.9 KiB
Python

from scripts.configure_cloudflare_free import (
MANAGED_RULE_REF_PREFIX,
build_managed_cache_rules,
merge_managed_rules,
resolve_zone_id,
)
def test_cloudflare_managed_rules_apply_path_specific_edge_ttls_then_bypass_sensitive_requests():
rules = build_managed_cache_rules()
assert [rule["ref"] for rule in rules] == [
f"{MANAGED_RULE_REF_PREFIX}static",
f"{MANAGED_RULE_REF_PREFIX}pages",
f"{MANAGED_RULE_REF_PREFIX}cities",
f"{MANAGED_RULE_REF_PREFIX}city_detail",
f"{MANAGED_RULE_REF_PREFIX}scan",
f"{MANAGED_RULE_REF_PREFIX}bypass",
]
assert [
rule["action_parameters"]["edge_ttl"]["status_code_ttl"][0]["value"]
for rule in rules[:3]
] == [31536000, 600, 300]
for rule in rules[:3]:
assert rule["action_parameters"]["cache"] is True
assert rule["action_parameters"]["browser_ttl"] == {"mode": "respect_origin"}
assert rule["action_parameters"]["edge_ttl"]["mode"] == "respect_origin"
assert rule["action_parameters"]["edge_ttl"]["status_code_ttl"][1]["value"] == 0
for rule in rules[3:-1]:
assert rule["action_parameters"] == {
"cache": True,
"browser_ttl": {"mode": "respect_origin"},
}
assert rules[-1]["action_parameters"]["cache"] is False
assert 'http.host eq "api.polyweather.top"' in rules[-1]["expression"]
assert 'http.request.uri.query contains "force_refresh=true"' in rules[-1]["expression"]
def test_cloudflare_rule_merge_preserves_unmanaged_rules_and_puts_bypass_last():
existing = [
{
"ref": "existing_rule",
"description": "keep me",
"expression": 'http.host eq "example.com"',
"action": "set_cache_settings",
"action_parameters": {"cache": True},
"enabled": True,
},
{
"ref": f"{MANAGED_RULE_REF_PREFIX}old",
"description": "replace me",
"expression": "true",
"action": "set_cache_settings",
"action_parameters": {"cache": False},
"enabled": True,
},
]
merged = merge_managed_rules(existing, build_managed_cache_rules())
assert [rule["ref"] for rule in merged] == [
"existing_rule",
f"{MANAGED_RULE_REF_PREFIX}static",
f"{MANAGED_RULE_REF_PREFIX}pages",
f"{MANAGED_RULE_REF_PREFIX}cities",
f"{MANAGED_RULE_REF_PREFIX}city_detail",
f"{MANAGED_RULE_REF_PREFIX}scan",
f"{MANAGED_RULE_REF_PREFIX}bypass",
]
assert merged[-1]["action_parameters"]["cache"] is False
def test_resolve_zone_id_uses_explicit_zone_id_without_listing_zones():
class FailingApi:
def request(self, *_args, **_kwargs):
raise AssertionError("explicit zone id should not require zone list access")
assert resolve_zone_id(FailingApi(), "polyweather.top", "zone_123") == "zone_123"