diff --git a/barbican/api/controllers/secretmeta.py b/barbican/api/controllers/secretmeta.py index f0bada25e..3957e1c67 100644 --- a/barbican/api/controllers/secretmeta.py +++ b/barbican/api/controllers/secretmeta.py @@ -103,9 +103,8 @@ class SecretMetadataController(controllers.ACLMixin): LOG.debug('URI to secret metadata is %s', url) pecan.response.status = 201 - return {'metadata_ref': url + "/%s {key: %s, value:%s}" % (key, - key, - value)} + pecan.response.headers['Location'] = str(url + '/' + key) + return {'key': key, 'value': value} class SecretMetadatumController(controllers.ACLMixin): diff --git a/barbican/tests/api/controllers/test_secretmeta.py b/barbican/tests/api/controllers/test_secretmeta.py index c7ff25b9e..46443dcf2 100644 --- a/barbican/tests/api/controllers/test_secretmeta.py +++ b/barbican/tests/api/controllers/test_secretmeta.py @@ -35,6 +35,29 @@ class WhenTestingSecretMetadataResource(utils.BarbicanAPIBaseTestCase): } } + def test_post_secret_metadata(self): + secret_id, secret_resp = create_secret(self.app) + resp = self.app.post_json( + '/secrets/{}/metadata'.format(secret_id), + {'key': 'foo', + 'value': 'bar'} + ) + meta = json.loads(resp.body) + self.assertIn('key', meta.keys()) + self.assertIn('value', meta.keys()) + self.assertEqual('foo', meta['key']) + self.assertEqual('bar', meta['value']) + + def test_post_secret_metadata_response_sets_location_header(self): + secret_id, secret_resp = create_secret(self.app) + resp = self.app.post_json( + '/secrets/{}/metadata'.format(secret_id), + {'key': 'foo', + 'value': 'bar'} + ) + self.assertIn('Location', resp.headers) + self.assertTrue(resp.headers['Location'].endswith('foo')) + def test_create_secret_metadata(self): secret_resp, secret_uuid = create_secret(self.app) meta_resp = create_secret_metadata(self.app, diff --git a/releasenotes/notes/fix-story-2009247-18faf4f2b570dfc0.yaml b/releasenotes/notes/fix-story-2009247-18faf4f2b570dfc0.yaml new file mode 100644 index 000000000..b5f49ee2c --- /dev/null +++ b/releasenotes/notes/fix-story-2009247-18faf4f2b570dfc0.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fixed Story #2009247 - Fixed the response for + POST /v1/secrets/{secret-id}/metadata so it matches the documented + behavior.