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