Skip to content

Commit 35844c9

Browse files
committed
fix the str response case
1 parent fbb4eab commit 35844c9

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

datadog_lambda/tracing.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,13 @@ def extract_context_custom_extractor(extractor, event, lambda_context):
345345
return None, None, None
346346

347347

348+
def is_authorizer_response(response) -> bool:
349+
try:
350+
return response["principalId"] and response["policyDocument"]
351+
except Exception as e:
352+
return False
353+
354+
348355
def get_injected_authorizer_data(event, is_http_api) -> dict:
349356
try:
350357
authorizer_headers = event.get("requestContext", {}).get("authorizer")

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,
@@ -280,12 +281,7 @@ def _after(self, event, context):
280281
if should_use_extension:
281282
flush_extension()
282283

283-
if (
284-
self.encode_authorizer_context
285-
and self.response
286-
and self.response.get("principalId")
287-
and self.response.get("policyDocument")
288-
):
284+
if self.encode_authorizer_context and is_authorizer_response(self.response):
289285
self._inject_authorizer_span_headers(
290286
event.get("requestContext", {}).get("requestId")
291287
)

tests/test_wrapper.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,3 +544,17 @@ 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+
@patch("traceback.print_exc")
549+
def test_different_return_type_no_error(self, MockPrintExc):
550+
TEST_RESULTS = ["a str to return", 42, {"value": 42}, ["A", 42], None]
551+
mock_context = get_mock_context()
552+
for test_result in TEST_RESULTS:
553+
554+
@datadog_lambda_wrapper
555+
def return_type_test(event, context):
556+
return test_result
557+
558+
result = return_type_test({}, mock_context)
559+
self.assertEquals(result, test_result)
560+
self.assertFalse(MockPrintExc.called)

0 commit comments

Comments
 (0)