summaryrefslogtreecommitdiff
path: root/barbicanclient/tests/v1/test_consumers.py
diff options
context:
space:
mode:
Diffstat (limited to 'barbicanclient/tests/v1/test_consumers.py')
-rw-r--r--barbicanclient/tests/v1/test_consumers.py129
1 files changed, 129 insertions, 0 deletions
diff --git a/barbicanclient/tests/v1/test_consumers.py b/barbicanclient/tests/v1/test_consumers.py
new file mode 100644
index 0000000..7b0c400
--- /dev/null
+++ b/barbicanclient/tests/v1/test_consumers.py
@@ -0,0 +1,129 @@
+# Copyright 2022 Red Hat Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from barbicanclient import client
+from barbicanclient.tests import test_client
+from barbicanclient.tests.utils import mock_delete_secret_for_responses
+from barbicanclient.tests.utils import mock_get_secret_for_client
+from barbicanclient.tests.v1.test_secrets import SecretData
+from barbicanclient.v1 import secrets
+
+from oslo_serialization import jsonutils
+
+
+class WhenTestingConsumers(test_client.BaseEntityResource):
+
+ def setUp(self):
+ self._setUp('secrets')
+
+ self.secret = SecretData()
+
+ self.client_v1_0 = client.Client(
+ endpoint=self.endpoint, project_id=self.project_id,
+ microversion='1.0')
+
+ self.manager = self.client.secrets
+ self.manager_v1_0 = self.client_v1_0.secrets
+
+ self.consumers_post_resource = self.entity_href + '/consumers/'
+ self.consumers_delete_resource = self.entity_href + '/consumers'
+
+ def test_register_consumer_fails_with_lower_microversion(self):
+ self.assertRaises(
+ NotImplementedError, self.manager_v1_0.register_consumer,
+ self.entity_href, self.secret.consumer.get('service'),
+ self.secret.consumer.get('resource_type'),
+ self.secret.consumer.get('resource_id'))
+
+ def _register_consumer(self):
+ data = self.secret.get_dict(
+ self.entity_href, consumers=[self.secret.consumer])
+ self.responses.post(self.entity_href + '/consumers/', json=data)
+ return self.manager.register_consumer(
+ self.entity_href, self.secret.consumer.get('service'),
+ self.secret.consumer.get('resource_type'),
+ self.secret.consumer.get('resource_id'))
+
+ def test_should_register_consumer_with_correct_microversion(self):
+ self._register_consumer()
+
+ def test_should_register_consumer_and_return_secret(self):
+ self.assertIsInstance(self._register_consumer(), secrets.Secret)
+
+ def test_should_register_consumer_with_correct_secret_href(self):
+ secret = self._register_consumer()
+ self.assertEqual(self.entity_href, secret.secret_ref)
+
+ def test_should_register_consumer_with_correct_url(self):
+ self._register_consumer()
+ self.assertEqual(
+ self.consumers_post_resource, self.responses.last_request.url)
+
+ def test_should_register_consumer_with_consumer(self):
+ secret = self._register_consumer()
+ self.assertEqual([self.secret.consumer], secret.consumers)
+
+ def test_remove_consumer_fails_with_lower_microversion(self):
+ self.assertRaises(
+ NotImplementedError, self.manager_v1_0.remove_consumer,
+ self.entity_href, self.secret.consumer.get('service'),
+ self.secret.consumer.get('resource_type'),
+ self.secret.consumer.get('resource_id'))
+
+ def _remove_consumer(self):
+ self.responses.delete(self.entity_href + '/consumers', status_code=204)
+ self.manager.remove_consumer(
+ self.entity_href, self.secret.consumer.get('service'),
+ self.secret.consumer.get('resource_type'),
+ self.secret.consumer.get('resource_id'))
+
+ def test_should_remove_consumer_with_correct_microversion(self):
+ self._remove_consumer()
+
+ def test_should_remove_consumer_with_correct_url(self):
+ self._remove_consumer()
+ self.assertEqual(
+ self.consumers_delete_resource, self.responses.last_request.url)
+
+ def test_should_remove_consumer_with_correct_consumer(self):
+ self._remove_consumer()
+ self.assertEqual(
+ self.consumers_delete_resource, self.responses.last_request.url)
+
+ body = jsonutils.loads(self.responses.last_request.text)
+ self.assertEqual(self.secret.consumer, body)
+
+ def _delete_from_manager(self, secret_ref, force=False, consumers=[]):
+ mock_get_secret_for_client(self.client, consumers=consumers)
+ mock_delete_secret_for_responses(self.responses, self.entity_href)
+ self.manager.delete(secret_ref=secret_ref, force=force)
+
+ def _delete_from_manager_with_consumers(self, secret_ref, force=False):
+ consumers = [{'service': 'service_test',
+ 'resource_type': 'type_test',
+ 'resource_id': 'id_test'}]
+
+ self._delete_from_manager(secret_ref, force=force, consumers=consumers)
+
+ def test_delete_from_manager_fails_with_consumers_without_force(self):
+ self.assertRaises(
+ ValueError,
+ self._delete_from_manager_with_consumers, self.entity_href,
+ force=False)
+
+ def test_should_delete_from_manager_with_consumers_and_force(self):
+ self._delete_from_manager_with_consumers(self.entity_href, force=True)
+
+ def test_should_delete_from_manager_without_consumers_and_force(self):
+ self._delete_from_manager(self.entity_href, force=True)