Handle empty strings in sqlcommenter (#3309)

* Handle empty strings

Safer check for a trailing semicolon that could handle
empty strings as well.

* Updated CHANGELOG.md

* Test for empty SQL strings in sqlcommenter

---------

Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
This commit is contained in:
Selcuk Ayguney
2025-03-13 21:18:35 +10:00
committed by GitHub
parent f96d14cc62
commit 3c88163c99
3 changed files with 31 additions and 1 deletions

View File

@ -146,3 +146,31 @@ class TestMiddleware(WsgiTestBase):
# check if query_wrapper is added to the context for 2 databases
self.assertEqual(query_wrapper.call_count, 2)
@patch(
"opentelemetry.instrumentation.django.middleware.sqlcommenter_middleware._get_opentelemetry_values"
)
def test_empty_sql(self, trace_capture):
requests_mock = MagicMock()
requests_mock.resolver_match.view_name = "view"
requests_mock.resolver_match.route = "route"
requests_mock.resolver_match.app_name = "app"
trace_capture.return_value = {
"traceparent": "*traceparent='00-000000000000000000000000deadbeef-000000000000beef-00"
}
qw_instance = _QueryWrapper(requests_mock)
execute_mock_obj = MagicMock()
qw_instance(
execute_mock_obj,
"",
MagicMock("test"),
MagicMock("test1"),
MagicMock(),
)
output_sql = execute_mock_obj.call_args[0][0]
self.assertEqual(
output_sql,
" /*app_name='app',controller='view',route='route',traceparent='%%2Atraceparent%%3D%%2700-0000000"
"00000000000000000deadbeef-000000000000beef-00'*/",
)