Best Python code snippet using tempest_python
test_images_rbac.py
Source:test_images_rbac.py
...55 def resource_setup(cls):56 super(ImagesRbacTest, cls).resource_setup()57 params = {'name': data_utils.rand_name(cls.__name__ + '-image')}58 if CONF.image_feature_enabled.api_v1:59 params = {'headers': common_image.image_meta_to_headers(**params)}60 cls.image = cls.glance_image_client.create_image(**params)61 cls.addClassResourceCleanup(62 cls.glance_image_client.wait_for_resource_deletion,63 cls.image['id'])64 cls.addClassResourceCleanup(65 cls.glance_image_client.delete_image, cls.image['id'])66 @decorators.idempotent_id('b861f302-b72b-4055-81db-c62ff30b136d')67 @rbac_rule_validation.action(68 service="glance",69 rules=["get_images"])70 def test_list_images(self):71 with self.override_role():72 self.compute_images_client.list_images()73 @decorators.idempotent_id('4365ae0f-15ee-4b54-a527-1679faaed140')74 @rbac_rule_validation.action(75 service="glance",76 rules=["get_images"])77 def test_list_images_with_details(self):78 with self.override_role():79 self.compute_images_client.list_images(detail=True)80 @decorators.idempotent_id('886dfcae-51bf-4610-9e52-82d7189524c2')81 @rbac_rule_validation.action(82 service="glance",83 rules=["get_image"])84 def test_show_image_details(self):85 with self.override_role():86 self.compute_images_client.show_image(self.image['id'])87 @decorators.idempotent_id('5888c7aa-0803-46d4-a3fb-5d4729465cd5')88 @rbac_rule_validation.action(89 service="glance",90 rules=["delete_image"])91 def test_delete_image(self):92 image = self.glance_image_client.create_image(93 name=data_utils.rand_name(self.__class__.__name__ + '-image'))94 self.addCleanup(test_utils.call_and_ignore_notfound_exc,95 self.glance_image_client.delete_image, image['id'])96 with self.override_role():97 self.compute_images_client.delete_image(image['id'])98class ImagesMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest):99 """RBAC tests for the Nova metadata images API.100 These APIs are proxy calls to the Image service. Consequently, no Nova101 policy actions are enforced; instead, only Glance policy actions are102 enforced. As such, these tests check that only Glance policy actions are103 executed.104 """105 # These tests will fail with a 404 starting from microversion 2.39.106 # See the following link for details:107 # https://docs.openstack.org/api-ref/compute/#images-deprecated108 max_microversion = '2.38'109 @classmethod110 def skip_checks(cls):111 super(ImagesMetadataRbacTest, cls).skip_checks()112 if not CONF.service_available.glance:113 skip_msg = ("%s skipped as glance is not available" % cls.__name__)114 raise cls.skipException(skip_msg)115 @classmethod116 def setup_clients(cls):117 super(ImagesMetadataRbacTest, cls).setup_clients()118 if CONF.image_feature_enabled.api_v2:119 cls.glance_image_client = cls.os_primary.image_client_v2120 elif CONF.image_feature_enabled.api_v1:121 cls.glance_image_client = cls.os_primary.image_client122 else:123 raise lib_exc.InvalidConfiguration(124 'Either api_v1 or api_v2 must be True in '125 '[image-feature-enabled].')126 @classmethod127 def resource_setup(cls):128 super(ImagesMetadataRbacTest, cls).resource_setup()129 params = {'name': data_utils.rand_name(cls.__name__ + '-image')}130 if CONF.image_feature_enabled.api_v1:131 params = {'headers': common_image.image_meta_to_headers(**params)}132 cls.image = cls.glance_image_client.create_image(**params)133 cls.addClassResourceCleanup(134 cls.glance_image_client.wait_for_resource_deletion,135 cls.image['id'])136 cls.addClassResourceCleanup(137 cls.glance_image_client.delete_image, cls.image['id'])138 @decorators.idempotent_id('dbe09d4c-e615-48cb-b908-a06a0f410a8e')139 @rbac_rule_validation.action(140 service="glance",141 rules=["get_image"])142 def test_show_image_metadata_item(self):143 self.compute_images_client.set_image_metadata(self.image['id'],144 meta={'foo': 'bar'})145 self.addCleanup(self.compute_images_client.delete_image_metadata_item,146 self.image['id'], key='foo')147 with self.override_role():148 self.compute_images_client.show_image_metadata_item(149 self.image['id'], key='foo')150 @decorators.idempotent_id('59f66079-d564-47e8-81b0-03c2e84d339e')151 @rbac_rule_validation.action(152 service="glance",153 rules=["get_image"])154 def test_list_image_metadata(self):155 with self.override_role():156 self.compute_images_client.list_image_metadata(self.image['id'])157 @decorators.idempotent_id('575604aa-909f-4b1b-a5a5-cfae1f63044b')158 @rbac_rule_validation.action(159 service="glance",160 rules=["modify_image"])161 def test_create_image_metadata(self):162 with self.override_role():163 # NOTE(felipemonteiro): Although the name of the client function164 # appears wrong, it's actually correct: update_image_metadata does165 # an http post.166 self.compute_images_client.update_image_metadata(167 self.image['id'], meta={'foo': 'bar'})168 self.addCleanup(self.compute_images_client.delete_image_metadata_item,169 self.image['id'], key='foo')170 @decorators.idempotent_id('fb8c4eb6-00e5-454c-b8bc-0e801ec369f1')171 @rbac_rule_validation.action(172 service="glance",173 rules=["modify_image"])174 def test_update_image_metadata(self):175 with self.override_role():176 self.compute_images_client.set_image_metadata(self.image['id'],177 meta={'foo': 'bar'})178 self.addCleanup(self.compute_images_client.delete_image_metadata_item,179 self.image['id'], key='foo')180 @decorators.idempotent_id('9c7c2036-af9b-49a8-8ba1-09b027ee5def')181 @rbac_rule_validation.action(182 service="glance",183 rules=["modify_image"])184 def test_update_image_metadata_item(self):185 with self.override_role():186 self.compute_images_client.set_image_metadata_item(187 self.image['id'], meta={'foo': 'bar'}, key='foo')188 self.addCleanup(self.compute_images_client.delete_image_metadata_item,189 self.image['id'], key='foo')190 @decorators.idempotent_id('5f0dc4e6-0761-4613-9bde-0a6acdc78f46')191 @rbac_rule_validation.action(192 service="glance",193 rules=["modify_image"])194 def test_delete_image_metadata_item(self):195 self.compute_images_client.set_image_metadata(self.image['id'],196 meta={'foo': 'bar'})197 self.addCleanup(test_utils.call_and_ignore_notfound_exc,198 self.compute_images_client.delete_image_metadata_item,199 self.image['id'], key='foo')200 with self.override_role():201 self.compute_images_client.delete_image_metadata_item(202 self.image['id'], key='foo')203class ImageSizeRbacTest(rbac_base.BaseV2ComputeRbacTest):204 """Tests the ``image_size`` compute policies.205 NOTE(felipemonteiro): If Patrole is enhanced to test multiple policies206 simultaneously, these policy actions can be combined with the related207 tests from ``ImagesRbacTest`` above.208 """209 # These tests will fail with a 404 starting from microversion 2.36.210 # See the following link for details:211 # https://docs.openstack.org/api-ref/compute/#images-deprecated212 max_microversion = '2.35'213 @classmethod214 def skip_checks(cls):215 super(ImageSizeRbacTest, cls).skip_checks()216 if not CONF.service_available.glance:217 skip_msg = ("%s skipped as glance is not available" % cls.__name__)218 raise cls.skipException(skip_msg)219 @classmethod220 def setup_clients(cls):221 super(ImageSizeRbacTest, cls).setup_clients()222 if CONF.image_feature_enabled.api_v2:223 cls.glance_image_client = cls.os_primary.image_client_v2224 elif CONF.image_feature_enabled.api_v1:225 cls.glance_image_client = cls.os_primary.image_client226 else:227 raise lib_exc.InvalidConfiguration(228 'Either api_v1 or api_v2 must be True in '229 '[image-feature-enabled].')230 @classmethod231 def resource_setup(cls):232 super(ImageSizeRbacTest, cls).resource_setup()233 params = {'name': data_utils.rand_name(cls.__name__ + '-image')}234 if CONF.image_feature_enabled.api_v1:235 params = {'headers': common_image.image_meta_to_headers(**params)}236 cls.image = cls.glance_image_client.create_image(**params)237 cls.addClassResourceCleanup(238 cls.glance_image_client.wait_for_resource_deletion,239 cls.image['id'])240 cls.addClassResourceCleanup(241 cls.glance_image_client.delete_image, cls.image['id'])242 @testtools.skipIf(CONF.policy_feature_enabled.removed_nova_policies_stein,243 "This API extension policy was removed in Stein")244 @decorators.idempotent_id('fe34d2a6-5743-45bf-8f92-a1d703d7c7ab')245 @rbac_rule_validation.action(246 service="nova",247 rules=["os_compute_api:image-size"])248 def test_show_image_includes_image_size(self):249 with self.override_role():...
test_image.py
Source:test_image.py
...32 'status': 'queued',33 'name': 'New Http Image'34 }35 self.assertEqual(expected, observed)36 def test_image_meta_to_headers(self):37 observed = image.image_meta_to_headers(38 name='test',39 container_format='wrong',40 disk_format='vhd',41 copy_from='http://localhost/images/10',42 properties={'foo': 'bar'},43 api={'abc': 'def'},44 purge_props=True)45 expected = {46 'x-image-meta-name': 'test',47 'x-image-meta-container_format': 'wrong',48 'x-image-meta-disk_format': 'vhd',49 'x-glance-api-copy-from': 'http://localhost/images/10',50 'x-image-meta-property-foo': 'bar',51 'x-glance-api-property-abc': 'def',...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!