eb48bf5e3f
test_create_sec_group_demo test_delete_sec_group_demo test_add_rule_sec_group_demo test_delete_rule_sec_group_demo Change-Id: I71a266cc684bcef44f34c1d70924ee55738e32a2
152 lines
5.7 KiB
Python
152 lines
5.7 KiB
Python
# 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 random
|
|
|
|
from oslo_utils import uuidutils
|
|
import pytest
|
|
|
|
from openstack_dashboard.test.selenium import widgets
|
|
|
|
|
|
@pytest.fixture
|
|
def sec_group_name():
|
|
return 'sec_group_name_%s' % uuidutils.generate_uuid(dashed=False)
|
|
|
|
|
|
@pytest.fixture
|
|
def new_sec_group_demo(sec_group_name, openstack_demo):
|
|
sec_group = openstack_demo.create_security_group(
|
|
name=sec_group_name,
|
|
description=f"Description for {sec_group_name}"
|
|
)
|
|
yield sec_group
|
|
openstack_demo.delete_security_group(sec_group_name)
|
|
|
|
|
|
@pytest.fixture
|
|
def clear_sec_group_demo(sec_group_name, openstack_demo):
|
|
yield None
|
|
openstack_demo.delete_security_group(sec_group_name)
|
|
|
|
|
|
@pytest.fixture
|
|
def new_sec_group_rule_demo(new_sec_group_demo, openstack_demo):
|
|
rule_port = random.randint(9000, 9999)
|
|
sec_group_rule = openstack_demo.network.create_security_group_rule(
|
|
security_group_id=new_sec_group_demo.id,
|
|
direction="ingress",
|
|
port_range_max=rule_port,
|
|
port_range_min=rule_port,
|
|
protocol="tcp"
|
|
)
|
|
yield sec_group_rule
|
|
openstack_demo.network.delete_security_group_rule(sec_group_rule)
|
|
|
|
|
|
def test_create_sec_group_demo(login, driver, config, sec_group_name,
|
|
openstack_demo, clear_sec_group_demo):
|
|
login('user')
|
|
url = '/'.join((
|
|
config.dashboard.dashboard_url,
|
|
'project',
|
|
'security_groups',
|
|
))
|
|
driver.get(url)
|
|
driver.find_element_by_link_text("Create Security Group").click()
|
|
sec_group_form = driver.find_element_by_css_selector(".modal-dialog form")
|
|
sec_group_form.find_element_by_id("id_name").send_keys(sec_group_name)
|
|
sec_group_form.find_element_by_css_selector(".btn-primary").click()
|
|
messages = widgets.get_and_dismiss_messages(driver)
|
|
assert(f'Success: Successfully created security group: {sec_group_name}'
|
|
in messages)
|
|
assert(openstack_demo.network.find_security_group(sec_group_name)
|
|
is not None)
|
|
|
|
|
|
def test_delete_sec_group_demo(login, driver, sec_group_name, openstack_demo,
|
|
new_sec_group_demo, config):
|
|
login('user')
|
|
url = '/'.join((
|
|
config.dashboard.dashboard_url,
|
|
'project',
|
|
'security_groups',
|
|
))
|
|
driver.get(url)
|
|
rows = driver.find_elements_by_css_selector(
|
|
f"table#security_groups tr[data-display='{sec_group_name}']")
|
|
assert len(rows) == 1
|
|
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
|
widgets.select_from_dropdown(actions_column, "Delete Security Group")
|
|
widgets.confirm_modal(driver)
|
|
messages = widgets.get_and_dismiss_messages(driver)
|
|
assert f"Success: Deleted Security Group: {sec_group_name}" in messages
|
|
assert openstack_demo.network.find_security_group(sec_group_name) is None
|
|
|
|
|
|
def test_add_rule_sec_group_demo(login, driver, sec_group_name, openstack_demo,
|
|
new_sec_group_demo, config):
|
|
rule_port = random.randint(9000, 9999)
|
|
login('user')
|
|
url = '/'.join((
|
|
config.dashboard.dashboard_url,
|
|
'project',
|
|
'security_groups',
|
|
new_sec_group_demo.id,
|
|
))
|
|
driver.get(url)
|
|
driver.find_element_by_id("rules__action_add_rule").click()
|
|
rule_form = driver.find_element_by_css_selector(".modal-dialog form")
|
|
rule_form.find_element_by_id("id_port").send_keys(rule_port)
|
|
rule_form.find_element_by_css_selector(".btn-primary").click()
|
|
messages = widgets.get_and_dismiss_messages(driver)
|
|
assert(f"Success: Successfully added rule: ALLOW IPv4 {rule_port}"
|
|
f"/tcp from 0.0.0.0/0" in messages)
|
|
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
|
sec_group_name).security_group_rules
|
|
rule_port_found = False
|
|
for rule_sdk in sec_group_rules_sdk:
|
|
if(rule_sdk['port_range_min'] == rule_port and
|
|
rule_sdk['port_range_max'] == rule_port):
|
|
rule_port_found = True
|
|
assert rule_port_found
|
|
|
|
|
|
def test_delete_rule_sec_group_demo(login, driver, sec_group_name,
|
|
openstack_demo, new_sec_group_demo,
|
|
new_sec_group_rule_demo, config):
|
|
rule_port = new_sec_group_rule_demo.port_range_max
|
|
login('user')
|
|
url = '/'.join((
|
|
config.dashboard.dashboard_url,
|
|
'project',
|
|
'security_groups',
|
|
new_sec_group_demo.id,
|
|
))
|
|
driver.get(url)
|
|
rows = driver.find_elements_by_css_selector(
|
|
f"table#rules tr[data-object-id='{new_sec_group_rule_demo.id}']")
|
|
assert len(rows) == 1
|
|
rows[0].find_element_by_css_selector("td.actions_column").click()
|
|
widgets.confirm_modal(driver)
|
|
messages = widgets.get_and_dismiss_messages(driver)
|
|
assert(f"Success: Deleted Rule: ALLOW IPv4 {rule_port}/tcp from 0.0.0.0/0"
|
|
in messages)
|
|
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
|
sec_group_name).security_group_rules
|
|
rule_port_found = False
|
|
for rule_sdk in sec_group_rules_sdk:
|
|
if (rule_sdk['port_range_min'] == rule_port and
|
|
rule_sdk['port_range_max'] == rule_port):
|
|
rule_port_found = True
|
|
assert not(rule_port_found)
|