Skip to content

Commit 1157c93

Browse files
committed
polish
1 parent 5fca0c1 commit 1157c93

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

splitio/client/input_validator.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def _check_string_not_empty(value, name, operation):
8080
return True
8181

8282

83-
def _check_string_matches(value, operation, pattern):
83+
def _check_string_matches(value, operation, pattern, name):
8484
"""
8585
Check if value is adhere to a regular expression passed.
8686
@@ -93,14 +93,14 @@ def _check_string_matches(value, operation, pattern):
9393
:return: The result of validation
9494
:rtype: True|False
9595
"""
96-
if not re.match(pattern, value):
96+
if re.search(pattern, value) is None or re.search(pattern, value).group() != value:
9797
_LOGGER.error(
9898
'%s: you passed %s, event_type must ' +
9999
'adhere to the regular expression %s. ' +
100-
'This means an event name must be alphanumeric, cannot be more ' +
100+
'This means %s must be alphanumeric, cannot be more ' +
101101
'than 80 characters long, and can only include a dash, underscore, ' +
102102
'period, or colon as separators of alphanumeric characters.',
103-
operation, value, pattern
103+
operation, value, pattern, name
104104
)
105105
return False
106106
return True
@@ -323,7 +323,7 @@ def validate_event_type(event_type):
323323
if (not _check_not_null(event_type, 'event_type', 'track')) or \
324324
(not _check_is_string(event_type, 'event_type', 'track')) or \
325325
(not _check_string_not_empty(event_type, 'event_type', 'track')) or \
326-
(not _check_string_matches(event_type, 'track', EVENT_TYPE_PATTERN)):
326+
(not _check_string_matches(event_type, 'track', EVENT_TYPE_PATTERN, 'an event name')):
327327
return None
328328
return event_type
329329

@@ -591,10 +591,9 @@ def validate_flag_sets(flag_sets, method_name):
591591
flag_set = _remove_empty_spaces(flag_set, 'flag set', method_name)
592592
flag_set = _convert_str_to_lower(flag_set, 'flag set', method_name)
593593

594-
if re.search(_FLAG_SETS_REGEX, flag_set) is None or re.search(_FLAG_SETS_REGEX, flag_set).group() != flag_set:
595-
_LOGGER.warning("%s: you passed %s, flag set must adhere to the regular expressions %s. This means a flag set must start with a letter, be in lowercase, alphanumeric and have a max length of 50 characteres. %s was discarded.", flag_set, _FLAG_SETS_REGEX, flag_set)
594+
if not _check_string_matches(flag_set, method_name, _FLAG_SETS_REGEX, 'a flag set'):
596595
continue
597596

598-
sanitized_flag_sets.add(flag_set.strip())
597+
sanitized_flag_sets.add(flag_set)
599598

600599
return sorted(list(sanitized_flag_sets))

splitio/models/flag_sets.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ def get_flag_set(self, flag_set):
7373
:rtype: list(str)
7474
"""
7575
with self._lock:
76-
if self.flag_set_exist(flag_set):
77-
return self.sets_feature_flag_map[flag_set]
76+
return self.sets_feature_flag_map.get(flag_set)
7877

7978
def add_flag_set(self, flag_set):
8079
"""

tests/client/test_input_validator.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -666,10 +666,10 @@ def test_track(self, mocker):
666666
assert _logger.error.mock_calls == [
667667
mocker.call("%s: you passed %s, event_type must adhere to the regular "
668668
"expression %s. This means "
669-
"an event name must be alphanumeric, cannot be more than 80 "
669+
"%s must be alphanumeric, cannot be more than 80 "
670670
"characters long, and can only include a dash, underscore, "
671671
"period, or colon as separators of alphanumeric characters.",
672-
'track', '@@', '^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$')
672+
'track', '@@', '^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$', 'an event name')
673673
]
674674

675675
_logger.reset_mock()
@@ -1074,6 +1074,33 @@ def _configs(treatment):
10741074
)
10751075
]
10761076

1077+
def test_flag_sets_validation(self):
1078+
"""Test sanitization for flag sets."""
1079+
flag_sets = input_validator.validate_flag_sets([' set1', 'set2 ', 'set3'], 'method')
1080+
assert sorted(flag_sets) == ['set1', 'set2', 'set3']
1081+
1082+
flag_sets = input_validator.validate_flag_sets(['1set', '_set2'], 'method')
1083+
assert flag_sets == ['1set']
1084+
1085+
flag_sets = input_validator.validate_flag_sets(['Set1', 'SET2'], 'method')
1086+
assert sorted(flag_sets) == ['set1', 'set2']
1087+
1088+
flag_sets = input_validator.validate_flag_sets(['se\t1', 's/et2', 's*et3', 's!et4', 'se@t5', 'se#t5', 'se$t5', 'se^t5', 'se%t5', 'se&t5'], 'method')
1089+
assert flag_sets == []
1090+
1091+
flag_sets = input_validator.validate_flag_sets(['set4', 'set1', 'set3', 'set1'], 'method')
1092+
assert sorted(flag_sets) == ['set1', 'set3', 'set4']
1093+
1094+
flag_sets = input_validator.validate_flag_sets(['w' * 50, 's' * 51], 'method')
1095+
assert flag_sets == ['w' * 50]
1096+
1097+
flag_sets = input_validator.validate_flag_sets('set1', 'method')
1098+
assert flag_sets == []
1099+
1100+
flag_sets = input_validator.validate_flag_sets([12, 33], 'method')
1101+
assert flag_sets == []
1102+
1103+
10771104
class ManagerInputValidationTests(object): #pylint: disable=too-few-public-methods
10781105
"""Manager input validation test cases."""
10791106

0 commit comments

Comments
 (0)