Michael Merickel
2018-10-15 bda1306749c62ef4f11cfe567ed7d56c8ad94240
commit | author | age
006274 1 import os
156375 2 import unittest
dd3cc8 3 from .test_scripts.dummy import DummyLoader
156375 4
924888 5 here = os.path.dirname(__file__)
MM 6
0c29cf 7
38e4c7 8 class Test_get_app(unittest.TestCase):
14be69 9     def _callFUT(self, config_file, section_name, options=None, _loader=None):
MM 10         import pyramid.paster
0c29cf 11
14be69 12         old_loader = pyramid.paster.get_config_loader
MM 13         try:
14             if _loader is not None:
15                 pyramid.paster.get_config_loader = _loader
0c29cf 16             return pyramid.paster.get_app(
MM 17                 config_file, section_name, options=options
18             )
14be69 19         finally:
MM 20             pyramid.paster.get_config_loader = old_loader
82fefc 21
CM 22     def test_it(self):
23         app = DummyApp()
14be69 24         loader = DummyLoader(app=app)
8f4fcc 25         result = self._callFUT(
0c29cf 26             '/foo/bar/myapp.ini', 'myapp', options={'a': 'b'}, _loader=loader
MM 27         )
3e489b 28         self.assertEqual(loader.uri.path, '/foo/bar/myapp.ini')
14be69 29         self.assertEqual(len(loader.calls), 1)
MM 30         self.assertEqual(loader.calls[0]['op'], 'app')
31         self.assertEqual(loader.calls[0]['name'], 'myapp')
32         self.assertEqual(loader.calls[0]['defaults'], {'a': 'b'})
7b1a20 33         self.assertEqual(result, app)
38e4c7 34
924888 35     def test_it_with_dummyapp_requiring_options(self):
MM 36         options = {'bar': 'baz'}
37         app = self._callFUT(
38             os.path.join(here, 'fixtures', 'dummy.ini'),
0c29cf 39             'myapp',
MM 40             options=options,
41         )
924888 42         self.assertEqual(app.settings['foo'], 'baz')
0c29cf 43
924888 44
38e4c7 45 class Test_get_appsettings(unittest.TestCase):
14be69 46     def _callFUT(self, config_file, section_name, options=None, _loader=None):
MM 47         import pyramid.paster
0c29cf 48
14be69 49         old_loader = pyramid.paster.get_config_loader
MM 50         try:
51             if _loader is not None:
52                 pyramid.paster.get_config_loader = _loader
0c29cf 53             return pyramid.paster.get_appsettings(
MM 54                 config_file, section_name, options=options
55             )
14be69 56         finally:
MM 57             pyramid.paster.get_config_loader = old_loader
38e4c7 58
CM 59     def test_it(self):
14be69 60         values = {'a': 1}
MM 61         loader = DummyLoader(app_settings=values)
62         result = self._callFUT(
0c29cf 63             '/foo/bar/myapp.ini', 'myapp', options={'a': 'b'}, _loader=loader
MM 64         )
3e489b 65         self.assertEqual(loader.uri.path, '/foo/bar/myapp.ini')
14be69 66         self.assertEqual(len(loader.calls), 1)
MM 67         self.assertEqual(loader.calls[0]['op'], 'app_settings')
68         self.assertEqual(loader.calls[0]['name'], 'myapp')
69         self.assertEqual(loader.calls[0]['defaults'], {'a': 'b'})
38e4c7 70         self.assertEqual(result, values)
924888 71
MM 72     def test_it_with_dummyapp_requiring_options(self):
73         options = {'bar': 'baz'}
74         result = self._callFUT(
75             os.path.join(here, 'fixtures', 'dummy.ini'),
0c29cf 76             'myapp',
MM 77             options=options,
78         )
924888 79         self.assertEqual(result['foo'], 'baz')
0c29cf 80
00f7c6 81
596495 82 class Test_setup_logging(unittest.TestCase):
14be69 83     def _callFUT(self, config_file, global_conf=None, _loader=None):
MM 84         import pyramid.paster
0c29cf 85
14be69 86         old_loader = pyramid.paster.get_config_loader
MM 87         try:
88             if _loader is not None:
89                 pyramid.paster.get_config_loader = _loader
90             return pyramid.paster.setup_logging(config_file, global_conf)
91         finally:
92             pyramid.paster.get_config_loader = old_loader
596495 93
1514ea 94     def test_it_no_global_conf(self):
14be69 95         loader = DummyLoader()
3e489b 96         self._callFUT('/abc.ini', _loader=loader)
MM 97         self.assertEqual(loader.uri.path, '/abc.ini')
14be69 98         self.assertEqual(len(loader.calls), 1)
MM 99         self.assertEqual(loader.calls[0]['op'], 'logging')
100         self.assertEqual(loader.calls[0]['defaults'], None)
596495 101
1514ea 102     def test_it_global_conf_empty(self):
14be69 103         loader = DummyLoader()
3e489b 104         self._callFUT('/abc.ini', global_conf={}, _loader=loader)
MM 105         self.assertEqual(loader.uri.path, '/abc.ini')
14be69 106         self.assertEqual(len(loader.calls), 1)
MM 107         self.assertEqual(loader.calls[0]['op'], 'logging')
108         self.assertEqual(loader.calls[0]['defaults'], {})
1514ea 109
MA 110     def test_it_global_conf_not_empty(self):
14be69 111         loader = DummyLoader()
3e489b 112         self._callFUT('/abc.ini', global_conf={'key': 'val'}, _loader=loader)
MM 113         self.assertEqual(loader.uri.path, '/abc.ini')
14be69 114         self.assertEqual(len(loader.calls), 1)
MM 115         self.assertEqual(loader.calls[0]['op'], 'logging')
116         self.assertEqual(loader.calls[0]['defaults'], {'key': 'val'})
596495 117
0c29cf 118
596495 119 class Test_bootstrap(unittest.TestCase):
00f7c6 120     def _callFUT(self, config_uri, request=None):
MM 121         from pyramid.paster import bootstrap
0c29cf 122
00f7c6 123         return bootstrap(config_uri, request)
MM 124
125     def setUp(self):
126         import pyramid.paster
0c29cf 127
00f7c6 128         self.original_get_app = pyramid.paster.get_app
c515d7 129         self.original_prepare = pyramid.paster.prepare
00f7c6 130         self.app = app = DummyApp()
MM 131         self.root = root = Dummy()
132
133         class DummyGetApp(object):
134             def __call__(self, *a, **kw):
135                 self.a = a
136                 self.kw = kw
137                 return app
0c29cf 138
00f7c6 139         self.get_app = pyramid.paster.get_app = DummyGetApp()
MM 140
c515d7 141         class DummyPrepare(object):
00f7c6 142             def __call__(self, *a, **kw):
MM 143                 self.a = a
144                 self.kw = kw
0c29cf 145                 return {'root': root, 'closer': lambda: None}
MM 146
c515d7 147         self.getroot = pyramid.paster.prepare = DummyPrepare()
00f7c6 148
MM 149     def tearDown(self):
150         import pyramid.paster
0c29cf 151
00f7c6 152         pyramid.paster.get_app = self.original_get_app
c515d7 153         pyramid.paster.prepare = self.original_prepare
00f7c6 154
MM 155     def test_it_request_with_registry(self):
156         request = DummyRequest({})
157         request.registry = dummy_registry
158         result = self._callFUT('/foo/bar/myapp.ini', request)
159         self.assertEqual(result['app'], self.app)
160         self.assertEqual(result['root'], self.root)
820399 161         self.assertTrue('closer' in result)
82fefc 162
0c29cf 163
156375 164 class Dummy:
CM 165     pass
0c29cf 166
156375 167
81a833 168 class DummyRegistry(object):
e6d8e5 169     settings = {}
81a833 170
0c29cf 171
81a833 172 dummy_registry = DummyRegistry()
0c29cf 173
156375 174
CM 175 class DummyApp:
176     def __init__(self):
177         self.registry = dummy_registry
0c29cf 178
156375 179
924888 180 def make_dummyapp(global_conf, **settings):
MM 181     app = DummyApp()
182     app.settings = settings
183     app.global_conf = global_conf
184     return app
185
0c29cf 186
1b395e 187 class DummyRequest:
C 188     application_url = 'http://example.com:5432'
189     script_name = ''
0c29cf 190
1b395e 191     def __init__(self, environ):
C 192         self.environ = environ
193         self.matchdict = {}