Skip to content

Commit 46d31a6

Browse files
rashidspmikeproeng37
authored andcommitted
fix(set_forced_variation): Treats empty variation key as invalid and does not reset forced variation. (#149)
1 parent 1c34da4 commit 46d31a6

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

optimizely/project_config.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
from .helpers import condition as condition_helper
1717
from .helpers import enums
18+
from .helpers import validator
1819
from . import entities
1920
from . import exceptions
2021

@@ -499,7 +500,7 @@ def set_forced_variation(self, experiment_key, user_id, variation_key):
499500
return False
500501

501502
experiment_id = experiment.id
502-
if not variation_key:
503+
if variation_key is None:
503504
if user_id in self.forced_variation_map:
504505
experiment_to_variation_map = self.forced_variation_map.get(user_id)
505506
if experiment_id in experiment_to_variation_map:
@@ -517,6 +518,10 @@ def set_forced_variation(self, experiment_key, user_id, variation_key):
517518
self.logger.debug('Nothing to remove. User "%s" does not exist in the forced variation map.' % user_id)
518519
return True
519520

521+
if not validator.is_non_empty_string(variation_key):
522+
self.logger.debug('Variation key is invalid.')
523+
return False
524+
520525
forced_variation = self.get_variation_from_key(experiment_key, variation_key)
521526
if not forced_variation:
522527
# The invalid variation key will be logged inside this call.

tests/test_config.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1055,9 +1055,12 @@ def test_set_forced_variation__invalid_variation_key(self):
10551055

10561056
self.assertFalse(self.project_config.set_forced_variation('test_experiment', 'test_user',
10571057
'variation_not_in_datafile'))
1058-
self.assertTrue(self.project_config.set_forced_variation('test_experiment', 'test_user', ''))
10591058
self.assertTrue(self.project_config.set_forced_variation('test_experiment', 'test_user', None))
10601059

1060+
with mock.patch.object(self.project_config, 'logger') as mock_config_logging:
1061+
self.assertIs(self.project_config.set_forced_variation('test_experiment', 'test_user', ''), False)
1062+
mock_config_logging.debug.assert_called_once_with('Variation key is invalid.')
1063+
10611064
def test_set_forced_variation__multiple_sets(self):
10621065
""" Test multiple sets of experiments for one and multiple users work """
10631066

0 commit comments

Comments
 (0)