From 2cf71c91faee0d352329c6b12be96219437b4daf Mon Sep 17 00:00:00 2001 From: Mitchell Yuwono Date: Mon, 20 Feb 2017 15:26:46 +1100 Subject: [PATCH 1/2] implement delete secret (#34) --- src/main/python/covata/delta/api/requestsclient.py | 9 +++++++++ src/main/python/covata/delta/interfaces.py | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/src/main/python/covata/delta/api/requestsclient.py b/src/main/python/covata/delta/api/requestsclient.py index d8d0f14..e02306b 100644 --- a/src/main/python/covata/delta/api/requestsclient.py +++ b/src/main/python/covata/delta/api/requestsclient.py @@ -137,6 +137,15 @@ def get_secret(self, requestor_id, secret_id): secret["encryptionDetails"][k] = b64decode(v) return secret + def delete_secret(self, requestor_id, secret_id): + response = requests.delete( + url="{base_url}{resource}/{secret_id}".format( + base_url=self.DELTA_URL, + resource=self.RESOURCE_SECRETS, + secret_id=secret_id), + auth=self.signer(requestor_id)) + response.raise_for_status() + def update_secret_metadata(self, requestor_id, secret_id, metadata, version): response = requests.put( diff --git a/src/main/python/covata/delta/interfaces.py b/src/main/python/covata/delta/interfaces.py index 520f896..a4782e2 100644 --- a/src/main/python/covata/delta/interfaces.py +++ b/src/main/python/covata/delta/interfaces.py @@ -98,6 +98,15 @@ def share_secret(self, requestor_id, content, encryption_details, :rtype: dict[str, str] """ + @abstractmethod + def delete_secret(self, requestor_id, secret_id): + """ + Deletes the secret with the given secret id. + + :param str requestor_id: the authenticating identity id + :param str secret_id: the secret id to be deleted + """ + @abstractmethod def get_secret(self, requestor_id, secret_id): """ From 52ffb296a82ed666cfad6e2cd9934bf7badd7094 Mon Sep 17 00:00:00 2001 From: Mitchell Yuwono Date: Mon, 20 Feb 2017 15:35:01 +1100 Subject: [PATCH 2/2] unit test for secret deletion (#34) --- .../python/test_requests_api_client.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/unittest/python/test_requests_api_client.py b/src/unittest/python/test_requests_api_client.py index 62eabeb..9604049 100644 --- a/src/unittest/python/test_requests_api_client.py +++ b/src/unittest/python/test_requests_api_client.py @@ -256,6 +256,25 @@ def test_get_secret(api_client, mock_signer): assert response == expected_json +@responses.activate +def test_delete_secret(api_client, mock_signer): + requestor_id = "requestor_id" + secret_id = "secret_id" + + responses.add(responses.DELETE, + "{base_path}{resource}/{secret_id}".format( + base_path=DeltaApiClient.DELTA_URL, + resource=DeltaApiClient.RESOURCE_SECRETS, + secret_id=secret_id), + status=204) + + api_client.delete_secret(requestor_id, secret_id) + + mock_signer.assert_called_once_with(requestor_id) + + assert len(responses.calls) == 1 + + @responses.activate def test_get_secret_metadata(api_client, mock_signer): response_json = dict(metadata_key="metadata value")