예제 #1
0
    def setUp(self):
        """Setup each test case before execution."""
        super(TestSetupMiddleware, self).setUp()

        self.middleware = SetupMiddleware()

        self.kwargs = {
            'view_func': HttpResponse,
            'view_args': [],
            'view_kwargs': {},
        }
예제 #2
0
class TestSetupMiddleware(TestCase):
    """Test cases for setup middleware."""
    @classmethod
    def setUpClass(cls):
        """Setup all the test cases."""
        super(TestSetupMiddleware, cls).setUpClass()

        cfg.read()

    def setUp(self):
        """Setup each test case before execution."""
        super(TestSetupMiddleware, self).setUp()

        self.middleware = SetupMiddleware()

        self.kwargs = {
            'view_func': HttpResponse,
            'view_args': [],
            'view_kwargs': {},
        }

    def test_404_urls(self):
        """Test how middleware deals with 404 URLs."""
        request = RequestFactory().get('/plinth/non-existing-url')

        response = self.middleware.process_view(request, **self.kwargs)

        self.assertEqual(response, None)

    def test_url_not_an_application(self):
        """Test that none is returned for URLs that are not applications."""
        request = RequestFactory().get('/plinth/')

        response = self.middleware.process_view(request, **self.kwargs)

        self.assertEqual(response, None)

    @patch('plinth.module_loader.loaded_modules')
    @patch('django.core.urlresolvers.resolve')
    def test_module_is_up_to_date(self, resolve, loaded_modules):
        """Test that none is returned when module is up-to-date."""
        resolve.return_value.namespaces = ['mockapp']
        module = Mock()
        module.setup_helper.is_finished = None
        module.setup_helper.get_state.return_value = 'up-to-date'
        loaded_modules.__getitem__.return_value = module

        request = RequestFactory().get('/plinth/mockapp')

        response = self.middleware.process_view(request, **self.kwargs)

        self.assertEqual(response, None)

    @patch('plinth.views.SetupView')
    @patch('plinth.module_loader.loaded_modules')
    @patch('django.core.urlresolvers.resolve')
    def test_module_view(self, resolve, loaded_modules, setup_view):
        """Test that setup view is returned."""
        resolve.return_value.namespaces = ['mockapp']
        module = Mock()
        module.setup_helper.is_finished = None
        loaded_modules.__getitem__.return_value = module
        view = Mock()
        setup_view.as_view.return_value = view

        request = RequestFactory().get('/plinth/mockapp')
        self.middleware.process_view(request, **self.kwargs)

        setup_view.as_view.assert_called_once_with()
        view.assert_called_once_with(request, setup_helper=module.setup_helper)

    @patch('django.contrib.messages.success')
    @patch('plinth.module_loader.loaded_modules')
    @patch('django.core.urlresolvers.resolve')
    def test_install_result_collection(self, resolve, loaded_modules,
                                       messages_success):
        """Test that module installation result is collected properly."""
        resolve.return_value.namespaces = ['mockapp']
        module = Mock()
        module.setup_helper.is_finished = True
        module.setup_helper.collect_result.return_value = None
        module.setup_helper.get_state.return_value = 'up-to-date'
        loaded_modules.__getitem__.return_value = module

        request = RequestFactory().get('/plinth/mockapp')
        response = self.middleware.process_view(request, **self.kwargs)

        self.assertIsNone(response)
        assert messages_success.called
        module.setup_helper.collect_result.assert_called_once_with()
예제 #3
0
 def fixture_middleware(load_cfg):
     """Fixture for returning middleware."""
     return SetupMiddleware()