@@ -371,3 +371,47 @@ def test_get_api_error(test_case: TestCase):
371371 assert isinstance (e .value , test_case .want_err_type )
372372 assert str (e .value ) == test_case .want_message
373373 assert e .value .get_error_details () == test_case .want_details
374+
375+
376+ def test_debug_headers_disabled_by_default ():
377+ """Test that debug_headers=False by default does not leak sensitive headers in unparseable errors."""
378+ # Create a response with Authorization header that cannot be parsed
379+ resp = requests .Response ()
380+ resp .status_code = 400
381+ resp .reason = "Bad Request"
382+ resp .request = requests .Request ("POST" , "https://databricks.com/api/2.0/sql/statements" ).prepare ()
383+ resp .request .headers ["Authorization" ] = "Bearer secret-token-12345"
384+ resp .request .headers ["X-Databricks-Azure-SP-Management-Token" ] = "secret-azure-token-67890"
385+ resp ._content = b"unparseable response"
386+
387+ parser = errors ._Parser (debug_headers = False )
388+ error = parser .get_api_error (resp )
389+
390+ error_message = str (error )
391+ # Verify that sensitive tokens are NOT in the error message
392+ assert "secret-token-12345" not in error_message
393+ assert "secret-azure-token-67890" not in error_message
394+ assert "Authorization" not in error_message
395+ assert "X-Databricks-Azure-SP-Management-Token" not in error_message
396+
397+
398+ def test_debug_headers_enabled_shows_headers ():
399+ """Test that debug_headers=True includes headers in unparseable error messages."""
400+ # Create a response with Authorization header that cannot be parsed
401+ resp = requests .Response ()
402+ resp .status_code = 400
403+ resp .reason = "Bad Request"
404+ resp .request = requests .Request ("POST" , "https://databricks.com/api/2.0/sql/statements" ).prepare ()
405+ resp .request .headers ["Authorization" ] = "Bearer debug-token-12345"
406+ resp .request .headers ["X-Databricks-Azure-SP-Management-Token" ] = "debug-azure-token-67890"
407+ resp ._content = b"unparseable response"
408+
409+ parser = errors ._Parser (debug_headers = True )
410+ error = parser .get_api_error (resp )
411+
412+ error_message = str (error )
413+ # Verify that headers ARE included when explicitly enabled
414+ assert "Authorization" in error_message
415+ assert "debug-token-12345" in error_message
416+ assert "X-Databricks-Azure-SP-Management-Token" in error_message
417+ assert "debug-azure-token-67890" in error_message
0 commit comments