From 9d78cd794c3fc8f1fd2c5afbb8c3b2f051611986 Mon Sep 17 00:00:00 2001 From: Tomasz Prus Date: Tue, 18 Sep 2018 00:35:49 +0200 Subject: [PATCH] fix: read config data with bytes (python3) --- config/kube_config.py | 6 +++++- config/kube_config_test.py | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/config/kube_config.py b/config/kube_config.py index 671d370f..5e9c4ab1 100644 --- a/config/kube_config.py +++ b/config/kube_config.py @@ -100,8 +100,12 @@ def as_file(self): use_data_if_no_file = not self._file and self._data if use_data_if_no_file: if self._base64_file_content: + if isinstance(self._data, str): + content = self._data.encode() + else: + content = self._data self._file = _create_temp_file_with_content( - base64.decodestring(self._data.encode())) + base64.decodestring(content)) else: self._file = _create_temp_file_with_content(self._data) if self._file and not os.path.isfile(self._file): diff --git a/config/kube_config_test.py b/config/kube_config_test.py index cd64f91b..84fb38ae 100644 --- a/config/kube_config_test.py +++ b/config/kube_config_test.py @@ -201,6 +201,18 @@ def test_create_temp_file_with_content(self): _create_temp_file_with_content(TEST_DATA))) _cleanup_temp_files() + def test_file_given_data_bytes(self): + obj = {TEST_DATA_KEY: TEST_DATA_BASE64.encode()} + t = FileOrData(obj=obj, file_key_name=TEST_FILE_KEY, + data_key_name=TEST_DATA_KEY) + self.assertEqual(TEST_DATA, self.get_file_content(t.as_file())) + + def test_file_given_data_bytes_no_base64(self): + obj = {TEST_DATA_KEY: TEST_DATA.encode()} + t = FileOrData(obj=obj, file_key_name=TEST_FILE_KEY, + data_key_name=TEST_DATA_KEY, base64_file_content=False) + self.assertEqual(TEST_DATA, self.get_file_content(t.as_file())) + class TestConfigNode(BaseTestCase):