Flavors page and basic create flavor test

Added the flavorspage under the admin tab and test_flavor_create
that checks basic flavor creation and deletion.

Partially implements blueprint: selenium-integration-testing
Closes-Bug: #1403397

Change-Id: I9841c34b27d61195c4603109cdb7cc0d7e8633ae
This commit is contained in:
dkorn 2014-12-15 12:05:47 +02:00
parent e3e25a6e8b
commit 504bc18c1b
2 changed files with 120 additions and 0 deletions

View File

@ -0,0 +1,83 @@
# 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 selenium.webdriver.common import by
from openstack_dashboard.test.integration_tests.pages import basepage
from openstack_dashboard.test.integration_tests.regions import forms
from openstack_dashboard.test.integration_tests.regions import tables
class FlavorsPage(basepage.BaseNavigationPage):
DEFAULT_ID = "auto"
FLAVORS_TABLE_NAME_COLUMN_INDEX = 0
_flavors_table_locator = (by.By.CSS_SELECTOR, 'table#flavors')
FLAVORS_TABLE_ACTIONS = ("create_flavor", "delete_flavors")
FLAVORS_TABLE_ROW_ACTIONS = {
tables.ComplexActionRowRegion.PRIMARY_ACTION: "edit_flavor",
tables.ComplexActionRowRegion.SECONDARY_ACTIONS: (
"modify_access", "update_metadata", "delete_flavor")
}
CREATE_FLAVOR_FORM_FIELDS = (("name", "id_", "vcpus", "ram",
"root_disk", "ephemeral_disk",
"swap_disk"),
("all_projects", "selected_projects"))
def __init__(self, driver, conf):
super(FlavorsPage, self).__init__(driver, conf)
self._page_title = "Flavors"
def _get_row_with_flavor_name(self, name):
return self.flavors_table.get_row(
self.FLAVORS_TABLE_NAME_COLUMN_INDEX, name)
@property
def flavors_table(self):
src_elem = self._get_element(*self._flavors_table_locator)
return tables.ComplexActionTableRegion(self.driver,
self.conf, src_elem,
self.FLAVORS_TABLE_ACTIONS,
self.FLAVORS_TABLE_ROW_ACTIONS)
@property
def create_flavor_form(self):
return forms.TabbedFormRegion(self.driver, self.conf, None,
self.CREATE_FLAVOR_FORM_FIELDS)
@property
def confirm_delete_flavors_form(self):
return forms.BaseFormRegion(self.driver, self.conf, None)
def create_flavor(self, name, id_=DEFAULT_ID, vcpus=None, ram=None,
root_disk=None, ephemeral_disk=None, swap_disk=None):
self.flavors_table.create_flavor.click()
self.create_flavor_form.name.text = name
if id_ is not None:
self.create_flavor_form.id_.text = id_
self.create_flavor_form.vcpus.value = vcpus
self.create_flavor_form.ram.value = ram
self.create_flavor_form.root_disk.value = root_disk
self.create_flavor_form.ephemeral_disk.value = ephemeral_disk
self.create_flavor_form.swap_disk.value = swap_disk
self.create_flavor_form.submit.click()
def delete_flavor(self, name):
row = self._get_row_with_flavor_name(name)
row.mark()
self.flavors_table.delete_flavors.click()
self.confirm_delete_flavors_form.submit.click()
def is_flavor_present(self, name):
return bool(self._get_row_with_flavor_name(name))

View File

@ -0,0 +1,37 @@
# 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.
import uuid
from openstack_dashboard.test.integration_tests import helpers
class TestFlavors(helpers.AdminTestCase):
FLAVOR_NAME = 'horizonflavor_' + str(uuid.uuid4())
def test_flavor_create(self):
"""tests the flavor creation and deletion functionalities:
* creates a new flavor
* verifies the flavor appears in the flavors table
* deletes the newly created flavor
* verifies the flavor does not appear in the table after deletion
"""
flavors_page = self.home_pg.go_to_system_flavorspage()
flavors_page.create_flavor(name=self.FLAVOR_NAME, vcpus=1, ram=1024,
root_disk=20, ephemeral_disk=0,
swap_disk=0)
self.assertTrue(flavors_page.is_flavor_present(self.FLAVOR_NAME))
flavors_page.delete_flavor(self.FLAVOR_NAME)
self.assertFalse(flavors_page.is_flavor_present(self.FLAVOR_NAME))