@@ -960,6 +960,52 @@ def pyodide_test(selenium_coverage: typing.Any, host: str, port: int) -> None:
960960 )
961961
962962
963+ @pytest .mark .with_jspi
964+ def test_disabled_redirects (
965+ selenium_coverage : typing .Any , testserver_http : PyodideServerInfo
966+ ) -> None :
967+ """
968+ Test that urllib3 can control redirects in Node.js.
969+ """
970+
971+ @run_in_pyodide # type: ignore[misc]
972+ def pyodide_test (selenium_coverage : typing .Any , host : str , port : int ) -> None :
973+ import pytest
974+
975+ from urllib3 import PoolManager , request
976+ from urllib3 .contrib .emscripten .fetch import _is_node_js
977+ from urllib3 .exceptions import MaxRetryError
978+
979+ if not _is_node_js ():
980+ pytest .skip ("urllib3 does not control redirects in browsers." )
981+
982+ redirect_url = f"http://{ host } :{ port } /redirect"
983+
984+ with PoolManager (retries = 0 ) as http :
985+ with pytest .raises (MaxRetryError ):
986+ http .request ("GET" , redirect_url )
987+
988+ response = http .request ("GET" , redirect_url , redirect = False )
989+ assert response .status == 303
990+
991+ with PoolManager (retries = False ) as http :
992+ response = http .request ("GET" , redirect_url )
993+ assert response .status == 303
994+
995+ with pytest .raises (MaxRetryError ):
996+ request ("GET" , redirect_url , retries = 0 )
997+
998+ response = request ("GET" , redirect_url , redirect = False )
999+ assert response .status == 303
1000+
1001+ response = request ("GET" , redirect_url , retries = 0 , redirect = False )
1002+ assert response .status == 303
1003+
1004+ pyodide_test (
1005+ selenium_coverage , testserver_http .http_host , testserver_http .http_port
1006+ )
1007+
1008+
9631009def test_insecure_requests_warning (
9641010 selenium_coverage : typing .Any , testserver_http : PyodideServerInfo
9651011) -> None :
0 commit comments