"""Web search providers and their normalisation.""" from __future__ import annotations import httpx import pytest from fastapi.testclient import TestClient from lembas.services import search as search_service from lembas.services import settings_store from lembas.services.crypto import encrypt from lembas.services.search import firecrawl, searxng from lembas.services.search.base import SearchError, SearchResult, clean # --- What a result is -------------------------------------------------------- def test_only_http_urls_are_linkable(): """A search provider is an untrusted source. A result carrying a javascript: URL must never become an anchor pointing at it.""" assert SearchResult("t", "https://example.com", "").is_linkable assert SearchResult("t", "http://example.com", "").is_linkable assert not SearchResult("t", "javascript:alert(1)", "").is_linkable assert not SearchResult("t", "data:text/html,