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)
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()
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)
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')
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)