From 01256d03770ee0bd666dbc44c401abd6ccf825f6 Mon Sep 17 00:00:00 2001 From: Chellygel Date: Tue, 17 Mar 2015 15:50:54 -0500 Subject: [PATCH] Fixed deprecated type and encoding test and encoding bug Binary payloads were being decoded into unicode improperly. Change-Id: I1aa60c8f2a04e1cc37391d5d3eca98253c3d333a --- barbicanclient/client.py | 2 +- barbicanclient/secrets.py | 7 +++++-- barbicanclient/tests/test_secrets.py | 12 ++++++------ functionaltests/client/v1/functional/test_secrets.py | 9 +++++---- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/barbicanclient/client.py b/barbicanclient/client.py index a800d3cf..2af28101 100644 --- a/barbicanclient/client.py +++ b/barbicanclient/client.py @@ -94,7 +94,7 @@ class _HTTPClient(object): headers.update(self._default_headers) resp = self._session.get(href, headers=headers) self._check_status_code(resp) - return resp.text + return resp.content def _delete(self, href, json=None): headers = dict() diff --git a/barbicanclient/secrets.py b/barbicanclient/secrets.py index 0f503173..0bf44afa 100644 --- a/barbicanclient/secrets.py +++ b/barbicanclient/secrets.py @@ -241,8 +241,11 @@ class Secret(SecretFormatter): payload_url = self._secret_ref + '/payload' else: payload_url = self._secret_ref + 'payload' - - self._payload = self._api._get_raw(payload_url, headers) + payload = self._api._get_raw(payload_url, headers) + if self.payload_content_type == u'text/plain': + self._payload = payload.decode('UTF-8') + else: + self._payload = payload @immutable_after_save def store(self): diff --git a/barbicanclient/tests/test_secrets.py b/barbicanclient/tests/test_secrets.py index 7f614a90..152bf197 100644 --- a/barbicanclient/tests/test_secrets.py +++ b/barbicanclient/tests/test_secrets.py @@ -275,7 +275,7 @@ class WhenTestingSecrets(test_client.BaseEntityResource): self.assertEqual(self.entity_payload_href, n.last_request.url) def test_should_fetch_metadata_to_get_payload(self): - content_types_dict = {'default': 'application/octet-stream'} + content_types_dict = {'default': 'text/plain'} data = self.secret.get_dict(self.entity_href, content_types_dict=content_types_dict) @@ -284,7 +284,7 @@ class WhenTestingSecrets(test_client.BaseEntityResource): request_headers={'Accept': 'application/json'}, json=data) - request_headers = {'Accept': 'application/octet-stream'} + request_headers = {'Accept': 'text/plain'} decryption_response = self.responses.get( self.entity_payload_href, request_headers=request_headers, @@ -320,13 +320,13 @@ class WhenTestingSecrets(test_client.BaseEntityResource): Manually setting the payload_content_type is deprecated and will be removed in a future release. """ - decrypted = 'decrypted text here' + decrypted = b'decrypted text here' request_headers = {'Accept': 'application/octet-stream'} m = self.responses.get(self.entity_payload_href, request_headers=request_headers, - text=decrypted) + content=decrypted) secret = self.manager.get( secret_ref=self.entity_href, @@ -346,12 +346,12 @@ class WhenTestingSecrets(test_client.BaseEntityResource): request_headers={'Accept': 'application/json'}, json=json) - decrypted = 'decrypted text here' + decrypted = b'decrypted text here' request_headers = {'Accept': 'application/octet-stream'} decryption_response = self.responses.get( self.entity_payload_href, request_headers=request_headers, - text=decrypted) + content=decrypted) secret = self.manager.get(secret_ref=self.entity_href) secret_payload = secret.payload diff --git a/functionaltests/client/v1/functional/test_secrets.py b/functionaltests/client/v1/functional/test_secrets.py index b1b28cfb..6cf37f13 100644 --- a/functionaltests/client/v1/functional/test_secrets.py +++ b/functionaltests/client/v1/functional/test_secrets.py @@ -234,7 +234,7 @@ class SecretsTestCase(base.TestCase): 'payload_content_encoding': 'base64'} }) @testcase.attr('positive') - def test_secret_create_defaults_valid_types_and_encoding( + def test_secret_create_deprecated_types_and_encoding( self, payload_content_type, payload_content_encoding): @@ -249,10 +249,11 @@ class SecretsTestCase(base.TestCase): get_resp = self.behaviors.get_secret( secret_ref, payload_content_type=test_model.payload_content_type) - if test_model.payload_content_encoding == 'base64': - self.assertEqual(test_model.payload, - str(base64.b64encode(get_resp.payload))) + self.assertEqual( + base64.b64decode(test_model.payload), + get_resp.payload + ) else: self.assertEqual(test_model.payload, str(get_resp.payload))