diff options
author | Simo Sorce <simo@redhat.com> | 2015-04-07 18:42:05 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2015-04-07 18:48:32 -0400 |
commit | 2760061c014558325f2011a02e5150f4efa2eb6a (patch) | |
tree | 8f273f8f0a76a40f0cd19dbfb4adff20bbee8dc4 /custodia/secrets.py | |
parent | 6e5a83f9d9ed80268ba29b1d2404f5d9897fe0c0 (diff) | |
download | custodia-2760061c014558325f2011a02e5150f4efa2eb6a.tar.gz custodia-2760061c014558325f2011a02e5150f4efa2eb6a.tar.xz custodia-2760061c014558325f2011a02e5150f4efa2eb6a.zip |
Add detection of conflicts when creating elements
Diffstat (limited to 'custodia/secrets.py')
-rw-r--r-- | custodia/secrets.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/custodia/secrets.py b/custodia/secrets.py index 4235b82..7661277 100644 --- a/custodia/secrets.py +++ b/custodia/secrets.py @@ -3,6 +3,7 @@ from custodia.httpd.consumer import HTTPConsumer from custodia.httpd.server import HTTPError from custodia.store.interface import CSStoreError +from custodia.store.interface import CSStoreExists import json import os @@ -136,6 +137,8 @@ class Secrets(HTTPConsumer): raise HTTPError(404) self.root.store.set(basename, '') + except CSStoreExists: + raise HTTPError(409) except CSStoreError: raise HTTPError(500) @@ -200,7 +203,9 @@ class Secrets(HTTPConsumer): if not ok: raise HTTPError(404) - self.root.store.set(key, value) + ok = self.root.store.set(key, value) + except CSStoreExists: + raise HTTPError(409) except CSStoreError: raise HTTPError(500) @@ -341,6 +346,17 @@ class SecretsTests(unittest.TestCase): self.secrets.PUT(req, rep) self.assertEqual(err.exception.code, 405) + def test_4_PUTKey_errors_409(self): + req = {'headers': {'Content-Type': 'application/json; charset=utf-8'}, + 'remote_user': 'test', + 'trail': ['test', 'key3'], + 'body': '{"type":"simple","value":"2345"}'} + rep = {} + self.secrets.PUT(req, rep) + with self.assertRaises(HTTPError) as err: + self.secrets.PUT(req, rep) + self.assertEqual(err.exception.code, 409) + def test_5_GETKey_errors_403(self): req = {'remote_user': 'case', 'trail': ['test', 'key1']} @@ -435,6 +451,15 @@ class SecretsTests(unittest.TestCase): self.secrets.POST(req, rep) self.assertEqual(err.exception.code, 405) + def test_8_CREATEcont_erros_409(self): + req = {'remote_user': 'test', + 'trail': ['test', 'exists', '']} + rep = {} + self.secrets.POST(req, rep) + with self.assertRaises(HTTPError) as err: + self.secrets.POST(req, rep) + self.assertEqual(err.exception.code, 409) + def test_8_DESTROYcont(self): req = {'remote_user': 'test', 'trail': ['test', 'container', '']} |