From 311f98038db994054a1603b7f49f944b49a63a4f Mon Sep 17 00:00:00 2001 From: Wriju Bhattacharya Date: Tue, 1 Aug 2017 16:59:14 -0400 Subject: [PATCH] Added Tempest tests for publicizing a package Added tests for following scenarios: * publicize a non-public package * publicize a package as non-admin user (negative test) Change-Id: I0c2ef75535cdd894ce30d1c1404ce964ec00b248 --- .../application_catalog/test_repository.py | 34 +++++++++++++++++++ .../test_repository_negative.py | 28 +++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/murano_tempest_tests/tests/api/application_catalog/test_repository.py b/murano_tempest_tests/tests/api/application_catalog/test_repository.py index 54ff7f7..a8494f2 100644 --- a/murano_tempest_tests/tests/api/application_catalog/test_repository.py +++ b/murano_tempest_tests/tests/api/application_catalog/test_repository.py @@ -178,6 +178,40 @@ class TestRepository(base.BaseApplicationCatalogIsolatedAdminTest): def test_download_package(self): self.application_catalog_client.download_package(self.package['id']) + @decorators.attr(type='smoke') + @decorators.idempotent_id('9e55ae34-dea4-4db5-be4a-b3b793c9c4a7') + def test_publicize_package(self): + # Given a package that isn't public + application_name = utils.generate_name('test_publicize_package') + abs_archive_path, dir_with_archive, archive_name = \ + utils.prepare_package(application_name) + self.addCleanup(os.remove, abs_archive_path) + package = self.application_catalog_client.upload_package( + application_name, archive_name, dir_with_archive, + {"categories": [], "tags": [], 'is_public': False}) + self.addCleanup(self.application_catalog_client.delete_package, + package['id']) + + fetched_package = self.application_catalog_client.get_package( + package['id']) + self.assertFalse(fetched_package['is_public']) + + # When package is publicized + post_body = [ + { + "op": "replace", + "path": "/is_public", + "value": True + } + ] + self.application_catalog_client.update_package(package['id'], + post_body) + + # Then package becomes public + fetched_package = self.application_catalog_client.get_package( + package['id']) + self.assertTrue(fetched_package['is_public']) + @decorators.idempotent_id('1c017c1b-9efc-4498-95ff-833a9ce565a0') def test_get_ui_definitions(self): self.application_catalog_client.get_ui_definition(self.package['id']) diff --git a/murano_tempest_tests/tests/api/application_catalog/test_repository_negative.py b/murano_tempest_tests/tests/api/application_catalog/test_repository_negative.py index 98d5cdc..12d3af1 100644 --- a/murano_tempest_tests/tests/api/application_catalog/test_repository_negative.py +++ b/murano_tempest_tests/tests/api/application_catalog/test_repository_negative.py @@ -163,3 +163,31 @@ class TestRepositoryNegativeForbidden(base.BaseApplicationCatalogTest): self.assertRaises(exceptions.Forbidden, self.alt_client.get_logo, self.package['id']) + + @decorators.attr(type='negative') + @decorators.idempotent_id('12928ec7-bd31-415d-9260-5c488aebd4c7') + def test_publicize_package_as_non_admin_user(self): + # Given a package that isn't public + application_name = utils.generate_name('test_publicize_package_' + 'as_non_admin_user') + abs_archive_path, dir_with_archive, archive_name = \ + utils.prepare_package(application_name) + self.addCleanup(os.remove, abs_archive_path) + package = self.application_catalog_client.upload_package( + application_name, archive_name, dir_with_archive, + {"categories": [], "tags": [], 'is_public': False}) + self.addCleanup(self.application_catalog_client.delete_package, + package['id']) + + # When package is publicized, then the method throws an exception + post_body = [ + { + "op": "replace", + "path": "/is_public", + "value": True + } + ] + self.assertRaises(exceptions.Forbidden, + self.application_catalog_client.update_package, + package['id'], + post_body)