def test_evaluate_feature_for_prod_server_matches_to_backend_filter(self): registry.Registry.update_platform_parameter( self.prod_feature.name, self.user_id, 'edit rules', [ platform_parameter_domain.PlatformParameterRule.from_dict({ 'filters': [{ 'type': 'server_mode', 'conditions': [['=', ServerModes.PROD.value]], }, { 'type': 'platform_type', 'conditions': [['=', 'Backend']], }], 'value_when_matched': True }) ]) with self.swap(constants, 'DEV_MODE', False): self.assertTrue( feature_services.is_feature_enabled(self.prod_feature.name))
def test_update_feature_flag_rules_successfully_updates_rules(self): feature_services.update_feature_flag_rules( self.dev_feature.name, self.user_id, 'test update', [ { 'filters': [{ 'type': 'server_mode', 'conditions': [['=', platform_parameter_domain.FEATURE_STAGES.dev]] }], 'value_when_matched': False }, ]) with self.swap(constants, 'DEV_MODE', True): self.assertFalse( feature_services.is_feature_enabled(self.dev_feature.name))
def test_evaluate_feature_for_prod_server_no_user_defaults_match_to_en_lang( self): registry.Registry.update_platform_parameter( self.prod_feature.name, self.user_id, 'edit rules', [{ 'filters': [{ 'type': 'server_mode', 'conditions': [['=', platform_parameter_domain.SERVER_MODES.prod]], }, { 'type': 'user_locale', 'conditions': [['=', 'en']], }], 'value_when_matched': True }]) with self.swap(constants, 'DEV_MODE', False): self.assertTrue( feature_services.is_feature_enabled(self.prod_feature.name))
def test_update_feature_flag_rules_successfully_updates_rules(self) -> None: feature_services.update_feature_flag_rules( self.dev_feature.name, self.user_id, 'test update', [ platform_parameter_domain.PlatformParameterRule.from_dict({ 'filters': [ { 'type': 'server_mode', 'conditions': [ ['=', FeatureStages.DEV.value] ] } ], 'value_when_matched': False }) ] ) with self.swap(constants, 'DEV_MODE', True): self.assertFalse( feature_services.is_feature_enabled(self.dev_feature.name))
def test_evaluate_feature_for_fr_user_defaults_does_not_match_to_en_lang( self): user_services.update_preferred_site_language_code(self.user_id, 'fr') self.login(self.OWNER_EMAIL) registry.Registry.update_platform_parameter( self.prod_feature.name, self.user_id, 'edit rules', [ { 'filters': [ { 'type': 'server_mode', 'conditions': [ [ '=', platform_parameter_domain.SERVER_MODES.prod ] ], }, { 'type': 'user_locale', 'conditions': [ [ '=', 'en' ] ], } ], 'value_when_matched': True } ] ) # Since the feature is only enable for users who have French selected as # their preferred site language code, the feature shouldn't be enabled # for the current logged in user. with self.swap(constants, 'DEV_MODE', False): self.assertFalse( feature_services.is_feature_enabled( self.prod_feature.name, self.user_id))
def test_get_feature_flag_values_with_unknown_name_raises_error( self ) -> None: with self.assertRaisesRegex( # type: ignore[no-untyped-call] Exception, 'Unknown feature flag'): feature_services.is_feature_enabled('feature_that_does_not_exist')
def test_evaluate_prod_feature_for_prod_server_returns_true(self) -> None: with self.swap(constants, 'DEV_MODE', False): self.assertTrue( feature_services.is_feature_enabled(self.prod_feature.name))
def test_get_feature_flag_values_with_unknown_name_raises_error(self): with self.assertRaisesRegexp(Exception, 'Unknown feature flag'): feature_services.is_feature_enabled('feature_that_does_not_exist')
def test_evaluate_dev_feature_for_prod_server_returns_false(self): with self.swap(constants, 'DEV_MODE', False): self.assertFalse( feature_services.is_feature_enabled(self.dev_feature.name))
def test_evaluate_prod_feature_for_dev_server_returns_true(self): with self.swap(constants, 'DEV_MODE', True): self.assertTrue( feature_services.is_feature_enabled( self.prod_feature.name, self.user_id))