import os import unittest from .test_scripts.dummy import DummyLoader here = os.path.dirname(__file__) class Test_get_app(unittest.TestCase): def _callFUT(self, config_file, section_name, options=None, _loader=None): import pyramid.paster old_loader = pyramid.paster.get_config_loader try: if _loader is not None: pyramid.paster.get_config_loader = _loader return pyramid.paster.get_app( config_file, section_name, options=options ) finally: pyramid.paster.get_config_loader = old_loader def test_it(self): app = DummyApp() loader = DummyLoader(app=app) result = self._callFUT( '/foo/bar/myapp.ini', 'myapp', options={'a': 'b'}, _loader=loader ) self.assertEqual(loader.uri.path, '/foo/bar/myapp.ini') self.assertEqual(len(loader.calls), 1) self.assertEqual(loader.calls[0]['op'], 'app') self.assertEqual(loader.calls[0]['name'], 'myapp') self.assertEqual(loader.calls[0]['defaults'], {'a': 'b'}) self.assertEqual(result, app) def test_it_with_dummyapp_requiring_options(self): options = {'bar': 'baz'} app = self._callFUT( os.path.join(here, 'fixtures', 'dummy.ini'), 'myapp', options=options, ) self.assertEqual(app.settings['foo'], 'baz') class Test_get_appsettings(unittest.TestCase): def _callFUT(self, config_file, section_name, options=None, _loader=None): import pyramid.paster old_loader = pyramid.paster.get_config_loader try: if _loader is not None: pyramid.paster.get_config_loader = _loader return pyramid.paster.get_appsettings( config_file, section_name, options=options ) finally: pyramid.paster.get_config_loader = old_loader def test_it(self): values = {'a': 1} loader = DummyLoader(app_settings=values) result = self._callFUT( '/foo/bar/myapp.ini', 'myapp', options={'a': 'b'}, _loader=loader ) self.assertEqual(loader.uri.path, '/foo/bar/myapp.ini') self.assertEqual(len(loader.calls), 1) self.assertEqual(loader.calls[0]['op'], 'app_settings') self.assertEqual(loader.calls[0]['name'], 'myapp') self.assertEqual(loader.calls[0]['defaults'], {'a': 'b'}) self.assertEqual(result, values) def test_it_with_dummyapp_requiring_options(self): options = {'bar': 'baz'} result = self._callFUT( os.path.join(here, 'fixtures', 'dummy.ini'), 'myapp', options=options, ) self.assertEqual(result['foo'], 'baz') class Test_setup_logging(unittest.TestCase): def _callFUT(self, config_file, global_conf=None, _loader=None): import pyramid.paster old_loader = pyramid.paster.get_config_loader try: if _loader is not None: pyramid.paster.get_config_loader = _loader return pyramid.paster.setup_logging(config_file, global_conf) finally: pyramid.paster.get_config_loader = old_loader def test_it_no_global_conf(self): loader = DummyLoader() self._callFUT('/abc.ini', _loader=loader) self.assertEqual(loader.uri.path, '/abc.ini') self.assertEqual(len(loader.calls), 1) self.assertEqual(loader.calls[0]['op'], 'logging') self.assertEqual(loader.calls[0]['defaults'], None) def test_it_global_conf_empty(self): loader = DummyLoader() self._callFUT('/abc.ini', global_conf={}, _loader=loader) self.assertEqual(loader.uri.path, '/abc.ini') self.assertEqual(len(loader.calls), 1) self.assertEqual(loader.calls[0]['op'], 'logging') self.assertEqual(loader.calls[0]['defaults'], {}) def test_it_global_conf_not_empty(self): loader = DummyLoader() self._callFUT('/abc.ini', global_conf={'key': 'val'}, _loader=loader) self.assertEqual(loader.uri.path, '/abc.ini') self.assertEqual(len(loader.calls), 1) self.assertEqual(loader.calls[0]['op'], 'logging') self.assertEqual(loader.calls[0]['defaults'], {'key': 'val'}) class Test_bootstrap(unittest.TestCase): def _callFUT(self, config_uri, request=None): from pyramid.paster import bootstrap return bootstrap(config_uri, request) def setUp(self): import pyramid.paster self.original_get_app = pyramid.paster.get_app self.original_prepare = pyramid.paster.prepare self.app = app = DummyApp() self.root = root = Dummy() class DummyGetApp(object): def __call__(self, *a, **kw): self.a = a self.kw = kw return app self.get_app = pyramid.paster.get_app = DummyGetApp() class DummyPrepare(object): def __call__(self, *a, **kw): self.a = a self.kw = kw return {'root': root, 'closer': lambda: None} self.getroot = pyramid.paster.prepare = DummyPrepare() def tearDown(self): import pyramid.paster pyramid.paster.get_app = self.original_get_app pyramid.paster.prepare = self.original_prepare def test_it_request_with_registry(self): request = DummyRequest({}) request.registry = dummy_registry result = self._callFUT('/foo/bar/myapp.ini', request) self.assertEqual(result['app'], self.app) self.assertEqual(result['root'], self.root) self.assertTrue('closer' in result) class Dummy: pass class DummyRegistry(object): settings = {} dummy_registry = DummyRegistry() class DummyApp: def __init__(self): self.registry = dummy_registry def make_dummyapp(global_conf, **settings): app = DummyApp() app.settings = settings app.global_conf = global_conf return app class DummyRequest: application_url = 'http://example.com:5432' script_name = '' def __init__(self, environ): self.environ = environ self.matchdict = {}