
This way we can run the tests in any order. Change-Id: Ifdc89b650540cc632f7c6ec2005a429b89a5b9f0
122 lines
4.0 KiB
Python
122 lines
4.0 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.
|
|
|
|
from unittest import mock
|
|
import warnings
|
|
|
|
from django.test import testcases
|
|
import pytest
|
|
import requests
|
|
|
|
from keystoneauth1.identity import v3 as v3_auth
|
|
from keystoneclient.v3 import client as client_v3
|
|
import openstack_auth
|
|
from openstack_auth.tests import data_v3
|
|
from openstack_auth import utils as auth_utils
|
|
from openstack_dashboard import api
|
|
from openstack_dashboard.test.test_data import utils as test_utils
|
|
|
|
|
|
@pytest.fixture(autouse=True, scope='session')
|
|
def no_warnings():
|
|
warnings.simplefilter("ignore")
|
|
yield
|
|
warnings.simplefilter("default")
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def settings_debug(settings):
|
|
settings.DEBUG = True
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
def auth_data():
|
|
return data_v3.generate_test_data()
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
def dashboard_data():
|
|
return test_utils.load_test_data()
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def disable_requests(monkeypatch):
|
|
class MockRequestsSession:
|
|
adapters = []
|
|
|
|
def request(self, *args, **kwargs):
|
|
raise RuntimeError("External request attempted, missed a mock?")
|
|
|
|
monkeypatch.setattr(requests, 'Session', MockRequestsSession)
|
|
# enable request logging
|
|
monkeypatch.setattr(testcases, 'QuietWSGIRequestHandler',
|
|
testcases.WSGIRequestHandler)
|
|
|
|
|
|
# prevent pytest-django errors due to no database
|
|
@pytest.fixture()
|
|
def _django_db_helper():
|
|
pass
|
|
|
|
|
|
@pytest.fixture()
|
|
def mock_openstack_auth(settings, auth_data):
|
|
with mock.patch.object(client_v3, 'Client') as mock_client, \
|
|
mock.patch.object(v3_auth, 'Token') as mock_token, \
|
|
mock.patch.object(v3_auth, 'Password') as mock_password:
|
|
|
|
keystone_url = settings.OPENSTACK_KEYSTONE_URL
|
|
auth_password = mock.Mock(auth_url=keystone_url)
|
|
mock_password.return_value = auth_password
|
|
auth_password.get_access.return_value = auth_data.unscoped_access_info
|
|
auth_token_unscoped = mock.Mock(auth_url=keystone_url)
|
|
auth_token_scoped = mock.Mock(auth_url=keystone_url)
|
|
mock_token.return_value = auth_token_scoped
|
|
auth_token_unscoped.get_access.return_value = (
|
|
auth_data.federated_unscoped_access_info
|
|
)
|
|
auth_token_scoped.get_access.return_value = (
|
|
auth_data.unscoped_access_info
|
|
)
|
|
client_unscoped = mock.Mock()
|
|
mock_client.return_value = client_unscoped
|
|
projects = [auth_data.project_one, auth_data.project_two]
|
|
client_unscoped.projects.list.return_value = projects
|
|
yield
|
|
|
|
|
|
@pytest.fixture()
|
|
def mock_keystoneclient():
|
|
with mock.patch.object(api.keystone, 'keystoneclient') as mock_client:
|
|
keystoneclient = mock_client.return_value
|
|
endpoint_data = mock.Mock()
|
|
endpoint_data.api_version = (3, 10)
|
|
keystoneclient.session.get_endpoint_data.return_value = endpoint_data
|
|
yield
|
|
|
|
|
|
@pytest.fixture()
|
|
def user(monkeypatch, dashboard_data, mock_keystoneclient):
|
|
def get_user(request):
|
|
new_user = openstack_auth.user.User(
|
|
id=dashboard_data.user.id,
|
|
token=dashboard_data.token,
|
|
user=dashboard_data.user.name,
|
|
domain_id=dashboard_data.domain.id,
|
|
tenant_id=dashboard_data.tenant.id,
|
|
service_catalog=dashboard_data.service_catalog,
|
|
authorized_tenants=dashboard_data.tenants.list(),
|
|
)
|
|
new_user._is_system_user = False
|
|
return new_user
|
|
monkeypatch.setattr(auth_utils, 'get_user', get_user)
|