From 4a9e556acd740b73fda5a8b147c2dc5bc238e4a5 Mon Sep 17 00:00:00 2001 From: Andy Leap Date: Wed, 1 Jun 2022 16:19:33 -0400 Subject: [PATCH] handle datafile provided as bytes --- optimizely/project_config.py | 2 +- tests/test_config.py | 13 +++++++++++++ tests/test_optimizely_config.py | 12 ++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/optimizely/project_config.py b/optimizely/project_config.py index 82da17c9..12fd1086 100644 --- a/optimizely/project_config.py +++ b/optimizely/project_config.py @@ -41,7 +41,7 @@ def __init__(self, datafile, logger, error_handler): """ config = json.loads(datafile) - self._datafile = u'{}'.format(datafile) + self._datafile = datafile.decode('utf-8') if isinstance(datafile, bytes) else datafile self.logger = logger self.error_handler = error_handler self.version = config.get('version') diff --git a/tests/test_config.py b/tests/test_config.py index 96450368..83ebb18c 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1011,6 +1011,19 @@ def test_to_datafile(self): self.assertEqual(expected_datafile, actual_datafile) + def test_to_datafile_from_bytes(self): + """ Test that to_datafile returns the expected datafile when given bytes. """ + + expected_datafile = json.dumps(self.config_dict_with_features) + bytes_datafile = bytes(expected_datafile, 'utf-8') + + opt_obj = optimizely.Optimizely(bytes_datafile) + project_config = opt_obj.config_manager.get_config() + + actual_datafile = project_config.to_datafile() + + self.assertEqual(expected_datafile, actual_datafile) + class ConfigLoggingTest(base.BaseTest): def setUp(self): diff --git a/tests/test_optimizely_config.py b/tests/test_optimizely_config.py index c37a8434..640100d7 100644 --- a/tests/test_optimizely_config.py +++ b/tests/test_optimizely_config.py @@ -1525,6 +1525,18 @@ def test__get_datafile(self): self.assertEqual(expected_datafile, actual_datafile) + def test__get_datafile_from_bytes(self): + """ Test that get_datafile returns the expected datafile when provided as bytes. """ + + expected_datafile = json.dumps(self.config_dict_with_features) + bytes_datafile = bytes(expected_datafile, 'utf-8') + + opt_instance = optimizely.Optimizely(bytes_datafile) + opt_config = opt_instance.config_manager.optimizely_config + actual_datafile = opt_config.get_datafile() + + self.assertEqual(expected_datafile, actual_datafile) + def test__get_sdk_key(self): """ Test that get_sdk_key returns the expected value. """