Skip to content

Commit e2d6ccb

Browse files
authored
Merge pull request #357 from splitio/dw-update-vars-input_validator
updated vars and funcs in input_validator
2 parents baf373a + 0ea6be8 commit e2d6ccb

File tree

4 files changed

+72
-72
lines changed

4 files changed

+72
-72
lines changed

splitio/client/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def _make_evaluation(self, key, feature_flag, attributes, method_name, metric_na
9090
start = get_current_epoch_time_ms()
9191

9292
matching_key, bucketing_key = input_validator.validate_key(key, method_name)
93-
feature_flag = input_validator.validate_feature_name(
93+
feature_flag = input_validator.validate_feature_flag_name(
9494
feature_flag,
9595
self.ready,
9696
self._factory._get_storage('splits'), # pylint: disable=protected-access
@@ -153,7 +153,7 @@ def _make_evaluations(self, key, feature_flags, attributes, method_name, metric_
153153
if input_validator.validate_attributes(attributes, method_name) is False:
154154
return input_validator.generate_control_treatments(feature_flags, method_name)
155155

156-
feature_flags, missing = input_validator.validate_features_get_treatments(
156+
feature_flags, missing = input_validator.validate_feature_flags_get_treatments(
157157
method_name,
158158
feature_flags,
159159
self.ready,

splitio/client/input_validator.py

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -232,30 +232,30 @@ def validate_key(key, method_name):
232232
return matching_key_result, bucketing_key_result
233233

234234

235-
def validate_feature_name(feature_name, should_validate_existance, split_storage, method_name):
235+
def validate_feature_flag_name(feature_flag_name, should_validate_existance, feature_flag_storage, method_name):
236236
"""
237237
Check if feature flag name is valid for get_treatment.
238238
239-
:param feature_name: feature flag name to be checked
240-
:type feature_name: str
241-
:return: feature_name
239+
:param feature_flag_name: feature flag name to be checked
240+
:type feature_flag_name: str
241+
:return: feature_flag_name
242242
:rtype: str|None
243243
"""
244-
if (not _check_not_null(feature_name, 'feature_name', method_name)) or \
245-
(not _check_is_string(feature_name, 'feature_name', method_name)) or \
246-
(not _check_string_not_empty(feature_name, 'feature_name', method_name)):
244+
if (not _check_not_null(feature_flag_name, 'feature_flag_name', method_name)) or \
245+
(not _check_is_string(feature_flag_name, 'feature_flag_name', method_name)) or \
246+
(not _check_string_not_empty(feature_flag_name, 'feature_flag_name', method_name)):
247247
return None
248248

249-
if should_validate_existance and split_storage.get(feature_name) is None:
249+
if should_validate_existance and feature_flag_storage.get(feature_flag_name) is None:
250250
_LOGGER.warning(
251251
"%s: you passed \"%s\" that does not exist in this environment, "
252252
"please double check what Feature flags exist in the Split user interface.",
253253
method_name,
254-
feature_name
254+
feature_flag_name
255255
)
256256
return None
257257

258-
return _remove_empty_spaces(feature_name, method_name)
258+
return _remove_empty_spaces(feature_flag_name, method_name)
259259

260260

261261
def validate_track_key(key):
@@ -277,16 +277,16 @@ def validate_track_key(key):
277277
return key_str
278278

279279

280-
def validate_traffic_type(traffic_type, should_validate_existance, split_storage):
280+
def validate_traffic_type(traffic_type, should_validate_existance, feature_flag_storage):
281281
"""
282282
Check if traffic_type is valid for track.
283283
284284
:param traffic_type: traffic_type to be checked
285285
:type traffic_type: str
286286
:param should_validate_existance: Whether to check for existante in the feature flag storage.
287287
:type should_validate_existance: bool
288-
:param split_storage: Split storage.
289-
:param split_storage: splitio.storages.SplitStorage
288+
:param feature_flag_storage: Feature flag storage.
289+
:param feature_flag_storage: splitio.storages.SplitStorage
290290
:return: traffic_type
291291
:rtype: str|None
292292
"""
@@ -299,7 +299,7 @@ def validate_traffic_type(traffic_type, should_validate_existance, split_storage
299299
traffic_type)
300300
traffic_type = traffic_type.lower()
301301

302-
if should_validate_existance and not split_storage.is_valid_traffic_type(traffic_type):
302+
if should_validate_existance and not feature_flag_storage.is_valid_traffic_type(traffic_type):
303303
_LOGGER.warning(
304304
'track: Traffic Type %s does not have any corresponding Feature flags in this environment, '
305305
'make sure you\'re tracking your events to a valid traffic type defined '
@@ -344,85 +344,85 @@ def validate_value(value):
344344
return value
345345

346346

347-
def validate_manager_feature_name(feature_name, should_validate_existance, split_storage):
347+
def validate_manager_feature_flag_name(feature_flag_name, should_validate_existance, feature_flag_storage):
348348
"""
349349
Check if feature flag name is valid for track.
350350
351-
:param feature_name: feature flag name to be checked
352-
:type feature_name: str
353-
:return: feature_name
351+
:param feature_flag_name: feature flag name to be checked
352+
:type feature_flag_name: str
353+
:return: feature_flag_name
354354
:rtype: str|None
355355
"""
356-
if (not _check_not_null(feature_name, 'feature_name', 'split')) or \
357-
(not _check_is_string(feature_name, 'feature_name', 'split')) or \
358-
(not _check_string_not_empty(feature_name, 'feature_name', 'split')):
356+
if (not _check_not_null(feature_flag_name, 'feature_flag_name', 'split')) or \
357+
(not _check_is_string(feature_flag_name, 'feature_flag_name', 'split')) or \
358+
(not _check_string_not_empty(feature_flag_name, 'feature_flag_name', 'split')):
359359
return None
360360

361-
if should_validate_existance and split_storage.get(feature_name) is None:
361+
if should_validate_existance and feature_flag_storage.get(feature_flag_name) is None:
362362
_LOGGER.warning(
363363
"split: you passed \"%s\" that does not exist in this environment, "
364364
"please double check what Feature flags exist in the Split user interface.",
365-
feature_name
365+
feature_flag_name
366366
)
367367
return None
368368

369-
return feature_name
369+
return feature_flag_name
370370

371371

372-
def validate_features_get_treatments( # pylint: disable=invalid-name
372+
def validate_feature_flags_get_treatments( # pylint: disable=invalid-name
373373
method_name,
374-
features,
374+
feature_flags,
375375
should_validate_existance=False,
376-
split_storage=None
376+
feature_flag_storage=None
377377
):
378378
"""
379379
Check if feature flags is valid for get_treatments.
380380
381-
:param features: array of feature flags
382-
:type features: list
383-
:return: filtered_features
381+
:param feature_flags: array of feature flags
382+
:type feature_flags: list
383+
:return: filtered_feature_flags
384384
:rtype: tuple
385385
"""
386-
if features is None or not isinstance(features, list):
386+
if feature_flags is None or not isinstance(feature_flags, list):
387387
_LOGGER.error("%s: feature flag names must be a non-empty array.", method_name)
388388
return None, None
389-
if not features:
389+
if not feature_flags:
390390
_LOGGER.error("%s: feature flag names must be a non-empty array.", method_name)
391391
return None, None
392-
filtered_features = set(
393-
_remove_empty_spaces(feature, method_name) for feature in features
394-
if feature is not None and
395-
_check_is_string(feature, 'feature flag name', method_name) and
396-
_check_string_not_empty(feature, 'feature flag name', method_name)
392+
filtered_feature_flags = set(
393+
_remove_empty_spaces(feature_flag, method_name) for feature_flag in feature_flags
394+
if feature_flag is not None and
395+
_check_is_string(feature_flag, 'feature flag name', method_name) and
396+
_check_string_not_empty(feature_flag, 'feature flag name', method_name)
397397
)
398-
if not filtered_features:
398+
if not filtered_feature_flags:
399399
_LOGGER.error("%s: feature flag names must be a non-empty array.", method_name)
400400
return None, None
401401

402402
if not should_validate_existance:
403-
return filtered_features, []
403+
return filtered_feature_flags, []
404404

405-
valid_missing_features = set(f for f in filtered_features if split_storage.get(f) is None)
406-
for missing_feature in valid_missing_features:
405+
valid_missing_feature_flags = set(f for f in filtered_feature_flags if feature_flag_storage.get(f) is None)
406+
for missing_feature_flag in valid_missing_feature_flags:
407407
_LOGGER.warning(
408408
"%s: you passed \"%s\" that does not exist in this environment, "
409409
"please double check what Feature flags exist in the Split user interface.",
410410
method_name,
411-
missing_feature
411+
missing_feature_flag
412412
)
413-
return filtered_features - valid_missing_features, valid_missing_features
413+
return filtered_feature_flags - valid_missing_feature_flags, valid_missing_feature_flags
414414

415415

416-
def generate_control_treatments(features, method_name):
416+
def generate_control_treatments(feature_flags, method_name):
417417
"""
418418
Generate valid feature flags to control.
419419
420-
:param features: array of feature flags
421-
:type features: list
420+
:param feature_flags: array of feature flags
421+
:type feature_flags: list
422422
:return: dict
423423
:rtype: dict|None
424424
"""
425-
return {feature: (CONTROL, None) for feature in validate_features_get_treatments(method_name, features)[0]}
425+
return {feature_flag: (CONTROL, None) for feature_flag in validate_feature_flags_get_treatments(method_name, feature_flags)[0]}
426426

427427

428428
def validate_attributes(attributes, method_name):
@@ -449,7 +449,7 @@ def filter(self, record):
449449
return record.name not in ('SegmentsAPI', 'HttpClient')
450450

451451

452-
def validate_factory_instantiation(apikey):
452+
def validate_factory_instantiation(sdkkey):
453453
"""
454454
Check if the factory if being instantiated with the appropriate arguments.
455455
@@ -458,11 +458,11 @@ def validate_factory_instantiation(apikey):
458458
:return: bool
459459
:rtype: True|False
460460
"""
461-
if apikey == 'localhost':
461+
if sdkkey == 'localhost':
462462
return True
463-
if (not _check_not_null(apikey, 'apikey', 'factory_instantiation')) or \
464-
(not _check_is_string(apikey, 'apikey', 'factory_instantiation')) or \
465-
(not _check_string_not_empty(apikey, 'apikey', 'factory_instantiation')):
463+
if (not _check_not_null(sdkkey, 'sdkkey', 'factory_instantiation')) or \
464+
(not _check_is_string(sdkkey, 'sdkkey', 'factory_instantiation')) or \
465+
(not _check_string_not_empty(sdkkey, 'sdkkey', 'factory_instantiation')):
466466
return False
467467
return True
468468

splitio/client/manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def split(self, feature_name):
8484
_LOGGER.error("Client is not ready - no calls possible")
8585
return None
8686

87-
feature_name = input_validator.validate_manager_feature_name(
87+
feature_name = input_validator.validate_manager_feature_flag_name(
8888
feature_name,
8989
self._factory.ready,
9090
self._storage

tests/client/test_input_validator.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -104,31 +104,31 @@ def test_get_treatment(self, mocker):
104104
_logger.reset_mock()
105105
assert client.get_treatment('some_key', None) == CONTROL
106106
assert _logger.error.mock_calls == [
107-
mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
107+
mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
108108
]
109109

110110
_logger.reset_mock()
111111
assert client.get_treatment('some_key', 123) == CONTROL
112112
assert _logger.error.mock_calls == [
113-
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
113+
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
114114
]
115115

116116
_logger.reset_mock()
117117
assert client.get_treatment('some_key', True) == CONTROL
118118
assert _logger.error.mock_calls == [
119-
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
119+
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
120120
]
121121

122122
_logger.reset_mock()
123123
assert client.get_treatment('some_key', []) == CONTROL
124124
assert _logger.error.mock_calls == [
125-
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
125+
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
126126
]
127127

128128
_logger.reset_mock()
129129
assert client.get_treatment('some_key', '') == CONTROL
130130
assert _logger.error.mock_calls == [
131-
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'feature_name', 'feature_name')
131+
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment', 'feature_flag_name', 'feature_flag_name')
132132
]
133133

134134
_logger.reset_mock()
@@ -338,31 +338,31 @@ def _configs(treatment):
338338
_logger.reset_mock()
339339
assert client.get_treatment_with_config('some_key', None) == (CONTROL, None)
340340
assert _logger.error.mock_calls == [
341-
mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
341+
mocker.call('%s: you passed a null %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
342342
]
343343

344344
_logger.reset_mock()
345345
assert client.get_treatment_with_config('some_key', 123) == (CONTROL, None)
346346
assert _logger.error.mock_calls == [
347-
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
347+
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
348348
]
349349

350350
_logger.reset_mock()
351351
assert client.get_treatment_with_config('some_key', True) == (CONTROL, None)
352352
assert _logger.error.mock_calls == [
353-
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
353+
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
354354
]
355355

356356
_logger.reset_mock()
357357
assert client.get_treatment_with_config('some_key', []) == (CONTROL, None)
358358
assert _logger.error.mock_calls == [
359-
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
359+
mocker.call('%s: you passed an invalid %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
360360
]
361361

362362
_logger.reset_mock()
363363
assert client.get_treatment_with_config('some_key', '') == (CONTROL, None)
364364
assert _logger.error.mock_calls == [
365-
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_name', 'feature_name')
365+
mocker.call('%s: you passed an empty %s, %s must be a non-empty string.', 'get_treatment_with_config', 'feature_flag_name', 'feature_flag_name')
366366
]
367367

368368
_logger.reset_mock()
@@ -1109,25 +1109,25 @@ def test_split_(self, mocker):
11091109

11101110
assert manager.split(None) is None
11111111
assert _logger.error.mock_calls == [
1112-
mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'split', 'feature_name', 'feature_name')
1112+
mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
11131113
]
11141114

11151115
_logger.reset_mock()
11161116
assert manager.split("") is None
11171117
assert _logger.error.mock_calls == [
1118-
mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'split', 'feature_name', 'feature_name')
1118+
mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
11191119
]
11201120

11211121
_logger.reset_mock()
11221122
assert manager.split(True) is None
11231123
assert _logger.error.mock_calls == [
1124-
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_name', 'feature_name')
1124+
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
11251125
]
11261126

11271127
_logger.reset_mock()
11281128
assert manager.split([]) is None
11291129
assert _logger.error.mock_calls == [
1130-
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_name', 'feature_name')
1130+
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'split', 'feature_flag_name', 'feature_flag_name')
11311131
]
11321132

11331133
_logger.reset_mock()
@@ -1156,19 +1156,19 @@ def test_input_validation_factory(self, mocker):
11561156

11571157
assert get_factory(None) is None
11581158
assert logger.error.mock_calls == [
1159-
mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'factory_instantiation', 'apikey', 'apikey')
1159+
mocker.call("%s: you passed a null %s, %s must be a non-empty string.", 'factory_instantiation', 'sdkkey', 'sdkkey')
11601160
]
11611161

11621162
logger.reset_mock()
11631163
assert get_factory('') is None
11641164
assert logger.error.mock_calls == [
1165-
mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'factory_instantiation', 'apikey', 'apikey')
1165+
mocker.call("%s: you passed an empty %s, %s must be a non-empty string.", 'factory_instantiation', 'sdkkey', 'sdkkey')
11661166
]
11671167

11681168
logger.reset_mock()
11691169
assert get_factory(True) is None
11701170
assert logger.error.mock_calls == [
1171-
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'factory_instantiation', 'apikey', 'apikey')
1171+
mocker.call("%s: you passed an invalid %s, %s must be a non-empty string.", 'factory_instantiation', 'sdkkey', 'sdkkey')
11721172
]
11731173

11741174
logger.reset_mock()

0 commit comments

Comments
 (0)