import pytest
from declaude import MarkdownRenderer
md = MarkdownRenderer()
@pytest.mark.parametrize("url", [
"javascript:alert(1)",
"JaVaScRiPt:alert(1)",
" javascript:alert(1)",
"java\tscript:alert(1)",
"data:text/html;base64,PHNjcmlwdD4=",
"vbscript:msgbox",
])
def test_dangerous_link_schemes_are_neutralized(url):
html = md.render(f"[клик]({url})")
assert 'href="#"' in html
assert "script:" not in html.lower().replace("#", "")
@pytest.mark.parametrize("url", ["https://example.com/a?b=1", "http://example.com", "mailto:me@example.com", "#anchor", "/local/page"])
def test_normal_links_are_kept(url):
assert f'href="{url}"'.replace("&", "&") in md.render(f"[ссылка]({url})")
def test_image_rejects_javascript_and_svg_data():
assert 'src="#"' in md.render(")")
assert 'src="#"' in md.render("")
assert 'src="https://example.com/a.png"' in md.render("")
def test_raw_html_is_escaped():
html = md.render("")
assert "