Added router set/clear gateway test.

Change-Id: Ia6369b43a0fa9e9b9c42b1b93c8455e87563c06d
This commit is contained in:
Elena S 2016-01-13 00:20:14 -08:00
parent fd28028f69
commit 38a97f1a91
2 changed files with 128 additions and 2 deletions

View File

@ -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

View File

@ -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))