Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
validate project config
  • Loading branch information
oakbani committed Dec 16, 2019
commit caad32d3084be46d720adde471729a74e189831e
13 changes: 12 additions & 1 deletion optimizely/optimizely_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

import copy

from .project_config import ProjectConfig


class OptimizelyConfig(object):
def __init__(self, revision, experiments_map, features_map):
Expand Down Expand Up @@ -60,6 +62,12 @@ def __init__(self, project_config):
Args:
project_config ProjectConfig
"""
self.is_valid = True

if not isinstance(project_config, ProjectConfig):
self.is_valid = False
return

self.experiments = project_config.experiments
self.feature_flags = project_config.feature_flags
self.groups = project_config.groups
Expand All @@ -71,9 +79,12 @@ def get_config(self):
""" Returns instance of OptimizelyConfig
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gets


Returns:
Optimizely Config instance.
Optimizely Config instance or None if OptimizelyConfigService is invalid.
"""

if not self.is_valid:
return None

experiments_key_map, experiments_id_map = self._get_experiments_maps()
features_map = self._get_features_map(experiments_id_map)

Expand Down
6 changes: 6 additions & 0 deletions tests/test_optimizely_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,12 @@ def test__get_config(self):
self.assertIsInstance(self.actual_config, optimizely_config.OptimizelyConfig)
self.assertEqual(self.expected_config, self.actual_config_dict)

def test__get_config__invalid_project_config(self):
""" Test that get_config returns None when invalid project config supplied. """

opt_service = optimizely_config.OptimizelyConfigService({"key": "invalid"})
self.assertIsNone(opt_service.get_config())

def test__get_experiments_maps(self):
""" Test that get_experiments_map returns expected experiment key and id maps. """

Expand Down