Skip to content

Commit 90f788a

Browse files
authored
Validate Query params before parsing; Add tests to validate (#223)
1 parent 48a14da commit 90f788a

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

instana/instrumentation/aws/triggers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,15 @@ def read_http_query_params(event):
6161
@param event: lambda event dict
6262
@return: String in the form of "a=b&c=d"
6363
"""
64-
# print("multiValueQueryStringParameters=%s" % event['multiValueQueryStringParameters'])
65-
# print("queryStringParameters=%s" % event['queryStringParameters'])
64+
if event is None or type(event) is not dict:
65+
return ""
6666

6767
params = []
68-
if 'multiValueQueryStringParameters' in event:
68+
if 'multiValueQueryStringParameters' in event and event['multiValueQueryStringParameters'] is not None:
6969
for key in event['multiValueQueryStringParameters']:
7070
params.append("%s=%s" % (key, event['multiValueQueryStringParameters'][key]))
7171
return "&".join(params)
72-
elif 'queryStringParameters' in event:
72+
elif 'queryStringParameters' in event and event['queryStringParameters'] is not None:
7373
for key in event['queryStringParameters']:
7474
params.append("%s=%s" % (key, event['queryStringParameters'][key]))
7575
return "&".join(params)

tests/test_lambda.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from instana import lambda_handler
1414
from instana import get_lambda_handler_or_default
1515
from instana.instrumentation.aws.lambda_inst import lambda_handler_with_instana
16+
from instana.instrumentation.aws.triggers import read_http_query_params
1617

1718

1819
# Mock Context object
@@ -411,3 +412,19 @@ def test_sqs_trigger_tracing(self):
411412
message = messages[0]
412413
self.assertEqual('arn:aws:sqs:us-west-1:123456789012:MyQueue', message['queue'])
413414

415+
def test_read_query_params(self):
416+
event = { "queryStringParameters": {"foo": "bar" },
417+
"multiValueQueryStringParameters": { "foo": ["bar"] } }
418+
params = read_http_query_params(event)
419+
self.assertEqual("foo=['bar']", params)
420+
421+
def test_read_query_params_with_none_data(self):
422+
event = { "queryStringParameters": None,
423+
"multiValueQueryStringParameters": None }
424+
params = read_http_query_params(event)
425+
self.assertEqual("", params)
426+
427+
def test_read_query_params_with_bad_event(self):
428+
event = None
429+
params = read_http_query_params(event)
430+
self.assertEqual("", params)

0 commit comments

Comments
 (0)