# vim: tabstop=4 shiftwidth=4 softtabstop=4 # # 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 os from django.core.handlers import wsgi from django.utils import unittest from tuskarclient.v1 import client as tuskar_client from openstack_dashboard.test import helpers as openstack_dashboard_helpers from tuskar_ui import api as tuskar_api from tuskar_ui.test.test_data import utils as test_data_utils # Makes output of failing mox tests much easier to read. wsgi.WSGIRequest.__repr__ = lambda self: "" def create_stubs(stubs_to_create={}): return openstack_dashboard_helpers.create_stubs(stubs_to_create) @unittest.skipIf(os.environ.get('SKIP_UNITTESTS', False), "The SKIP_UNITTESTS env variable is set.") class TestCase(openstack_dashboard_helpers.TestCase): """Specialized base test case class for Horizon which gives access to numerous additional features: * A full suite of test data through various attached objects and managers (e.g. ``self.servers``, ``self.user``, etc.). See the docs for :class:`~horizon.tests.test_data.utils.TestData` for more information. * The ``mox`` mocking framework via ``self.mox``. * A set of request context data via ``self.context``. * A ``RequestFactory`` class which supports Django's ``contrib.messages`` framework via ``self.factory``. * A ready-to-go request object via ``self.request``. * The ability to override specific time data controls for easier testing. * Several handy additional assertion methods. """ def setUp(self): super(TestCase, self).setUp() # load tuskar-specific test data test_data_utils.load_test_data(self) class BaseAdminViewTests(openstack_dashboard_helpers.BaseAdminViewTests): """A ``TestCase`` subclass which sets an active user with the "admin" role for testing admin-only views and functionality. """ def setUp(self): super(BaseAdminViewTests, self).setUp() # load tuskar-specific test data test_data_utils.load_test_data(self) class APITestCase(openstack_dashboard_helpers.APITestCase): """The ``APITestCase`` class is for use with tests which deal with the underlying clients rather than stubbing out the openstack_dashboard.api.* methods. """ def setUp(self): super(APITestCase, self).setUp() # load tuskar-specfic test data test_data_utils.load_test_data(self) # Store the original clients self._original_tuskarclient = tuskar_api.tuskarclient # Replace the clients with our stubs. tuskar_api.tuskarclient = lambda request: self.stub_tuskarclient() def tearDown(self): super(APITestCase, self).tearDown() tuskar_api.tuskarclient = self._original_tuskarclient def stub_tuskarclient(self): if not hasattr(self, "tuskarclient"): self.mox.StubOutWithMock(tuskar_client, 'Client') self.tuskarclient = self.mox.CreateMock(tuskar_client.Client) return self.tuskarclient