Added router set/clear gateway test.
Change-Id: Ia6369b43a0fa9e9b9c42b1b93c8455e87563c06d
This commit is contained in:
parent
fd28028f69
commit
38a97f1a91
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from selenium.common import exceptions
|
||||
|
||||
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
|
||||
|
@ -19,6 +21,8 @@ class RoutersTable(tables.TableRegion):
|
|||
name = "routers"
|
||||
CREATE_ROUTER_FORM_FIELDS = ("name", "admin_state_up",
|
||||
"external_network")
|
||||
SET_GATEWAY_FORM_FIELDS = ("network_id", "router_name",
|
||||
"router_id")
|
||||
|
||||
@tables.bind_table_action('create')
|
||||
def create_router(self, create_button):
|
||||
|
@ -31,6 +35,17 @@ class RoutersTable(tables.TableRegion):
|
|||
delete_button.click()
|
||||
return forms.BaseFormRegion(self.driver, self.conf)
|
||||
|
||||
@tables.bind_row_action('cleargateway')
|
||||
def clear_gateway(self, clear_gateway_button, row):
|
||||
clear_gateway_button.click()
|
||||
return forms.BaseFormRegion(self.driver, self.conf)
|
||||
|
||||
@tables.bind_row_action('setgateway')
|
||||
def set_gateway(self, set_gateway_button, row):
|
||||
set_gateway_button.click()
|
||||
return forms.FormRegion(self.driver, self.conf,
|
||||
field_mappings=self.SET_GATEWAY_FORM_FIELDS)
|
||||
|
||||
|
||||
class RoutersPage(basepage.BaseNavigationPage):
|
||||
|
||||
|
@ -38,6 +53,7 @@ class RoutersPage(basepage.BaseNavigationPage):
|
|||
DEFAULT_EXTERNAL_NETWORK = 'public'
|
||||
ROUTERS_TABLE_NAME_COLUMN = 'name'
|
||||
ROUTERS_TABLE_STATUS_COLUMN = 'status'
|
||||
ROUTERS_TABLE_NETWORK_COLUMN = 'ext_net'
|
||||
|
||||
def __init__(self, driver, conf):
|
||||
super(RoutersPage, self).__init__(driver, conf)
|
||||
|
@ -59,6 +75,19 @@ class RoutersPage(basepage.BaseNavigationPage):
|
|||
create_router_form.external_network.text = external_network
|
||||
create_router_form.submit()
|
||||
|
||||
def set_gateway(self, router_id,
|
||||
network_name=DEFAULT_EXTERNAL_NETWORK):
|
||||
row = self._get_row_with_router_name(router_id)
|
||||
|
||||
set_gateway_form = self.routers_table.set_gateway(row)
|
||||
set_gateway_form.network_id.text = network_name
|
||||
set_gateway_form.submit()
|
||||
|
||||
def clear_gateway(self, name):
|
||||
row = self._get_row_with_router_name(name)
|
||||
confirm_clear_gateway_form = self.routers_table.clear_gateway(row)
|
||||
confirm_clear_gateway_form.submit()
|
||||
|
||||
def delete_router(self, name):
|
||||
row = self._get_row_with_router_name(name)
|
||||
row.mark()
|
||||
|
@ -70,5 +99,33 @@ class RoutersPage(basepage.BaseNavigationPage):
|
|||
|
||||
def is_router_active(self, name):
|
||||
row = self._get_row_with_router_name(name)
|
||||
return self.routers_table.is_cell_status(
|
||||
lambda: row.cells[self.ROUTERS_TABLE_STATUS_COLUMN], 'Active')
|
||||
|
||||
def cell_getter():
|
||||
return row.cells[self.ROUTERS_TABLE_STATUS_COLUMN]
|
||||
try:
|
||||
self._wait_till_text_present_in_element(cell_getter, 'Active')
|
||||
except exceptions.TimeoutException:
|
||||
return False
|
||||
return True
|
||||
|
||||
def is_gateway_cleared(self, name):
|
||||
row = self._get_row_with_router_name(name)
|
||||
|
||||
def cell_getter():
|
||||
return row.cells[self.ROUTERS_TABLE_NETWORK_COLUMN]
|
||||
try:
|
||||
self._wait_till_text_present_in_element(cell_getter, '-')
|
||||
except exceptions.TimeoutException:
|
||||
return False
|
||||
return True
|
||||
|
||||
def is_gateway_set(self, name, network_name=DEFAULT_EXTERNAL_NETWORK):
|
||||
row = self._get_row_with_router_name(name)
|
||||
|
||||
def cell_getter():
|
||||
return row.cells[self.ROUTERS_TABLE_NETWORK_COLUMN]
|
||||
try:
|
||||
self._wait_till_text_present_in_element(cell_getter, network_name)
|
||||
except exceptions.TimeoutException:
|
||||
return False
|
||||
return True
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
# 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 openstack_dashboard.test.integration_tests import decorators
|
||||
from openstack_dashboard.test.integration_tests import helpers
|
||||
from openstack_dashboard.test.integration_tests.regions import messages
|
||||
|
||||
|
||||
class TestRouters(helpers.TestCase):
|
||||
ROUTER_NAME = helpers.gen_random_resource_name("router")
|
||||
|
||||
@decorators.services_required("neutron")
|
||||
def test_router_create(self):
|
||||
"""This test case checks create, clear/set gateway,
|
||||
delete router functionality
|
||||
executed by non-admin user::
|
||||
Steps:
|
||||
1. Login to Horizon Dashboard as horizon user
|
||||
2. Navigate to Project -> Network -> Routers page
|
||||
3. Create new router
|
||||
4. Check that the router appears in the routers table as active
|
||||
5. Check that no Error messages present
|
||||
6. Clear the gateway
|
||||
7. Check that the router is still in the routers table
|
||||
with no external network
|
||||
8. Check that no Error messages present
|
||||
9. Set the gateway to 'public' network
|
||||
10. Check that no Error messages present
|
||||
11. Check that router's external network is set to 'public'
|
||||
12. Delete the router
|
||||
13. Check that the router is absent in the routers table
|
||||
14. Check that no Error messages present
|
||||
"""
|
||||
|
||||
routers_page = self.home_pg.go_to_network_routerspage()
|
||||
|
||||
routers_page.create_router(self.ROUTER_NAME)
|
||||
self.assertTrue(
|
||||
routers_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(routers_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertTrue(routers_page.is_router_present(self.ROUTER_NAME))
|
||||
self.assertTrue(routers_page.is_router_active(self.ROUTER_NAME))
|
||||
|
||||
routers_page.clear_gateway(self.ROUTER_NAME)
|
||||
self.assertTrue(
|
||||
routers_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(routers_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertTrue(routers_page.is_gateway_cleared(self.ROUTER_NAME))
|
||||
|
||||
routers_page.set_gateway(self.ROUTER_NAME)
|
||||
self.assertTrue(
|
||||
routers_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(routers_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertTrue(routers_page.is_gateway_set(self.ROUTER_NAME))
|
||||
|
||||
routers_page.delete_router(self.ROUTER_NAME)
|
||||
self.assertTrue(
|
||||
routers_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(routers_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertFalse(routers_page.is_router_present(self.ROUTER_NAME))
|
Loading…
Reference in New Issue