mirror of
https://github.com/feder-cr/invisible_playwright.git
synced 2026-06-07 08:35:12 +02:00
81 lines
2.4 KiB
Python
81 lines
2.4 KiB
Python
"""configure_proxy behaviour — SOCKS goes into prefs, HTTP into Playwright kwargs."""
|
|
import pytest
|
|
|
|
from invisible_playwright._proxy import configure_proxy
|
|
|
|
|
|
def test_none_proxy_returns_none_and_leaves_prefs():
|
|
prefs = {}
|
|
assert configure_proxy(None, prefs) is None
|
|
assert prefs == {}
|
|
|
|
|
|
def test_empty_dict_returns_none():
|
|
prefs = {}
|
|
assert configure_proxy({}, prefs) is None
|
|
assert prefs == {}
|
|
|
|
|
|
def test_direct_scheme_returns_none():
|
|
prefs = {}
|
|
out = configure_proxy({"server": "direct://"}, prefs)
|
|
assert out is None
|
|
assert prefs == {}
|
|
|
|
|
|
def test_socks5_writes_prefs_and_returns_none():
|
|
prefs = {}
|
|
out = configure_proxy(
|
|
{"server": "socks5://gw.example.com:1080", "username": "u", "password": "p"},
|
|
prefs,
|
|
)
|
|
assert out is None
|
|
assert prefs["network.proxy.type"] == 1
|
|
assert prefs["network.proxy.socks"] == "gw.example.com"
|
|
assert prefs["network.proxy.socks_port"] == 1080
|
|
assert prefs["network.proxy.socks_version"] == 5
|
|
assert prefs["network.proxy.socks_username"] == "u"
|
|
assert prefs["network.proxy.socks_password"] == "p"
|
|
assert prefs["network.proxy.socks_remote_dns"] is True
|
|
|
|
|
|
def test_socks4_sets_version_4():
|
|
prefs = {}
|
|
configure_proxy({"server": "socks4://gw:1080"}, prefs)
|
|
assert prefs["network.proxy.socks_version"] == 4
|
|
|
|
|
|
def test_socks_without_auth_uses_empty_strings():
|
|
prefs = {}
|
|
configure_proxy({"server": "socks5://gw:1080"}, prefs)
|
|
assert prefs["network.proxy.socks_username"] == ""
|
|
assert prefs["network.proxy.socks_password"] == ""
|
|
|
|
|
|
def test_http_proxy_passes_through_to_playwright():
|
|
prefs = {}
|
|
proxy = {"server": "http://gw.example.com:8080", "username": "u", "password": "p"}
|
|
out = configure_proxy(proxy, prefs)
|
|
assert out is proxy
|
|
assert prefs == {}
|
|
|
|
|
|
def test_https_proxy_passes_through():
|
|
prefs = {}
|
|
out = configure_proxy({"server": "https://gw:8443"}, prefs)
|
|
assert out is not None
|
|
assert prefs == {}
|
|
|
|
|
|
def test_malformed_socks_url_drops_silently():
|
|
prefs = {}
|
|
out = configure_proxy({"server": "socks5://no-port-here"}, prefs)
|
|
assert out is None
|
|
assert prefs == {}
|
|
|
|
|
|
@pytest.mark.parametrize("scheme", ["socks5://", "SOCKS5://", "Socks5://"])
|
|
def test_socks_scheme_is_case_insensitive(scheme):
|
|
prefs = {}
|
|
configure_proxy({"server": f"{scheme}gw:1080"}, prefs)
|
|
assert prefs["network.proxy.socks"] == "gw"
|