diff --git a/barbican/api/controllers/consumers.py b/barbican/api/controllers/consumers.py index 84983d437..680bb1183 100644 --- a/barbican/api/controllers/consumers.py +++ b/barbican/api/controllers/consumers.py @@ -23,6 +23,7 @@ from barbican.common import validators from barbican import i18n as u from barbican.model import models from barbican.model import repositories as repo +from barbican.plugin import util as putil LOG = utils.getLogger(__name__) @@ -390,8 +391,7 @@ class SecretConsumersController(controllers.ACLMixin): def _return_secret_data(self, secret_id): secret = self._get_secret(secret_id) - dict_fields = secret.to_dict_fields() + secret_fields = putil.mime_types.augment_fields_with_content_types( + secret) - return hrefs.convert_to_hrefs( - hrefs.convert_to_hrefs(dict_fields) - ) + return hrefs.convert_to_hrefs(secret_fields) diff --git a/barbican/tests/api/test_resources.py b/barbican/tests/api/test_resources.py index feb8e97f8..5ef2763b8 100644 --- a/barbican/tests/api/test_resources.py +++ b/barbican/tests/api/test_resources.py @@ -1262,6 +1262,7 @@ class WhenCreatingSecretConsumersUsingResource(FunctionalTest): return RootController() def _init(self): + self.name = 'test container name' self.external_project_id = 'keystoneid1234' self.project_internal_id = 'projectid1234' @@ -1271,8 +1272,35 @@ class WhenCreatingSecretConsumersUsingResource(FunctionalTest): self.project.external_id = self.external_project_id # Set up mocked secret - self.secret = models.Secret() - self.secret.id = utils.generate_test_valid_uuid() + secret_id = utils.generate_test_valid_uuid() + datum_id = "iddatum1" + kek_id = "idkek1" + + self.secret_algorithm = "AES" + self.secret_bit_length = 256 + self.secret_mode = "CBC" + + self.kek_project = models.KEKDatum() + self.kek_project.id = kek_id + self.kek_project.active = True + self.kek_project.bind_completed = False + self.kek_project.kek_label = "kek_label" + + self.datum = models.EncryptedDatum() + self.datum.id = datum_id + self.datum.secret_id = secret_id + self.datum.kek_id = kek_id + self.datum.kek_meta_project = self.kek_project + self.datum.content_type = "text/plain" + self.datum.cypher_text = "aaaa" # base64 value. + + self.secret = create_secret(id_ref=secret_id, + name=self.name, + algorithm=self.secret_algorithm, + bit_length=self.secret_bit_length, + mode=self.secret_mode, + encrypted_datum=self.datum, + content_type=self.datum.content_type) self.secret.project = self.project self.secret.project_id = self.project_internal_id @@ -1320,6 +1348,7 @@ class WhenCreatingSecretConsumersUsingResource(FunctionalTest): args, kwargs = self.consumer_repo.create_or_update_from.call_args consumer = args[0] self.assertIsInstance(consumer, models.SecretConsumerMetadatum) + self.assertIn('content_types', resp.namespace) def test_should_fail_consumer_bad_json(self): resp = self.app.post( @@ -1357,6 +1386,7 @@ class WhenGettingOrDeletingSecretConsumersUsingResource(FunctionalTest): return RootController() def _init(self): + self.name = 'test container name' self.external_project_id = 'keystoneid1234' self.project_internal_id = 'projectid1234' @@ -1366,8 +1396,35 @@ class WhenGettingOrDeletingSecretConsumersUsingResource(FunctionalTest): self.project.external_id = self.external_project_id # Set up mocked secret - self.secret = models.Secret() - self.secret.id = utils.generate_test_valid_uuid() + secret_id = utils.generate_test_valid_uuid() + datum_id = "iddatum1" + kek_id = "idkek1" + + self.secret_algorithm = "AES" + self.secret_bit_length = 256 + self.secret_mode = "CBC" + + self.kek_project = models.KEKDatum() + self.kek_project.id = kek_id + self.kek_project.active = True + self.kek_project.bind_completed = False + self.kek_project.kek_label = "kek_label" + + self.datum = models.EncryptedDatum() + self.datum.id = datum_id + self.datum.secret_id = secret_id + self.datum.kek_id = kek_id + self.datum.kek_meta_project = self.kek_project + self.datum.content_type = "text/plain" + self.datum.cypher_text = "aaaa" # base64 value. + + self.secret = create_secret(id_ref=secret_id, + name=self.name, + algorithm=self.secret_algorithm, + bit_length=self.secret_bit_length, + mode=self.secret_mode, + encrypted_datum=self.datum, + content_type=self.datum.content_type) self.secret.project = self.project self.secret.project_id = self.project_internal_id @@ -1464,12 +1521,13 @@ class WhenGettingOrDeletingSecretConsumersUsingResource(FunctionalTest): self.assertEqual(200, resp.status_int) def test_should_delete_consumer(self): - self.app.delete_json('/secrets/{0}/consumers/'.format( + resp = self.app.delete_json('/secrets/{0}/consumers/'.format( self.secret.id ), self.consumer_ref) self.consumer_repo.delete_entity_by_id.assert_called_once_with( self.consumer.id, self.external_project_id) + self.assertIn('content_types', resp.namespace) def test_should_fail_deleting_consumer_bad_json(self): resp = self.app.delete(