def test_get_all_feature_flag_values_in_prod_returns_correct_values(self): with self.swap(constants, 'DEV_MODE', False): context = feature_services.create_evaluation_context_for_client({ 'client_type': 'Android', 'browser_type': None, 'app_version': '1.0.0', 'user_locale': 'en', }) self.assertEqual( feature_services.evaluate_all_feature_flag_values_for_client( context), { self.dev_feature.name: False, self.prod_feature.name: True, })
def test_create_evaluation_context_for_client_returns_correct_context( self): with self.swap(constants, 'DEV_MODE', True): context = feature_services.create_evaluation_context_for_client({ 'platform_type': 'Android', 'browser_type': None, 'app_version': '1.0.0', }) self.assertEqual(context.server_mode, FeatureStages.DEV) self.assertEqual(context.platform_type, 'Android') self.assertEqual(context.browser_type, None) self.assertEqual(context.app_version, '1.0.0')
def test_create_evaluation_context_for_client_returns_correct_context(self): with self.swap(constants, 'DEV_MODE', True): context = feature_services.create_evaluation_context_for_client( { 'client_type': 'Android', 'browser_type': None, 'app_version': '1.0.0', 'user_locale': 'en', } ) self.assertEqual( context.server_mode, platform_parameter_domain.FEATURE_STAGES.dev) self.assertEqual(context.client_type, 'Android') self.assertEqual(context.browser_type, None) self.assertEqual(context.app_version, '1.0.0') self.assertEqual(context.user_locale, 'en')
def get(self): """Handles GET requests. Evaluates and returns all feature flags using the given client information. """ context_dict = { 'platform_type': self.normalized_request.get('platform_type'), 'browser_type': self.normalized_request.get('browser_type'), 'app_version': self.normalized_request.get('app_version'), } context = ( platform_feature_services.create_evaluation_context_for_client( context_dict)) try: context.validate() except utils.ValidationError as e: raise self.InvalidInputException(e) result_dict = ( platform_feature_services .evaluate_all_feature_flag_values_for_client(context)) self.render_json(result_dict)