Files
openswarm/backend/tests/test_web_search_reliability.py
T

34 lines
1.5 KiB
Python

"""Built-in WebSearch reliability: only an ENTITLED Anthropic endpoint suppresses DDG.
The 401 'Invalid bearer token (reset after ~2m)' comes from the CLI's built-in
WebSearch firing an aux `claude-haiku` call. That call only authenticates when it
reaches an entitled Anthropic endpoint:
- a DIRECT anthropic api-route model (base_url = api.anthropic.com, user's key), or
- OpenSwarm Pro (entitled to the managed pool 9Router's anthropic/* resolves to).
A SUBSCRIPTION-route Claude model (opus-4-8, route=None) sends the haiku call
through 9Router to the managed pool, which 401s for non-Pro users, so a bare
anthropic_api_key in settings is NOT enough. Those sessions must keep the free,
always-working DDG fallback instead of a 401-ing hosted path.
"""
from backend.apps.agents.tools.web import anthropic_web_search_is_reliable as ok
def test_direct_anthropic_api_route_is_reliable():
# opus-4-8-api (route='api', api='anthropic') + key in settings -> direct, works
assert ok(uses_direct_anthropic_api=True, is_pro=False) is True
def test_openswarm_pro_is_reliable():
assert ok(uses_direct_anthropic_api=False, is_pro=True) is True
def test_both_is_reliable():
assert ok(uses_direct_anthropic_api=True, is_pro=True) is True
def test_subscription_route_claude_is_NOT_reliable():
# The exact bug: opus-4-8 (subscription route) + key in settings. The haiku call still 401s via the managed pool, so this must stay unreliable -> DDG.
assert ok(uses_direct_anthropic_api=False, is_pro=False) is False