docsifer / tests /unit /test_url_guard.py
lamhieu's picture
refactor(core): overhaul architecture for better performance, efficiency, and maintainability
41788c4
Raw
History Blame Contribute Delete
1.46 kB
import pytest
from docsifer.core.url_guard import validate_url
from docsifer.exceptions import InvalidInputError
def test_rejects_empty() -> None:
with pytest.raises(InvalidInputError):
validate_url("")
def test_rejects_disallowed_scheme() -> None:
with pytest.raises(InvalidInputError):
validate_url("file:///etc/passwd")
def test_rejects_loopback(monkeypatch) -> None:
import socket
monkeypatch.setattr(
socket,
"getaddrinfo",
lambda *a, **k: [(0, 0, 0, "", ("127.0.0.1", 0))],
)
with pytest.raises(InvalidInputError):
validate_url("http://localhost/")
def test_rejects_link_local_metadata(monkeypatch) -> None:
import socket
monkeypatch.setattr(
socket,
"getaddrinfo",
lambda *a, **k: [(0, 0, 0, "", ("169.254.169.254", 0))],
)
with pytest.raises(InvalidInputError):
validate_url("http://169.254.169.254/latest/meta-data")
def test_accepts_public(monkeypatch) -> None:
import socket
monkeypatch.setattr(
socket,
"getaddrinfo",
lambda *a, **k: [(0, 0, 0, "", ("93.184.216.34", 0))], # example.com
)
out = validate_url("https://example.com/foo")
assert out.startswith("https://example.com")
def test_allow_private_when_configured(monkeypatch) -> None:
out = validate_url(
"http://localhost/x",
allow_private_networks=True,
)
assert "localhost" in out