diff options
author | Mauricio Harley <mharley@redhat.com> | 2022-09-05 17:17:50 +0200 |
---|---|---|
committer | Grzegorz Grasza <xek@redhat.com> | 2023-01-18 13:20:45 +0000 |
commit | 3ffa1600af21620d7f141faee9389c7e7e9079e3 (patch) | |
tree | 914258c038ee7e1e39224c4aa7b6e20d8fe6bc4d /functionaltests/client/v1/functional/test_secrets.py | |
parent | 35599e2b98d5c4e94d75ea41bae56a3d8b52108c (diff) | |
download | python-barbicanclient-3ffa1600af21620d7f141faee9389c7e7e9079e3.tar.gz |
Add secret consumers Python API
This adds the Python API for secret consumers,
similar to the container consumers API.
Also adding functional tests for both secret
and container consumers.
Co-Authored-By: Grzegorz Grasza <xek@redhat.com>
Change-Id: I024db27d12ea33713bda0273d8748577cc89a38d
Diffstat (limited to 'functionaltests/client/v1/functional/test_secrets.py')
-rw-r--r-- | functionaltests/client/v1/functional/test_secrets.py | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/functionaltests/client/v1/functional/test_secrets.py b/functionaltests/client/v1/functional/test_secrets.py index 2ea483b..205cc58 100644 --- a/functionaltests/client/v1/functional/test_secrets.py +++ b/functionaltests/client/v1/functional/test_secrets.py @@ -133,6 +133,161 @@ class SecretsTestCase(base.TestCase): resp = self.barbicanclient.secrets.get(secret_ref) self.assertEqual(secret.mode, resp.mode) + @utils.parameterized_dataset({ + 'remove_one': [[{'service': 'service_test1', + 'resource_type': 'type_test1', + 'resource_id': 'id_test1'}, + {'service': 'service_test2', + 'resource_type': 'type_test2', + 'resource_id': 'id_test2'}], + [{'service': 'service_test1', + 'resource_type': 'type_test1', + 'resource_id': 'id_test1'}]], + 'remove_all': [[{'service': 'service_test1', + 'resource_type': 'type_test1', + 'resource_id': 'id_test1'}, + {'service': 'service_test2', + 'resource_type': 'type_test2', + 'resource_id': 'id_test2'}], + [{'service': 'service_test1', + 'resource_type': 'type_test1', + 'resource_id': 'id_test1'}, + {'service': 'service_test2', + 'resource_type': 'type_test2', + 'resource_id': 'id_test2'}]], + 'add_duplicate_remove_one': [[{'service': 'service_test1', + 'resource_type': 'type_test1', + 'resource_id': 'id_test1'}, + {'service': 'service_test1', + 'resource_type': 'type_test1', + 'resource_id': 'id_test1'}, + {'service': 'service_test2', + 'resource_type': 'type_test2', + 'resource_id': 'id_test2'}], + [{'service': 'service_test1', + 'resource_type': 'type_test1', + 'resource_id': 'id_test1'}]] + }) + @testcase.attr('positive') + def test_secret_create_and_registering_removing_consumers( + self, + register_consumers, + remove_consumers): + """The following activities are carried: + + Create a secret, then register each consumer + in the register_consumers list, then remove each consumer + in the remove_consumers list. + """ + new_secret = self.barbicanclient.secrets.create( + **secret_create_defaults_data) + + secret_ref = self.cleanup.add_entity(new_secret) + self.assertIsNotNone(secret_ref) + + for consumer in register_consumers: + secret = self.barbicanclient.secrets.register_consumer( + secret_ref, **consumer) + self.assertEqual(secret_ref, secret.secret_ref) + + # We expect that duplicate calls to register_consumers don't + # create new consumers even though the API returns HTTP 200 OK + deduplicated_consumers_count = len(set( + [c['resource_id'] for c in register_consumers])) + + self.assertEqual(deduplicated_consumers_count, + len(secret.consumers)) + + for consumer in remove_consumers: + self.barbicanclient.secrets.remove_consumer( + secret_ref, **consumer) + + secret = self.barbicanclient.secrets.get(secret_ref) + + removed_ids = set([v['resource_id'] for v in remove_consumers]) + remaining_consumers = [v for v in register_consumers + if v['resource_id'] not in removed_ids] + self.assertCountEqual(remaining_consumers, secret.consumers) + + @utils.parameterized_dataset({ + 'no_args': [[{}]], + 'one_arg_1': [[{'service': 'service1'}]], + 'one_arg_2': [[{'resource_type': 'type1'}]], + 'one_arg_3': [[{'resource_id': 'id1'}]], + 'two_args_1': [[{'service': 'service1', + 'resource_type': 'type1'}]], + 'two_args_2': [[{'service': 'service1', + 'resource_id': 'id1'}]], + 'two_args_3': [[{'resource_type': 'type1', + 'resource_id': 'id'}]] + }) + @testcase.attr('negative') + def test_consumer_register_missing_positional_arguments( + self, + register_consumers): + """Missing Positional Arguments - Registration + + Tries to register a secret consumer without + providing all of the required positional arguments + (service, resource_type, resource_id). + """ + new_secret = self.barbicanclient.secrets.create( + **secret_create_defaults_data) + + secret_ref = self.cleanup.add_entity(new_secret) + self.assertIsNotNone(secret_ref) + + for consumer in register_consumers: + e = self.assertRaises( + TypeError, + self.barbicanclient.secrets.register_consumer, + secret_ref, **consumer + ) + self.assertIn('register_consumer() missing', str(e)) + + @utils.parameterized_dataset({ + 'no_args': [[{}]], + 'one_arg_1': [[{'service': 'service1'}]], + 'one_arg_2': [[{'resource_type': 'type1'}]], + 'one_arg_3': [[{'resource_id': 'id1'}]], + 'two_args_1': [[{'service': 'service1', + 'resource_type': 'type1'}]], + 'two_args_2': [[{'service': 'service1', + 'resource_id': 'id1'}]], + 'two_args_3': [[{'resource_type': 'type1', + 'resource_id': 'id'}]] + }) + @testcase.attr('negative') + def test_consumer_remove_missing_positional_arguments( + self, + register_consumers): + """Missing Positional Arguments - Removal + + Tries to remove a secret consumer without + providing all of the required positional arguments + (service, resource_type, resource_id). + """ + new_secret = self.barbicanclient.secrets.create( + **secret_create_defaults_data) + + secret_ref = self.cleanup.add_entity(new_secret) + self.assertIsNotNone(secret_ref) + + secret = self.barbicanclient.secrets.register_consumer( + secret_ref, + service="service1", + resource_type="type1", + resource_id="id1" + ) + self.assertEqual(secret_ref, secret.secret_ref) + for consumer in register_consumers: + e = self.assertRaises( + TypeError, + self.barbicanclient.secrets.remove_consumer, + secret_ref, **consumer + ) + self.assertIn('remove_consumer() missing', str(e)) + @testcase.attr('negative') def test_secret_delete_doesnt_exist(self): """Deletes a non-existent secret. |