diff --git a/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py b/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py index 111583a63..b0c33e8a6 100644 --- a/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +++ b/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py @@ -305,9 +305,15 @@ def _make_handled_request(self) -> Any: failure_type=FailureType.transient_error, ) if self._wrap_refresh_token_exception(e): - message = "Refresh token is invalid or expired. Please re-authenticate from Sources//Settings." + status_code = e.response.status_code if e.response is not None else "unknown" raise AirbyteTracedException( - internal_message=message, message=message, failure_type=FailureType.config_error + message="OAuth token refresh failed with a refresh-token error response.", + internal_message=( + f"OAuth token refresh failed with HTTP {status_code}; " + "response matched configured refresh-token error indicators " + "(see DEBUG-level token refresh log for full response)." + ), + failure_type=FailureType.config_error, ) raise except Exception as e: diff --git a/unit_tests/sources/streams/http/requests_native_auth/test_requests_native_auth.py b/unit_tests/sources/streams/http/requests_native_auth/test_requests_native_auth.py index 71183b5aa..9d762eb1d 100644 --- a/unit_tests/sources/streams/http/requests_native_auth/test_requests_native_auth.py +++ b/unit_tests/sources/streams/http/requests_native_auth/test_requests_native_auth.py @@ -575,9 +575,11 @@ def test_refresh_access_token_wrapped( oauth.refresh_access_token() if wrapped: - error_message = "Refresh token is invalid or expired. Please re-authenticate from Sources//Settings." - assert exc_info.value.internal_message == error_message - assert exc_info.value.message == error_message + expected_message = "OAuth token refresh failed with a refresh-token error response." + assert exc_info.value.message == expected_message + assert exc_info.value.internal_message.startswith( + f"OAuth token refresh failed with HTTP {response_code}" + ) assert exc_info.value.failure_type == FailureType.config_error