Skip to content

Commit 49101d7

Browse files
committed
Add test error endpoint for exception monitoring
Introduces a new /api/test/error endpoint to intentionally trigger various exceptions (e.g., ZeroDivisionError, KeyError, ValueError, etc.) for testing error monitoring tools like Sentry. This endpoint is for testing purposes only and should not be enabled in production.
1 parent 398630f commit 49101d7

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

app/routes/api.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,51 @@ async def health_check():
256256
})
257257

258258

259+
@api_bp.route('/test/error', methods=['GET'])
260+
async def test_error():
261+
"""
262+
Test endpoint to trigger various exceptions for error monitoring (e.g., Sentry).
263+
264+
Usage:
265+
GET /api/test/error - Triggers ZeroDivisionError (default)
266+
GET /api/test/error?type=divide_by_zero - Triggers ZeroDivisionError
267+
GET /api/test/error?type=key_error - Triggers KeyError
268+
GET /api/test/error?type=value_error - Triggers ValueError
269+
GET /api/test/error?type=type_error - Triggers TypeError
270+
GET /api/test/error?type=index_error - Triggers IndexError
271+
GET /api/test/error?type=attribute_error - Triggers AttributeError
272+
273+
WARNING: This endpoint is for testing purposes only. Remove or disable in production.
274+
"""
275+
error_type = request.args.get('type', 'divide_by_zero').strip().lower()
276+
277+
current_app.logger.info(f"Test error endpoint triggered with type: {error_type}")
278+
279+
if error_type == 'divide_by_zero':
280+
1 / 0 # ZeroDivisionError
281+
elif error_type == 'key_error':
282+
d = {}
283+
return d['nonexistent_key'] # KeyError
284+
elif error_type == 'value_error':
285+
int('not a number') # ValueError
286+
elif error_type == 'type_error':
287+
None + 5 # TypeError
288+
elif error_type == 'index_error':
289+
lst = []
290+
return lst[999] # IndexError
291+
elif error_type == 'attribute_error':
292+
obj = None
293+
return obj.some_attribute # AttributeError
294+
else:
295+
return api_error_response(
296+
f'Unknown error type: {error_type}. Available types: '
297+
'divide_by_zero, key_error, value_error, type_error, index_error, attribute_error',
298+
400
299+
)
300+
301+
return jsonify({'status': 'no error triggered'})
302+
303+
259304
def _is_valid_api_key_format(api_key):
260305
"""Validate API key format"""
261306
if not api_key or len(api_key) < 10 or len(api_key) > 100:

0 commit comments

Comments
 (0)