From b5a3b0de22d6e94185226cbb56c98e3eaa359a31 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Tue, 23 Aug 2011 22:45:10 -0400 Subject: add some integration tests for aconflict autoresolution --- pyramid/tests/conflictapp/__init__.py | 23 +++++++++++++ pyramid/tests/conflictapp/included.py | 8 +++++ pyramid/tests/test_integration.py | 65 +++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 pyramid/tests/conflictapp/__init__.py create mode 100644 pyramid/tests/conflictapp/included.py 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 -- cgit v1.2.3