summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyramid/tests/conflictapp/__init__.py23
-rw-r--r--pyramid/tests/conflictapp/included.py8
-rw-r--r--pyramid/tests/test_integration.py65
3 files changed, 96 insertions, 0 deletions
diff --git a/pyramid/tests/conflictapp/__init__.py b/pyramid/tests/conflictapp/__init__.py
new file mode 100644
index 000000000..429237973
--- /dev/null
+++ b/pyramid/tests/conflictapp/__init__.py
@@ -0,0 +1,23 @@
+from pyramid.response import Response
+from pyramid.authentication import AuthTktAuthenticationPolicy
+from pyramid.authorization import ACLAuthorizationPolicy
+
+def aview(request):
+ return Response('a view')
+
+def routeview(request):
+ return Response('route view')
+
+def protectedview(request):
+ return Response('protected view')
+
+def includeme(config):
+ # purposely sorta-randomly ordered (route comes after view naming it,
+ # authz comes after views)
+ config.add_view(aview)
+ config.add_view(protectedview, name='protected', permission='view')
+ config.add_view(routeview, route_name='aroute')
+ config.add_route('aroute', '/route')
+ config.set_authentication_policy(AuthTktAuthenticationPolicy('seekri1t'))
+ config.set_authorization_policy(ACLAuthorizationPolicy())
+ config.include('pyramid.tests.conflictapp.included')
diff --git a/pyramid/tests/conflictapp/included.py b/pyramid/tests/conflictapp/included.py
new file mode 100644
index 000000000..a15fa8d91
--- /dev/null
+++ b/pyramid/tests/conflictapp/included.py
@@ -0,0 +1,8 @@
+from webob import Response
+
+def bview(request):
+ """ """
+ return Response('b view')
+
+def includeme(config):
+ config.add_view(bview)
diff --git a/pyramid/tests/test_integration.py b/pyramid/tests/test_integration.py
index 1ebf83062..f391e65cb 100644
--- a/pyramid/tests/test_integration.py
+++ b/pyramid/tests/test_integration.py
@@ -344,6 +344,71 @@ class TestExceptionViewsApp(IntegrationBase):
res = self.testapp.get('/route_raise_exception4', status=200)
self.assertTrue('whoa' in res.body)
+class TestConflictApp(unittest.TestCase):
+ package = 'pyramid.tests.conflictapp'
+ def _makeConfig(self):
+ from pyramid.config import Configurator
+ config = Configurator()
+ return config
+
+ def test_autoresolved_view(self):
+ config = self._makeConfig()
+ config.include(self.package)
+ app = config.make_wsgi_app()
+ from webtest import TestApp
+ self.testapp = TestApp(app)
+ res = self.testapp.get('/')
+ self.assertTrue('a view' in res.body)
+ res = self.testapp.get('/route')
+ self.assertTrue('route view' in res.body)
+
+ def test_overridden_autoresolved_view(self):
+ from pyramid.response import Response
+ config = self._makeConfig()
+ config.include(self.package)
+ def thisview(request):
+ return Response('this view')
+ config.add_view(thisview)
+ app = config.make_wsgi_app()
+ from webtest import TestApp
+ self.testapp = TestApp(app)
+ res = self.testapp.get('/')
+ self.assertTrue('this view' in res.body)
+
+ def test_overridden_route_view(self):
+ from pyramid.response import Response
+ config = self._makeConfig()
+ config.include(self.package)
+ def thisview(request):
+ return Response('this view')
+ config.add_view(thisview, route_name='aroute')
+ app = config.make_wsgi_app()
+ from webtest import TestApp
+ self.testapp = TestApp(app)
+ res = self.testapp.get('/route')
+ self.assertTrue('this view' in res.body)
+
+ def test_nonoverridden_authorization_policy(self):
+ config = self._makeConfig()
+ config.include(self.package)
+ app = config.make_wsgi_app()
+ from webtest import TestApp
+ self.testapp = TestApp(app)
+ res = self.testapp.get('/protected', status=403)
+ self.assertTrue('403 Forbidden' in res)
+
+ def test_overridden_authorization_policy(self):
+ config = self._makeConfig()
+ config.include(self.package)
+ from pyramid.testing import DummySecurityPolicy
+ config.set_authorization_policy(DummySecurityPolicy('fred'))
+ config.set_authentication_policy(DummySecurityPolicy(permissive=True))
+ app = config.make_wsgi_app()
+ from webtest import TestApp
+ self.testapp = TestApp(app)
+ res = self.testapp.get('/protected', status=200)
+ self.assertTrue('protected view' in res)
+
class ImperativeIncludeConfigurationTest(unittest.TestCase):
def setUp(self):
from pyramid.config import Configurator