From c7f45c241ae318ee1b36943ced7df038c7b38bfa Mon Sep 17 00:00:00 2001 From: twangboy Date: Tue, 30 Apr 2019 16:29:03 -0600 Subject: [PATCH 1/2] Pass encoding to stringutils.to_unicode --- salt/renderers/gpg.py | 10 +++++----- tests/unit/renderers/test_gpg.py | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/salt/renderers/gpg.py b/salt/renderers/gpg.py index c006f42dab5..e861da81615 100644 --- a/salt/renderers/gpg.py +++ b/salt/renderers/gpg.py @@ -295,7 +295,7 @@ def _decrypt_ciphertext(cipher): return decrypted_data -def _decrypt_ciphertexts(cipher, translate_newlines=False): +def _decrypt_ciphertexts(cipher, translate_newlines=False, encoding=None): to_bytes = salt.utils.stringutils.to_bytes cipher = to_bytes(cipher) if translate_newlines: @@ -314,14 +314,14 @@ def _decrypt_ciphertexts(cipher, translate_newlines=False): ret = cipher try: - ret = salt.utils.stringutils.to_unicode(ret) + ret = salt.utils.stringutils.to_unicode(ret, encoding=encoding) except UnicodeDecodeError: # decrypted data contains some sort of binary data - not our problem pass return ret -def _decrypt_object(obj, translate_newlines=False): +def _decrypt_object(obj, translate_newlines=False, encoding=None): ''' Recursively try to decrypt any object. If the object is a six.string_types (string or unicode), and it contains a valid GPG header, decrypt it, @@ -330,7 +330,7 @@ def _decrypt_object(obj, translate_newlines=False): if salt.utils.stringio.is_readable(obj): return _decrypt_object(obj.getvalue(), translate_newlines) if isinstance(obj, six.string_types): - return _decrypt_ciphertexts(obj, translate_newlines=translate_newlines) + return _decrypt_ciphertexts(obj, translate_newlines=translate_newlines, encoding=encoding) elif isinstance(obj, dict): for key, value in six.iteritems(obj): obj[key] = _decrypt_object(value, @@ -355,4 +355,4 @@ def render(gpg_data, saltenv='base', sls='', argline='', **kwargs): log.debug('Reading GPG keys from: %s', _get_key_dir()) translate_newlines = kwargs.get('translate_newlines', False) - return _decrypt_object(gpg_data, translate_newlines=translate_newlines) + return _decrypt_object(gpg_data, translate_newlines=translate_newlines, encoding=kwargs.get('encoding', None)) diff --git a/tests/unit/renderers/test_gpg.py b/tests/unit/renderers/test_gpg.py index c02a1ba9588..9099b4262e0 100644 --- a/tests/unit/renderers/test_gpg.py +++ b/tests/unit/renderers/test_gpg.py @@ -143,7 +143,7 @@ class GPGTestCase(TestCase, LoaderModuleMockMixin): with patch('salt.renderers.gpg._get_gpg_exec', MagicMock(return_value=True)): with patch('salt.renderers.gpg._get_key_dir', MagicMock(return_value=key_dir)): with patch('salt.renderers.gpg._decrypt_ciphertext', MagicMock(return_value=secret)): - self.assertEqual(gpg.render(crypted), expected) + self.assertEqual(gpg.render(crypted, encoding='utf-8'), expected) def test_render_with_translate_newlines_should_translate_newlines(self): key_dir = '/etc/salt/gpgkeys' @@ -165,6 +165,6 @@ class GPGTestCase(TestCase, LoaderModuleMockMixin): with patch('salt.renderers.gpg._get_key_dir', MagicMock(return_value=key_dir)): with patch('salt.renderers.gpg._decrypt_ciphertext', MagicMock(return_value=secret)): self.assertEqual( - gpg.render(crypted, translate_newlines=True), + gpg.render(crypted, translate_newlines=True, encoding='utf-8'), expected, ) From cde29cb334f4052cefd52d53b32da081776e1ed7 Mon Sep 17 00:00:00 2001 From: Ch3LL Date: Wed, 1 May 2019 15:40:58 -0400 Subject: [PATCH 2/2] Fix boto_apigateway tests for PyYAML 5.1 --- tests/unit/states/test_boto_apigateway.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/states/test_boto_apigateway.py b/tests/unit/states/test_boto_apigateway.py index 2cafb555f3f..a2a4491aec5 100644 --- a/tests/unit/states/test_boto_apigateway.py +++ b/tests/unit/states/test_boto_apigateway.py @@ -229,7 +229,7 @@ deployment1_ret = dict(createdDate=datetime.datetime(2015, 11, 17, 16, 33, 50), description=('{\n' ' "api_name": "unit test api",\n' ' "swagger_file": "temp-swagger-sample.yaml",\n' - ' "swagger_file_md5sum": "693c57997a12a2446bb5c08c793d943c",\n' + ' "swagger_file_md5sum": "55a948ff90ad80ff747ec91657c7a299",\n' ' "swagger_info_object": {\n' ' "description": "salt boto apigateway unit test service",\n' ' "title": "salt boto apigateway unit test service",\n' @@ -371,7 +371,7 @@ class TempSwaggerFile(object): def __enter__(self): self.swaggerfile = 'temp-swagger-sample.yaml' with salt.utils.files.fopen(self.swaggerfile, 'w') as fp_: - salt.utils.yaml.safe_dump(self.swaggerdict, fp_) + salt.utils.yaml.safe_dump(self.swaggerdict, fp_, default_flow_style=False) return self.swaggerfile def __exit__(self, objtype, value, traceback):