@@ -1012,6 +1012,33 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
1012
1012
1013
1013
assert response .http_request .headers .get ("x-stainless-retry-count" ) == "42"
1014
1014
1015
+ @pytest .mark .respx (base_url = base_url )
1016
+ def test_follow_redirects (self , respx_mock : MockRouter ) -> None :
1017
+ # Test that the default follow_redirects=True allows following redirects
1018
+ respx_mock .post ("/redirect" ).mock (
1019
+ return_value = httpx .Response (302 , headers = {"Location" : f"{ base_url } /redirected" })
1020
+ )
1021
+ respx_mock .get ("/redirected" ).mock (return_value = httpx .Response (200 , json = {"status" : "ok" }))
1022
+
1023
+ response = self .client .post ("/redirect" , body = {"key" : "value" }, cast_to = httpx .Response )
1024
+ assert response .status_code == 200
1025
+ assert response .json () == {"status" : "ok" }
1026
+
1027
+ @pytest .mark .respx (base_url = base_url )
1028
+ def test_follow_redirects_disabled (self , respx_mock : MockRouter ) -> None :
1029
+ # Test that follow_redirects=False prevents following redirects
1030
+ respx_mock .post ("/redirect" ).mock (
1031
+ return_value = httpx .Response (302 , headers = {"Location" : f"{ base_url } /redirected" })
1032
+ )
1033
+
1034
+ with pytest .raises (APIStatusError ) as exc_info :
1035
+ self .client .post (
1036
+ "/redirect" , body = {"key" : "value" }, options = {"follow_redirects" : False }, cast_to = httpx .Response
1037
+ )
1038
+
1039
+ assert exc_info .value .response .status_code == 302
1040
+ assert exc_info .value .response .headers ["Location" ] == f"{ base_url } /redirected"
1041
+
1015
1042
1016
1043
class TestAsyncCloudflare :
1017
1044
client = AsyncCloudflare (base_url = base_url , api_key = api_key , api_email = api_email , _strict_response_validation = True )
@@ -1938,3 +1965,30 @@ async def test_main() -> None:
1938
1965
raise AssertionError ("calling get_platform using asyncify resulted in a hung process" )
1939
1966
1940
1967
time .sleep (0.1 )
1968
+
1969
+ @pytest .mark .respx (base_url = base_url )
1970
+ async def test_follow_redirects (self , respx_mock : MockRouter ) -> None :
1971
+ # Test that the default follow_redirects=True allows following redirects
1972
+ respx_mock .post ("/redirect" ).mock (
1973
+ return_value = httpx .Response (302 , headers = {"Location" : f"{ base_url } /redirected" })
1974
+ )
1975
+ respx_mock .get ("/redirected" ).mock (return_value = httpx .Response (200 , json = {"status" : "ok" }))
1976
+
1977
+ response = await self .client .post ("/redirect" , body = {"key" : "value" }, cast_to = httpx .Response )
1978
+ assert response .status_code == 200
1979
+ assert response .json () == {"status" : "ok" }
1980
+
1981
+ @pytest .mark .respx (base_url = base_url )
1982
+ async def test_follow_redirects_disabled (self , respx_mock : MockRouter ) -> None :
1983
+ # Test that follow_redirects=False prevents following redirects
1984
+ respx_mock .post ("/redirect" ).mock (
1985
+ return_value = httpx .Response (302 , headers = {"Location" : f"{ base_url } /redirected" })
1986
+ )
1987
+
1988
+ with pytest .raises (APIStatusError ) as exc_info :
1989
+ await self .client .post (
1990
+ "/redirect" , body = {"key" : "value" }, options = {"follow_redirects" : False }, cast_to = httpx .Response
1991
+ )
1992
+
1993
+ assert exc_info .value .response .status_code == 302
1994
+ assert exc_info .value .response .headers ["Location" ] == f"{ base_url } /redirected"
0 commit comments