Skip to content

Commit 42f6663

Browse files
handle datafile provided as bytes (#384)
1 parent eee3aa0 commit 42f6663

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

Diff for: optimizely/project_config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def __init__(self, datafile, logger, error_handler):
4141
"""
4242

4343
config = json.loads(datafile)
44-
self._datafile = u'{}'.format(datafile)
44+
self._datafile = datafile.decode('utf-8') if isinstance(datafile, bytes) else datafile
4545
self.logger = logger
4646
self.error_handler = error_handler
4747
self.version = config.get('version')

Diff for: tests/test_config.py

+13
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,19 @@ def test_to_datafile(self):
10111011

10121012
self.assertEqual(expected_datafile, actual_datafile)
10131013

1014+
def test_to_datafile_from_bytes(self):
1015+
""" Test that to_datafile returns the expected datafile when given bytes. """
1016+
1017+
expected_datafile = json.dumps(self.config_dict_with_features)
1018+
bytes_datafile = bytes(expected_datafile, 'utf-8')
1019+
1020+
opt_obj = optimizely.Optimizely(bytes_datafile)
1021+
project_config = opt_obj.config_manager.get_config()
1022+
1023+
actual_datafile = project_config.to_datafile()
1024+
1025+
self.assertEqual(expected_datafile, actual_datafile)
1026+
10141027

10151028
class ConfigLoggingTest(base.BaseTest):
10161029
def setUp(self):

Diff for: tests/test_optimizely_config.py

+12
Original file line numberDiff line numberDiff line change
@@ -1525,6 +1525,18 @@ def test__get_datafile(self):
15251525

15261526
self.assertEqual(expected_datafile, actual_datafile)
15271527

1528+
def test__get_datafile_from_bytes(self):
1529+
""" Test that get_datafile returns the expected datafile when provided as bytes. """
1530+
1531+
expected_datafile = json.dumps(self.config_dict_with_features)
1532+
bytes_datafile = bytes(expected_datafile, 'utf-8')
1533+
1534+
opt_instance = optimizely.Optimizely(bytes_datafile)
1535+
opt_config = opt_instance.config_manager.optimizely_config
1536+
actual_datafile = opt_config.get_datafile()
1537+
1538+
self.assertEqual(expected_datafile, actual_datafile)
1539+
15281540
def test__get_sdk_key(self):
15291541
""" Test that get_sdk_key returns the expected value. """
15301542

0 commit comments

Comments
 (0)