Skip to content

Commit b6a6744

Browse files
committed
fixes
1 parent 3a5ab52 commit b6a6744

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

tests/core/test_base_client.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -842,11 +842,51 @@ def test_exception_from_response(self):
842842
mock_response.reason_phrase = "Too Many Requests"
843843
mock_response.json.return_value = {"error": "rate limited"}
844844
mock_response.request = MagicMock(spec=Request)
845+
mock_response.headers = {} # Required for UiPathRateLimitError._parse_retry_after
845846

846847
exc = UiPathAPIError.from_response(mock_response)
847848
assert isinstance(exc, UiPathRateLimitError)
848849
assert exc.status_code == 429
849850

851+
def test_exception_from_response_with_retry_after(self):
852+
"""Test UiPathRateLimitError parses Retry-After header."""
853+
mock_response = MagicMock(spec=Response)
854+
mock_response.status_code = 429
855+
mock_response.reason_phrase = "Too Many Requests"
856+
mock_response.json.return_value = {"error": "rate limited"}
857+
mock_response.request = MagicMock(spec=Request)
858+
mock_response.headers = {"retry-after": "30"}
859+
860+
exc = UiPathAPIError.from_response(mock_response)
861+
assert isinstance(exc, UiPathRateLimitError)
862+
assert exc.retry_after == 30.0
863+
864+
def test_exception_from_response_with_x_retry_after(self):
865+
"""Test UiPathRateLimitError parses x-retry-after header."""
866+
mock_response = MagicMock(spec=Response)
867+
mock_response.status_code = 429
868+
mock_response.reason_phrase = "Too Many Requests"
869+
mock_response.json.return_value = {"error": "rate limited"}
870+
mock_response.request = MagicMock(spec=Request)
871+
mock_response.headers = {"x-retry-after": "45"}
872+
873+
exc = UiPathAPIError.from_response(mock_response)
874+
assert isinstance(exc, UiPathRateLimitError)
875+
assert exc.retry_after == 45.0
876+
877+
def test_exception_retry_after_none_when_not_present(self):
878+
"""Test UiPathRateLimitError.retry_after is None when header missing."""
879+
mock_response = MagicMock(spec=Response)
880+
mock_response.status_code = 429
881+
mock_response.reason_phrase = "Too Many Requests"
882+
mock_response.json.return_value = {"error": "rate limited"}
883+
mock_response.request = MagicMock(spec=Request)
884+
mock_response.headers = {}
885+
886+
exc = UiPathAPIError.from_response(mock_response)
887+
assert isinstance(exc, UiPathRateLimitError)
888+
assert exc.retry_after is None
889+
850890

851891
# ============================================================================
852892
# Test Singleton Utility

0 commit comments

Comments
 (0)