Replace noop tests with registration test
Previously the python tests are just some stub code, replace them with some real tests. Change-Id: Iff9006544a361fc2bd0ad562be36efe895ed0d71
This commit is contained in:
parent
dde6dfb2eb
commit
29487dd38e
|
@ -1,23 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# Copyright 2010-2011 OpenStack Foundation
|
|
||||||
# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
|
|
||||||
#
|
|
||||||
# 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 oslotest import base
|
|
||||||
|
|
||||||
|
|
||||||
class TestCase(base.BaseTestCase):
|
|
||||||
|
|
||||||
"""Test case base class for all unit tests."""
|
|
|
@ -1,78 +0,0 @@
|
||||||
#
|
|
||||||
# Configuration filed based on Tempest's tempest.conf.sample
|
|
||||||
#
|
|
||||||
|
|
||||||
[dashboard]
|
|
||||||
# Where the dashboard can be found (string value)
|
|
||||||
dashboard_url=http://localhost/dashboard/
|
|
||||||
|
|
||||||
# Login page for the dashboard (string value)
|
|
||||||
login_url=http://localhost/dashboard/auth/login/
|
|
||||||
|
|
||||||
# Dashboard help page url (string value)
|
|
||||||
help_url=http://docs.openstack.org/
|
|
||||||
|
|
||||||
[selenium]
|
|
||||||
# Timeout in seconds to wait for a page to become available
|
|
||||||
# (integer value)
|
|
||||||
page_timeout=30
|
|
||||||
|
|
||||||
# Output directory for screenshots.
|
|
||||||
# (string value)
|
|
||||||
screenshots_directory=integration_tests_screenshots
|
|
||||||
|
|
||||||
# Implicit timeout to wait until element become available,
|
|
||||||
# this timeout is used for every find_element, find_elements call.
|
|
||||||
# (integer value)
|
|
||||||
implicit_wait=10
|
|
||||||
|
|
||||||
# Explicit timeout is used for long lasting operations,
|
|
||||||
# methods using explicit timeout are usually prefixed with 'wait',
|
|
||||||
# those methods ignore implicit_wait when looking up web elements.
|
|
||||||
# (integer value)
|
|
||||||
explicit_wait=300
|
|
||||||
|
|
||||||
[image]
|
|
||||||
# http accessible image (string value)
|
|
||||||
http_image=http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz
|
|
||||||
|
|
||||||
[identity]
|
|
||||||
# Username to use for non-admin API requests. (string value)
|
|
||||||
username=demo
|
|
||||||
|
|
||||||
# API key to use when authenticating. (string value)
|
|
||||||
password=secretadmin
|
|
||||||
|
|
||||||
# Administrative Username to use for admin API requests.
|
|
||||||
# (string value)
|
|
||||||
admin_username=admin
|
|
||||||
|
|
||||||
# API key to use when authenticating as admin. (string value)
|
|
||||||
admin_password=secretadmin
|
|
||||||
|
|
||||||
[scenario]
|
|
||||||
# ssh username for image file (string value)
|
|
||||||
ssh_user=cirros
|
|
||||||
|
|
||||||
[launch_instances]
|
|
||||||
#available zone to launch instances
|
|
||||||
available_zone=nova
|
|
||||||
#image_name to launch instances
|
|
||||||
image_name=cirros-0.3.4-x86_64-uec (24.0 MB)
|
|
||||||
|
|
||||||
[plugin]
|
|
||||||
|
|
||||||
is_plugin=True
|
|
||||||
plugin_page_path=neutron_lbaas_dashboard.tests.integration_tests.pages
|
|
||||||
plugin_page_structure={
|
|
||||||
"Project":
|
|
||||||
{
|
|
||||||
"Network":
|
|
||||||
{
|
|
||||||
"-":
|
|
||||||
[
|
|
||||||
"Load Balancers"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
# 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 helpers
|
|
||||||
|
|
||||||
|
|
||||||
class TestLoadbalancers(helpers.TestCase):
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(TestLoadbalancers, self).setUp()
|
|
||||||
self.home_pg.go_to_network_loadbalancerspage()
|
|
||||||
|
|
||||||
def test_loadbalancers(self):
|
|
||||||
self._save_screenshot(None)
|
|
||||||
# TODO(MRV): Place holder for tests
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
super(TestLoadbalancers, self).tearDown()
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Copyright 2018 Walmart.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
@ -11,178 +12,28 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import importlib
|
# Default to Horizons test settings to avoid any missing keys
|
||||||
import os
|
|
||||||
import six
|
|
||||||
|
|
||||||
from horizon.test.settings import * # noqa
|
from horizon.test.settings import * # noqa
|
||||||
from horizon.utils import secret_key
|
from openstack_dashboard.test.settings import * # noqa
|
||||||
from openstack_dashboard import exceptions
|
|
||||||
|
|
||||||
|
# pop these keys to avoid log warnings about deprecation
|
||||||
|
# update_dashboards will populate them anyway
|
||||||
|
HORIZON_CONFIG.pop('dashboards', None)
|
||||||
|
HORIZON_CONFIG.pop('default_dashboard', None)
|
||||||
|
|
||||||
DEBUG = True
|
# Update the dashboards with octavia_dashboard
|
||||||
TEMPLATE_DEBUG = DEBUG
|
import neutron_lbaas_dashboard.enabled
|
||||||
|
import openstack_dashboard.enabled
|
||||||
TEST_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
||||||
ROOT_PATH = os.path.abspath(os.path.join(TEST_DIR, ".."))
|
|
||||||
|
|
||||||
MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media'))
|
|
||||||
MEDIA_URL = '/media/'
|
|
||||||
STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static'))
|
|
||||||
STATIC_URL = '/static/'
|
|
||||||
|
|
||||||
SECRET_KEY = secret_key.generate_or_read_from_file(
|
|
||||||
os.path.join(TEST_DIR, '.secret_key_store'))
|
|
||||||
ROOT_URLCONF = 'neutron_lbaas_dashboard.tests.urls'
|
|
||||||
TEMPLATE_DIRS = (
|
|
||||||
os.path.join(TEST_DIR, 'templates'),
|
|
||||||
)
|
|
||||||
|
|
||||||
TEMPLATE_CONTEXT_PROCESSORS += (
|
|
||||||
'openstack_dashboard.context_processors.openstack',
|
|
||||||
)
|
|
||||||
|
|
||||||
INSTALLED_APPS = (
|
|
||||||
'django.contrib.contenttypes',
|
|
||||||
'django.contrib.auth',
|
|
||||||
'django.contrib.sessions',
|
|
||||||
'django.contrib.staticfiles',
|
|
||||||
'django.contrib.messages',
|
|
||||||
'django.contrib.humanize',
|
|
||||||
'django_nose',
|
|
||||||
'openstack_auth',
|
|
||||||
'compressor',
|
|
||||||
'horizon',
|
|
||||||
'openstack_dashboard',
|
|
||||||
'openstack_dashboard.dashboards',
|
|
||||||
)
|
|
||||||
|
|
||||||
AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',)
|
|
||||||
|
|
||||||
SITE_BRANDING = 'OpenStack'
|
|
||||||
|
|
||||||
HORIZON_CONFIG = {
|
|
||||||
"password_validator": {
|
|
||||||
"regex": '^.{8,18}$',
|
|
||||||
"help_text": "Password must be between 8 and 18 characters."
|
|
||||||
},
|
|
||||||
'user_home': None,
|
|
||||||
'help_url': "http://docs.openstack.org",
|
|
||||||
'exceptions': {'recoverable': exceptions.RECOVERABLE,
|
|
||||||
'not_found': exceptions.NOT_FOUND,
|
|
||||||
'unauthorized': exceptions.UNAUTHORIZED},
|
|
||||||
'angular_modules': [],
|
|
||||||
'js_files': [],
|
|
||||||
}
|
|
||||||
|
|
||||||
# Load the pluggable dashboard settings
|
|
||||||
from openstack_dashboard.utils import settings
|
from openstack_dashboard.utils import settings
|
||||||
dashboard_module_names = [
|
|
||||||
'openstack_dashboard.enabled',
|
|
||||||
'openstack_dashboard.local.enabled',
|
|
||||||
'neutron_lbaas_dashboard.enabled',
|
|
||||||
]
|
|
||||||
dashboard_modules = []
|
|
||||||
# All dashboards must be enabled for the namespace to get registered, which is
|
|
||||||
# needed by the unit tests.
|
|
||||||
for module_name in dashboard_module_names:
|
|
||||||
module = importlib.import_module(module_name)
|
|
||||||
dashboard_modules.append(module)
|
|
||||||
for submodule in six.itervalues(settings.import_submodules(module)):
|
|
||||||
if getattr(submodule, 'DISABLED', None):
|
|
||||||
delattr(submodule, 'DISABLED')
|
|
||||||
INSTALLED_APPS = list(INSTALLED_APPS) # Make sure it's mutable
|
|
||||||
settings.update_dashboards(dashboard_modules, HORIZON_CONFIG, INSTALLED_APPS)
|
|
||||||
|
|
||||||
|
settings.update_dashboards(
|
||||||
|
[
|
||||||
|
neutron_lbaas_dashboard.enabled,
|
||||||
|
openstack_dashboard.enabled,
|
||||||
|
],
|
||||||
|
HORIZON_CONFIG,
|
||||||
|
INSTALLED_APPS
|
||||||
|
)
|
||||||
|
|
||||||
# Set to True to allow users to upload images to glance via Horizon server.
|
# Ensure any duplicate apps are removed after the update_dashboards call
|
||||||
# When enabled, a file form field will appear on the create image form.
|
INSTALLED_APPS = list(set(INSTALLED_APPS))
|
||||||
# See documentation for deployment considerations.
|
|
||||||
HORIZON_IMAGES_ALLOW_UPLOAD = True
|
|
||||||
|
|
||||||
AVAILABLE_REGIONS = [
|
|
||||||
('http://localhost/identity', 'local'),
|
|
||||||
('http://remote/identity', 'remote'),
|
|
||||||
]
|
|
||||||
|
|
||||||
OPENSTACK_API_VERSIONS = {
|
|
||||||
"identity": 3
|
|
||||||
}
|
|
||||||
|
|
||||||
OPENSTACK_KEYSTONE_URL = "http://localhost/identity"
|
|
||||||
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_"
|
|
||||||
|
|
||||||
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
|
|
||||||
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'test_domain'
|
|
||||||
|
|
||||||
OPENSTACK_KEYSTONE_BACKEND = {
|
|
||||||
'name': 'native',
|
|
||||||
'can_edit_user': True,
|
|
||||||
'can_edit_group': True,
|
|
||||||
'can_edit_project': True,
|
|
||||||
'can_edit_domain': True,
|
|
||||||
'can_edit_role': True
|
|
||||||
}
|
|
||||||
|
|
||||||
OPENSTACK_CINDER_FEATURES = {
|
|
||||||
'enable_backup': True,
|
|
||||||
}
|
|
||||||
|
|
||||||
OPENSTACK_NEUTRON_NETWORK = {
|
|
||||||
'enable_lb': False,
|
|
||||||
'enable_firewall': False,
|
|
||||||
'enable_vpn': False
|
|
||||||
}
|
|
||||||
|
|
||||||
OPENSTACK_HYPERVISOR_FEATURES = {
|
|
||||||
'can_set_mount_point': True,
|
|
||||||
|
|
||||||
# NOTE: as of Grizzly this is not yet supported in Nova so enabling this
|
|
||||||
# setting will not do anything useful
|
|
||||||
'can_encrypt_volumes': False
|
|
||||||
}
|
|
||||||
|
|
||||||
LOGGING['loggers']['openstack_dashboard'] = {
|
|
||||||
'handlers': ['test'],
|
|
||||||
'propagate': False,
|
|
||||||
}
|
|
||||||
|
|
||||||
LOGGING['loggers']['selenium'] = {
|
|
||||||
'handlers': ['test'],
|
|
||||||
'propagate': False,
|
|
||||||
}
|
|
||||||
|
|
||||||
LOGGING['loggers']['neutron_lbaas_dashboard'] = {
|
|
||||||
'handlers': ['test'],
|
|
||||||
'propagate': False,
|
|
||||||
}
|
|
||||||
|
|
||||||
SECURITY_GROUP_RULES = {
|
|
||||||
'all_tcp': {
|
|
||||||
'name': 'ALL TCP',
|
|
||||||
'ip_protocol': 'tcp',
|
|
||||||
'from_port': '1',
|
|
||||||
'to_port': '65535',
|
|
||||||
},
|
|
||||||
'http': {
|
|
||||||
'name': 'HTTP',
|
|
||||||
'ip_protocol': 'tcp',
|
|
||||||
'from_port': '80',
|
|
||||||
'to_port': '80',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
NOSE_ARGS = ['--nocapture',
|
|
||||||
'--nologcapture',
|
|
||||||
'--cover-package=openstack_dashboard',
|
|
||||||
'--cover-inclusive',
|
|
||||||
'--all-modules']
|
|
||||||
|
|
||||||
POLICY_FILES_PATH = os.path.join(ROOT_PATH, "conf")
|
|
||||||
POLICY_FILES = {
|
|
||||||
'identity': 'keystone_policy.json',
|
|
||||||
'compute': 'nova_policy.json'
|
|
||||||
}
|
|
||||||
|
|
||||||
# The openstack_auth.user.Token object isn't JSON-serializable ATM
|
|
||||||
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
"""
|
|
||||||
test_neutron_lbaas_dashboard
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
Tests for `neutron_lbaas_dashboard` module.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from neutron_lbaas_dashboard.tests import base
|
|
||||||
|
|
||||||
|
|
||||||
class TestNeutron_lbaas_dashboard(base.TestCase):
|
|
||||||
|
|
||||||
def test_something(self):
|
|
||||||
pass
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Copyright 2018 Walmart.
|
||||||
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
# a copy of the License at
|
# a copy of the License at
|
||||||
|
@ -10,13 +12,15 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from openstack_dashboard.test.integration_tests.pages import basepage
|
import horizon
|
||||||
|
from neutron_lbaas_dashboard.dashboards.project.ngloadbalancersv2 \
|
||||||
|
import panel as n_panel
|
||||||
|
from openstack_dashboard.test import helpers as test
|
||||||
|
|
||||||
|
|
||||||
class LoadbalancersPage(basepage.BaseNavigationPage):
|
class RegistrationTests(test.TestCase):
|
||||||
|
def test_registered(self):
|
||||||
|
dashboard = horizon.get_dashboard('project')
|
||||||
|
panel = dashboard.get_panel('ngloadbalancersv2')
|
||||||
|
|
||||||
TABLE_IMAGE_COLUMN = 'name'
|
self.assertEqual(panel.__class__, n_panel.NGLoadBalancers)
|
||||||
|
|
||||||
def __init__(self, driver, conf):
|
|
||||||
super(LoadbalancersPage, self).__init__(driver, conf)
|
|
||||||
self._page_title = "Load Balancers"
|
|
|
@ -11,9 +11,10 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from django.conf import urls
|
from django.conf.urls import include
|
||||||
from openstack_dashboard import urls as dashboard_urls
|
from django.conf.urls import url
|
||||||
|
import openstack_dashboard.urls
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
urls.url(r'', urls.include(dashboard_urls))
|
url(r'', include(openstack_dashboard.urls))
|
||||||
]
|
]
|
||||||
|
|
3
tox.ini
3
tox.ini
|
@ -14,12 +14,13 @@ setenv =
|
||||||
NOSE_OPENSTACK_YELLOW=0.025
|
NOSE_OPENSTACK_YELLOW=0.025
|
||||||
NOSE_OPENSTACK_SHOW_ELAPSED=1
|
NOSE_OPENSTACK_SHOW_ELAPSED=1
|
||||||
CLIENT_NAME=neutron-lbaas-dashboard
|
CLIENT_NAME=neutron-lbaas-dashboard
|
||||||
|
DJANGO_SETTINGS_MODULE=neutron_lbaas_dashboard.tests.settings
|
||||||
deps = -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
|
deps = -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
-r{toxinidir}/test-requirements.txt
|
||||||
whitelist_externals = npm
|
whitelist_externals = npm
|
||||||
bash
|
bash
|
||||||
commands = python manage.py test
|
commands = python manage.py test neutron_lbaas_dashboard --settings=neutron_lbaas_dashboard.tests.settings
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
commands = flake8
|
commands = flake8
|
||||||
|
|
Loading…
Reference in New Issue