summaryrefslogtreecommitdiffstats
path: root/custodia
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-04-08 09:51:32 -0400
committerSimo Sorce <simo@redhat.com>2015-04-08 09:51:32 -0400
commit3ad95956864a8b8727dc3661e208e04b688baf8e (patch)
tree16f4f9372a99cd80a204e58397b16bcb3d1612c2 /custodia
parent575efc8bd229cfa5ef7d73c4b53c1e27f6f267d5 (diff)
downloadcustodia-3ad95956864a8b8727dc3661e208e04b688baf8e.tar.gz
custodia-3ad95956864a8b8727dc3661e208e04b688baf8e.tar.xz
custodia-3ad95956864a8b8727dc3661e208e04b688baf8e.zip
Allow to filter by keytype on key GET
Diffstat (limited to 'custodia')
-rw-r--r--custodia/secrets.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/custodia/secrets.py b/custodia/secrets.py
index 397754b..a6958e3 100644
--- a/custodia/secrets.py
+++ b/custodia/secrets.py
@@ -182,11 +182,17 @@ class Secrets(HTTPConsumer):
response['code'] = 204
def _get_key(self, trail, request, response):
+ reqtype = request.get('query', dict()).get('type')
key = self._db_key(trail)
try:
output = self.root.store.get(key)
if output is None:
raise HTTPError(404)
+ if reqtype is not None:
+ key = json.loads(output)
+ keytype = key.get('type')
+ if keytype != reqtype:
+ raise HTTPError(406)
response['output'] = output
except CSStoreError:
raise HTTPError(500)
@@ -405,6 +411,16 @@ class SecretsTests(unittest.TestCase):
self.assertEqual(err.exception.code, 404)
+ def test_5_GETkey_errors_406(self):
+ req = {'remote_user': 'test',
+ 'query': {'type': 'complex'},
+ 'trail': ['test', 'key1']}
+ rep = {}
+ with self.assertRaises(HTTPError) as err:
+ self.GET(req, rep)
+
+ self.assertEqual(err.exception.code, 406)
+
def test_6_LISTkeys_errors_404_1(self):
req = {'remote_user': 'test',
'trail': ['test', 'case', '']}