Skip to content

Commit b3a5deb

Browse files
author
childish-sambino
authored
fix: support duplicated query param values (#617)
1 parent c9c68a0 commit b3a5deb

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

tests/unit/test_request_validator.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,16 @@ def test_compute_signature_duplicate_multi_dict(self):
4747
params = MultiDict([
4848
("Sid", "CA123"),
4949
("SidAccount", "AC123"),
50-
("Digits", "5678"),
51-
("Digits", "1234"),
50+
("Digits", "5678"), # Ensure keys are sorted.
51+
("Digits", "1234"), # Ensure values are sorted.
52+
("Digits", "1234"), # Ensure duplicates are removed.
5253
])
5354
signature = self.validator.compute_signature(self.uri, params)
5455
assert signature == expected
5556

5657
def test_compute_signature_duplicate_query_dict(self):
5758
expected = self.duplicate_expected
58-
params = QueryDict('Sid=CA123&SidAccount=AC123&Digits=5678&Digits=1234', encoding='utf-8')
59+
params = QueryDict('Sid=CA123&SidAccount=AC123&Digits=5678&Digits=1234&Digits=1234', encoding='utf-8')
5960
signature = self.validator.compute_signature(self.uri, params)
6061
assert signature == expected
6162

twilio/request_validator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def compute_signature(self, uri, params):
7676
for param_name in sorted(set(params)):
7777
values = self.get_values(params, param_name)
7878

79-
for value in sorted(values):
79+
for value in sorted(set(values)):
8080
s += param_name + value
8181

8282
# compute signature and compare signatures

0 commit comments

Comments
 (0)