示例#1
0
    def test_other_exception(self, mock_iter_entry_points):
        with self.assertRaises(tests.TestException):
            utils.import_controller('foo:bar')

        mock_iter_entry_points.assert_called_once_with('appathy.loader', 'foo')
        mock_iter_entry_points.return_value[0].load.assert_called_once_with()
        self.assertFalse(mock_iter_entry_points.return_value[1].load.called)
示例#2
0
    def test_unknown_extra(self, mock_iter_entry_points):
        with self.assertRaisesRegexp(
                ImportError, "Unable to find loader for scheme 'foo'"):
            utils.import_controller('foo:bar')

        mock_iter_entry_points.assert_called_once_with('appathy.loader', 'foo')
        mock_iter_entry_points.return_value[0].load.assert_called_once_with()
        mock_iter_entry_points.return_value[1].load.assert_called_once_with()
示例#3
0
    def __init__(self, global_config, **local_conf):
        """
        Initialize the Application.
        """

        # Let's get a mapper
        mapper = routes.Mapper(register=False)

        # Now, set up our primary controllers
        self.resources = {}
        extensions = {}
        for key, value in local_conf.items():
            if '.' not in key:
                continue

            # OK, split up the key name
            item_type, item_name = key.split('.', 1)

            if item_type == 'extend':
                # Filter out extensions for later processing
                values = value.split()

                ext_list = []
                seen = set()
                for value in values:
                    # Filter out repeats
                    if value in seen:
                        continue
                    ext_list.append(value)
                    seen.add(value)

                extensions[item_name] = ext_list
            elif item_type == 'resource':
                # Set up resources
                controller = utils.import_controller(value)
                self.resources[item_name] = controller(mapper)

        # Now apply extensions
        for name, ext_list in extensions.items():
            if name not in self.resources:
                raise exceptions.NoSuchResource(name)
            res = self.resources[name]

            for ext_class in ext_list:
                # Get the class
                ext = utils.import_controller(ext_class)

                # Register the extension
                res.wsgi_extend(ext())

        # Now, with all routes set up, initialize the middleware
        super(Application, self).__init__(self.dispatch, mapper,
                                          singleton=False)
示例#4
0
    def test_loader(self, mock_iter_entry_points):
        result = utils.import_controller('foo:bar')

        self.assertEqual(result, "fake_obj")
        mock_iter_entry_points.assert_called_once_with('appathy.loader', 'foo')
        mock_iter_entry_points.return_value[0].load.assert_called_once_with()
        mock_iter_entry_points.return_value[0].load.return_value\
            .assert_called_once_with('bar')
示例#5
0
    def test_bad_controller(self, mock_iter_entry_points):
        with self.assertRaisesRegexp(
                ImportError, "No loader scheme specified by 'foobar'"):
            utils.import_controller('foobar')

        self.assertFalse(mock_iter_entry_points.called)