Merge "Add test for sharing Murano App without permission."

This commit is contained in:
Jenkins 2016-02-26 14:13:40 +00:00 committed by Gerrit Code Review
commit 35bfb299d1
2 changed files with 99 additions and 3 deletions

View File

@ -110,6 +110,22 @@ class UITestCase(BaseDeps):
'Environment {0} was not deleted in {1} seconds'.format(
environment_id, timeout))
def create_user(self, name, password=None, email=None, tenant_id=None):
if tenant_id is None:
tenant_id = self.keystone_client.tenant_id
self.keystone_client.users.create(name, password=password, email=email,
tenant_id=tenant_id, enabled=True)
def delete_user(self, name):
self.keystone_client.users.find(name=name).delete()
def get_tenantid_by_name(self, name):
"""Returns TenantID of the project by project's name"""
tenant_id = [tenant.id for tenant
in self.keystone_client.tenants.list()
if tenant.name == name]
return tenant_id[-1]
def create_project(self, name):
project = self.keystone_client.tenants.create(
tenant_name=name, description="For Test Purposes", enabled=True)
@ -153,14 +169,23 @@ class UITestCase(BaseDeps):
filename = os.path.join(screenshot_dir, name + '.png')
self.driver.get_screenshot_as_file(filename)
def log_in(self):
self.fill_field(by.By.ID, 'id_username', cfg.common.user)
self.fill_field(by.By.ID, 'id_password', cfg.common.password)
def log_in(self, username=None, password=None):
username = username or cfg.common.user
password = password or cfg.common.password
self.fill_field(by.By.ID, 'id_username', username)
self.fill_field(by.By.ID, 'id_password', password)
self.driver.find_element_by_xpath("//button[@type='submit']").click()
murano = self.driver.find_element_by_xpath(consts.Murano)
if 'collapsed' in murano.get_attribute('class'):
murano.click()
def log_out(self):
user_menu = self.driver.find_element(
by.By.XPATH, "//ul[contains(@class, 'navbar-right')]")
user_menu.find_element(
by.By.XPATH, ".//span[@class='user-name']").click()
user_menu.find_element(by.By.LINK_TEXT, 'Sign Out').click()
def fill_field(self, by_find, field, value):
self.driver.find_element(by=by_find, value=field).clear()
self.driver.find_element(by=by_find, value=field).send_keys(value)

View File

@ -1119,6 +1119,77 @@ class TestSuitePackages(base.PackageTestCase):
self.wait_for_alert_message()
self.check_element_not_on_page(by.By.XPATH, delete_new_category_btn)
def test_sharing_app_without_permission(self):
"""Tests sharing Murano App without permission
Scenario:
1) Login as admin;
2) Identity -> Users: Create User:
User Name: Test_service_user
Primary Project: service
Enabled: Yes
3) Login to Horizon as an 'Test_service_user';
4) Murano -> Manage -> Packages: Import Package
Set public Off, Active On
5) Try to modify created package and set Public = On.
Error: You are not allowed to perform this operation
6) Delete new package
"""
service_prj_name = 'service'
new_user = {'name': 'Test_service_user',
'password': 'somepassword',
'email': 'test_serv_user@email.com'}
try:
self.delete_user(new_user['name'])
except Exception:
pass
# Create new user in 'service' prj
service_prj_id = self.get_tenantid_by_name(service_prj_name)
self.create_user(tenant_id=service_prj_id, **new_user)
# login as 'Test_service_user'
self.log_out()
self.log_in(new_user['name'], new_user['password'])
# Import package
self.navigate_to('Manage')
self.go_to_submenu('Packages')
self.driver.find_element_by_id(c.UploadPackage).click()
el = self.driver.find_element_by_css_selector(
"input[name='upload-package']")
el.send_keys(self.archive)
self.driver.find_element_by_xpath(c.InputSubmit).click()
# Public = OFF; Active = ON.
public_checkbox = self.driver.find_element_by_id('id_modify-is_public')
active_checkbox = self.driver.find_element_by_id('id_modify-enabled')
if public_checkbox.is_selected() is True:
public_checkbox.click()
elif active_checkbox.is_selected() is False:
active_checkbox.click()
self.driver.find_element_by_xpath(c.InputSubmit).click()
self.driver.find_element_by_xpath(c.InputSubmit).click()
self.wait_for_alert_message()
self.check_element_on_page(
by.By.XPATH, c.AppPackages.format(self.archive_name))
# Modify Package to set Public = ON
package = self.driver.find_element_by_xpath(
c.AppPackages.format(self.archive_name))
pkg_id = package.get_attribute("data-object-id")
self.select_action_for_package(pkg_id, 'modify_package')
self.driver.find_element_by_id('id_is_public').click()
self.driver.find_element_by_xpath(c.InputSubmit).click()
# Expecting Error
self.wait_for_error_message()
# Clean up
self.select_action_for_package(pkg_id, 'more')
self.select_action_for_package(pkg_id, 'delete_package')
self.driver.find_element_by_xpath(c.ConfirmDeletion).click()
self.log_out()
self.log_in()
self.delete_user(new_user['name'])
class TestSuiteRepository(base.PackageTestCase):
_apps_to_delete = set()