Michael Merickel
2018-10-04 35b2e933813ea596262f15d3672b5ab5e4a13c04
commit | author | age
742c12 1 import unittest
CM 2
3 from pyramid.tests.test_config import dummyfactory
4
5 class TestFactoriesMixin(unittest.TestCase):
6     def _makeOne(self, *arg, **kw):
7         from pyramid.config import Configurator
8         config = Configurator(*arg, **kw)
9         return config
10
11     def test_set_request_factory(self):
12         from pyramid.interfaces import IRequestFactory
13         config = self._makeOne(autocommit=True)
14         factory = object()
15         config.set_request_factory(factory)
16         self.assertEqual(config.registry.getUtility(IRequestFactory), factory)
17
18     def test_set_request_factory_dottedname(self):
19         from pyramid.interfaces import IRequestFactory
20         config = self._makeOne(autocommit=True)
21         config.set_request_factory(
22             'pyramid.tests.test_config.dummyfactory')
23         self.assertEqual(config.registry.getUtility(IRequestFactory),
24                          dummyfactory)
25
1236de 26     def test_set_response_factory(self):
JA 27         from pyramid.interfaces import IResponseFactory
28         config = self._makeOne(autocommit=True)
32cb80 29         factory = lambda r: object()
1236de 30         config.set_response_factory(factory)
JA 31         self.assertEqual(config.registry.getUtility(IResponseFactory), factory)
32
33     def test_set_response_factory_dottedname(self):
34         from pyramid.interfaces import IResponseFactory
35         config = self._makeOne(autocommit=True)
36         config.set_response_factory(
37             'pyramid.tests.test_config.dummyfactory')
38         self.assertEqual(config.registry.getUtility(IResponseFactory),
39                          dummyfactory)
40
742c12 41     def test_set_root_factory(self):
CM 42         from pyramid.interfaces import IRootFactory
43         config = self._makeOne()
44         config.set_root_factory(dummyfactory)
45         self.assertEqual(config.registry.queryUtility(IRootFactory), None)
46         config.commit()
47         self.assertEqual(config.registry.getUtility(IRootFactory), dummyfactory)
48
49     def test_set_root_factory_as_None(self):
50         from pyramid.interfaces import IRootFactory
51         from pyramid.traversal import DefaultRootFactory
52         config = self._makeOne()
53         config.set_root_factory(None)
54         self.assertEqual(config.registry.queryUtility(IRootFactory), None)
55         config.commit()
56         self.assertEqual(config.registry.getUtility(IRootFactory),
57                          DefaultRootFactory)
74d503 58
742c12 59     def test_set_root_factory_dottedname(self):
CM 60         from pyramid.interfaces import IRootFactory
61         config = self._makeOne()
62         config.set_root_factory('pyramid.tests.test_config.dummyfactory')
63         self.assertEqual(config.registry.queryUtility(IRootFactory), None)
64         config.commit()
65         self.assertEqual(config.registry.getUtility(IRootFactory), dummyfactory)
74d503 66
742c12 67     def test_set_session_factory(self):
CM 68         from pyramid.interfaces import ISessionFactory
69         config = self._makeOne()
70         config.set_session_factory(dummyfactory)
71         self.assertEqual(config.registry.queryUtility(ISessionFactory), None)
72         config.commit()
73         self.assertEqual(config.registry.getUtility(ISessionFactory),
74                          dummyfactory)
75
76     def test_set_session_factory_dottedname(self):
77         from pyramid.interfaces import ISessionFactory
78         config = self._makeOne()
79         config.set_session_factory('pyramid.tests.test_config.dummyfactory')
80         self.assertEqual(config.registry.queryUtility(ISessionFactory), None)
81         config.commit()
82         self.assertEqual(config.registry.getUtility(ISessionFactory),
83                          dummyfactory)
84
023c88 85     def test_add_request_method_with_callable(self):
877a35 86         from pyramid.interfaces import IRequestExtensions
MM 87         config = self._makeOne(autocommit=True)
88         callable = lambda x: None
023c88 89         config.add_request_method(callable, name='foo')
877a35 90         exts = config.registry.getUtility(IRequestExtensions)
MM 91         self.assertTrue('foo' in exts.methods)
92
023c88 93     def test_add_request_method_with_unnamed_callable(self):
877a35 94         from pyramid.interfaces import IRequestExtensions
MM 95         config = self._makeOne(autocommit=True)
96         def foo(self): pass
023c88 97         config.add_request_method(foo)
877a35 98         exts = config.registry.getUtility(IRequestExtensions)
MM 99         self.assertTrue('foo' in exts.methods)
100
101     def test_set_multiple_request_methods_conflict(self):
102         from pyramid.exceptions import ConfigurationConflictError
103         config = self._makeOne()
104         def foo(self): pass
105         def bar(self): pass
023c88 106         config.add_request_method(foo, name='bar')
CM 107         config.add_request_method(bar, name='bar')
877a35 108         self.assertRaises(ConfigurationConflictError, config.commit)
MM 109
023c88 110     def test_add_request_method_with_None_callable(self):
877a35 111         from pyramid.interfaces import IRequestExtensions
MM 112         config = self._makeOne(autocommit=True)
023c88 113         config.add_request_method(name='foo')
877a35 114         exts = config.registry.queryUtility(IRequestExtensions)
MM 115         self.assertTrue(exts is None)
116
023c88 117     def test_add_request_method_with_None_callable_conflict(self):
877a35 118         from pyramid.exceptions import ConfigurationConflictError
MM 119         config = self._makeOne()
120         def bar(self): pass
023c88 121         config.add_request_method(name='foo')
CM 122         config.add_request_method(bar, name='foo')
877a35 123         self.assertRaises(ConfigurationConflictError, config.commit)
MM 124
023c88 125     def test_add_request_method_with_None_callable_and_no_name(self):
877a35 126         config = self._makeOne(autocommit=True)
023c88 127         self.assertRaises(AttributeError, config.add_request_method)
877a35 128
9e7248 129     def test_add_request_method_with_text_type_name(self):
JA 130         from pyramid.interfaces import IRequestExtensions
bc37a5 131         from pyramid.compat import text_, PY2
1e0d64 132         from pyramid.exceptions import ConfigurationError
9e7248 133
JA 134         config = self._makeOne(autocommit=True)
135         def boomshaka(r): pass
e094ab 136
1e0d64 137         def get_bad_name():
bc37a5 138             if PY2:
1e0d64 139                 name = text_(b'La Pe\xc3\xb1a', 'utf-8')
bc37a5 140             else:
MM 141                 name = b'La Pe\xc3\xb1a'
e094ab 142
1e0d64 143             config.add_request_method(boomshaka, name=name)
9e7248 144
1e0d64 145         self.assertRaises(ConfigurationError, get_bad_name)
877a35 146
0bee84 147     def test_set_execution_policy(self):
MM 148         from pyramid.interfaces import IExecutionPolicy
149         config = self._makeOne(autocommit=True)
150         def dummy_policy(environ, router): pass
151         config.set_execution_policy(dummy_policy)
152         registry = config.registry
153         result = registry.queryUtility(IExecutionPolicy)
154         self.assertEqual(result, dummy_policy)
155
156     def test_set_execution_policy_to_None(self):
157         from pyramid.interfaces import IExecutionPolicy
158         from pyramid.router import default_execution_policy
159         config = self._makeOne(autocommit=True)
160         config.set_execution_policy(None)
161         registry = config.registry
162         result = registry.queryUtility(IExecutionPolicy)
163         self.assertEqual(result, default_execution_policy)