Skip to content

Commit eec08ba

Browse files
authored
Add support for error and error_description (#79)
1 parent 85c4a20 commit eec08ba

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

tests/utils/test_requests.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_request_exceptions_include_expected_request_data(
4242
for status_code, exception in STATUS_CODE_TO_EXCEPTION_MAPPING.items():
4343
mock_request_method(
4444
"get",
45-
{"message": response_message,},
45+
{"message": response_message},
4646
status_code,
4747
headers={"X-Request-ID": request_id},
4848
)
@@ -56,6 +56,32 @@ def test_request_exceptions_include_expected_request_data(
5656
# This'll fail for sure here but... just using the nice error that'd come up
5757
assert ex.__class__ == exception
5858

59+
def test_bad_request_exceptions_include_expected_request_data(
60+
self, mock_request_method
61+
):
62+
request_helper = RequestHelper()
63+
64+
request_id = "request-123"
65+
error = "example_error"
66+
error_description = "Example error description"
67+
68+
mock_request_method(
69+
"get",
70+
{"error": error, "error_description": error_description},
71+
400,
72+
headers={"X-Request-ID": request_id},
73+
)
74+
75+
try:
76+
request_helper.request("bad_place")
77+
except ServerException as ex:
78+
assert ex.request_id == request_id
79+
assert ex.error == error
80+
assert ex.error_description == error_description
81+
except Exception as ex:
82+
# This'll fail for sure here but... just using the nice error that'd come up
83+
assert ex.__class__ == BadRequestException
84+
5985
def test_request_bad_body_raises_expected_exception_with_request_data(
6086
self, mock_request_method
6187
):

workos/exceptions.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class ConfigurationException(Exception):
44

55
# Request related exceptions
66
class BaseRequestException(Exception):
7-
def __init__(self, response, message=None, error=None):
7+
def __init__(self, response, message=None, error=None, error_description=None):
88
super(BaseRequestException, self).__init__(message)
99

1010
self.error = error
@@ -35,6 +35,9 @@ def __str__(self):
3535
if self.error is not None:
3636
exception += ", error=%s" % self.error
3737

38+
if self.error_description is not None:
39+
exception += ", error_description=%s" % self.error_description
40+
3841
return exception + ")"
3942

4043

workos/utils/request.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ def request(
7979
elif status_code == 403:
8080
raise AuthorizationException(response)
8181
error = response_json.get("error")
82-
raise BadRequestException(response, error=error)
82+
error_description = response_json.get("error_description")
83+
raise BadRequestException(
84+
response, error=error, error_description=error_description
85+
)
8386
elif status_code >= 500 and status_code < 600:
8487
raise ServerException(response)
8588

0 commit comments

Comments
 (0)