diff --git a/barbicanclient/containers.py b/barbicanclient/containers.py index a2c17f3e..3bf87895 100644 --- a/barbicanclient/containers.py +++ b/barbicanclient/containers.py @@ -53,7 +53,7 @@ class ContainerFormatter(formatter.EntityFormatter): formatted_consumers = None if self.secrets: formatted_secrets = '\n'.join(( - '='.join((name, secret_ref)) + '='.join((name, secret_ref)) if name else secret_ref for name, secret_ref in six.iteritems(self.secret_refs) )) if self.consumers: @@ -114,7 +114,8 @@ class Container(ContainerFormatter): def _fill_secrets_from_secret_refs(self): if self._secret_refs: self._cached_secrets = dict( - (name.lower(), self._secret_manager.get(secret_ref=secret_ref)) + (name.lower() if name else "", + self._secret_manager.get(secret_ref=secret_ref)) for name, secret_ref in six.iteritems(self._secret_refs) ) diff --git a/barbicanclient/tests/test_containers.py b/barbicanclient/tests/test_containers.py index 51f92b7c..cf586682 100644 --- a/barbicanclient/tests/test_containers.py +++ b/barbicanclient/tests/test_containers.py @@ -17,6 +17,7 @@ import json import mock from oslo_utils import timeutils +import six from barbicanclient import acls from barbicanclient.tests import test_client @@ -465,7 +466,6 @@ class WhenTestingContainers(test_client.BaseEntityResource): container_resp = self.container.get_dict(self.entity_href) data = {"containers": [container_resp for v in range(3)]} self.responses.get(self.entity_base, json=data) - containers_list = self.manager.list(limit=10, offset=5) self.assertTrue(len(containers_list) == 3) self.assertIsInstance(containers_list[0], containers.Container) @@ -474,11 +474,30 @@ class WhenTestingContainers(test_client.BaseEntityResource): # Verify the correct URL was used to make the call. self.assertEqual(self.entity_base, self.responses.last_request.url.split('?')[0]) - # Verify that correct information was sent in the call. self.assertEqual(['10'], self.responses.last_request.qs['limit']) self.assertEqual(['5'], self.responses.last_request.qs['offset']) + def test_should_get_list_when_secret_ref_without_name(self): + container_resp = self.container.get_dict(self.entity_href) + del container_resp.get("secret_refs")[0]["name"] + data = {"containers": [container_resp for v in range(3)]} + self.responses.get(self.entity_base, json=data) + containers_list = self.manager.list(limit=10, offset=5) + + self.assertTrue(len(containers_list) == 3) + self.assertIsInstance(containers_list[0], containers.Container) + self.assertEqual(self.entity_href, containers_list[0].container_ref) + + # Verify the correct URL was used to make the call. + self.assertEqual(self.entity_base, + self.responses.last_request.url.split('?')[0]) + + # Verify that the names of the secret_refs in the containers are None + for container in containers_list: + for name in six.iterkeys(container._secret_refs): + self.assertIsNone(name) + def test_should_fail_get_invalid_container(self): self.assertRaises(ValueError, self.manager.get, **{'container_ref': '12345'})