1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
# 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)
def _list_consumers(self, secret_ref, consumers=[]):
mock_get_secret_for_client(self.client, consumers)
return self.manager.list_consumers(secret_ref)
def test_list_consumers_from_secret_without_consumers(self):
consumer_list = self._list_consumers(self.entity_href)
self.assertTrue(len(consumer_list) == 0)
def test_list_consumers_from_secret_with_consumers(self):
consumers = [{'service': 'service_test1',
'resource_type': 'type_test1',
'resource_id': 'id_test1'},
{'service': 'service_test2',
'resource_type': 'type_test2',
'resource_id': 'id_test2'}]
consumer_list = self._list_consumers(self.entity_href, consumers)
for elem in range(len(consumers)):
self.assertTrue(
consumer_list[elem].service ==
consumers[elem]['service'])
self.assertTrue(
consumer_list[elem].resource_type ==
consumers[elem]['resource_type'])
self.assertTrue(
consumer_list[elem].resource_id ==
consumers[elem]['resource_id'])
def test_should_fail_list_consumers_invalid_secret(self):
self.assertRaises(ValueError, self.manager.list_consumers,
**{'secret_ref': '12345'})
|