Skip to content

Commit 0ab4dc1

Browse files
committed
fix the str response case
1 parent b76ef05 commit 0ab4dc1

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

datadog_lambda/tracing.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,11 @@ def extract_context_custom_extractor(extractor, event, lambda_context):
344344

345345
return None, None, None
346346

347+
def is_authorizer_response(response) -> bool:
348+
try:
349+
return response["principalId"] and response["policyDocument"]
350+
except:
351+
return False
347352

348353
def get_injected_authorizer_data(event, is_http_api) -> dict:
349354
try:

datadog_lambda/wrapper.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
create_function_execution_span,
3838
create_inferred_span,
3939
InferredSpanInfo,
40+
is_authorizer_response,
4041
)
4142
from datadog_lambda.trigger import (
4243
extract_trigger_tags,
@@ -275,12 +276,7 @@ def _after(self, event, context):
275276
if should_use_extension:
276277
flush_extension()
277278

278-
if (
279-
self.encode_authorizer_context
280-
and self.response
281-
and self.response.get("principalId")
282-
and self.response.get("policyDocument")
283-
):
279+
if self.encode_authorizer_context and is_authorizer_response(self.response):
284280
self._inject_authorizer_span_headers(
285281
event.get("requestContext", {}).get("requestId")
286282
)

tests/test_wrapper.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,3 +544,19 @@ def lambda_handler(event, context):
544544
self.assertEquals(inject_data[TraceHeader.TRACE_ID], "456")
545545
self.assertEquals(inject_data[TraceHeader.SAMPLING_PRIORITY], "1")
546546
self.assertEquals(result["context"]["scope"], "still here")
547+
548+
def test_different_return_type_no_error(self):
549+
TEST_RESULTS = ["a str to return", 42, {'value': 42}, ['A', 42]]
550+
import traceback as _importedTraceback
551+
_importedTraceback.print_exc = MagicMock()
552+
mock_context = get_mock_context()
553+
for test_result in TEST_RESULTS:
554+
555+
@datadog_lambda_wrapper
556+
def return_a_str(event, context):
557+
return test_result
558+
559+
result = return_a_str({}, mock_context)
560+
self.assertEquals(result, test_result)
561+
_importedTraceback.print_exc.assert_not_called()
562+

0 commit comments

Comments
 (0)