From 67e28248763ac8681eea51de16e97d348ac476ae Mon Sep 17 00:00:00 2001 From: feder-cr <85809106+feder-cr@users.noreply.github.com> Date: Fri, 15 May 2026 20:01:54 -0700 Subject: [PATCH] tests: add/update tests/test_proxy.py --- tests/test_proxy.py | 81 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tests/test_proxy.py diff --git a/tests/test_proxy.py b/tests/test_proxy.py new file mode 100644 index 0000000..8bf2fcc --- /dev/null +++ b/tests/test_proxy.py @@ -0,0 +1,81 @@ +"""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"