summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_integration.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-04-14 02:49:19 +0000
committerChris McDonough <chrism@agendaless.com>2010-04-14 02:49:19 +0000
commitff1213e8f2aed987108ba57aed517c033491b1aa (patch)
treef531544c3373ae7d5b51746987cb373326277a9c /repoze/bfg/tests/test_integration.py
parent2b6bc8adfa294f7133680f64df411251afb67dfc (diff)
downloadpyramid-ff1213e8f2aed987108ba57aed517c033491b1aa.tar.gz
pyramid-ff1213e8f2aed987108ba57aed517c033491b1aa.tar.bz2
pyramid-ff1213e8f2aed987108ba57aed517c033491b1aa.zip
Add "exception views" work contributed primarily by Andrey Popp by merging the "phash" branch.
Diffstat (limited to 'repoze/bfg/tests/test_integration.py')
-rw-r--r--repoze/bfg/tests/test_integration.py59
1 files changed, 57 insertions, 2 deletions
diff --git a/repoze/bfg/tests/test_integration.py b/repoze/bfg/tests/test_integration.py
index 41144f7c3..c54509378 100644
--- a/repoze/bfg/tests/test_integration.py
+++ b/repoze/bfg/tests/test_integration.py
@@ -31,12 +31,14 @@ class WGSIAppPlusBFGViewTests(unittest.TestCase):
def test_scanned(self):
from repoze.bfg.interfaces import IRequest
from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import IViewClassifier
from repoze.bfg.configuration import Configurator
from repoze.bfg.tests import test_integration
config = Configurator()
config.scan(test_integration)
reg = config.registry
- view = reg.adapters.lookup((IRequest, INothing), IView, name='')
+ view = reg.adapters.lookup(
+ (IViewClassifier, IRequest, INothing), IView, name='')
self.assertEqual(view, wsgiapptest)
here = os.path.dirname(__file__)
@@ -63,11 +65,12 @@ class TestStaticApp(unittest.TestCase):
open(os.path.join(here, 'fixtures/minimal.pt'), 'r').read())
class TwillBase(unittest.TestCase):
+ root_factory = None
def setUp(self):
import sys
import twill
from repoze.bfg.configuration import Configurator
- config = Configurator()
+ config = Configurator(root_factory=self.root_factory)
config.load_zcml(self.config)
twill.add_wsgi_intercept('localhost', 6543, config.make_wsgi_app)
if sys.platform is 'win32': # pragma: no cover
@@ -98,6 +101,11 @@ class TestFixtureApp(TwillBase):
self.assertEqual(browser.get_html(), 'fixture')
browser.go('http://localhost:6543/dummyskin.html')
self.assertEqual(browser.get_code(), 404)
+ browser.go('http://localhost:6543/error.html')
+ self.assertEqual(browser.get_code(), 200)
+ self.assertEqual(browser.get_html(), 'supressed')
+ browser.go('http://localhost:6543/protected.html')
+ self.assertEqual(browser.get_code(), 401)
class TestCCBug(TwillBase):
# "unordered" as reported in IRC by author of
@@ -140,6 +148,15 @@ class TestHybridApp(TwillBase):
browser.go('http://localhost:6543/pqr/global2')
self.assertEqual(browser.get_code(), 200)
self.assertEqual(browser.get_html(), 'global2')
+ browser.go('http://localhost:6543/error')
+ self.assertEqual(browser.get_code(), 200)
+ self.assertEqual(browser.get_html(), 'supressed')
+ browser.go('http://localhost:6543/error2')
+ self.assertEqual(browser.get_code(), 200)
+ self.assertEqual(browser.get_html(), 'supressed2')
+ browser.go('http://localhost:6543/error_sub')
+ self.assertEqual(browser.get_code(), 200)
+ self.assertEqual(browser.get_html(), 'supressed2')
class TestRestBugApp(TwillBase):
# test bug reported by delijati 2010/2/3 (http://pastebin.com/d4cc15515)
@@ -168,6 +185,44 @@ class TestViewDecoratorApp(TwillBase):
self.assertEqual(browser.get_code(), 200)
self.failUnless('OK3' in browser.get_html())
+from repoze.bfg.tests.exceptionviewapp.models import AnException, NotAnException
+excroot = {'anexception':AnException(),
+ 'notanexception':NotAnException()}
+
+class TestExceptionViewsApp(TwillBase):
+ config = 'repoze.bfg.tests.exceptionviewapp:configure.zcml'
+ root_factory = lambda *arg: excroot
+ def test_it(self):
+ import twill.commands
+ browser = twill.commands.get_browser()
+ browser.go('http://localhost:6543/')
+ self.assertEqual(browser.get_code(), 200)
+ self.failUnless('maybe' in browser.get_html())
+
+ browser.go('http://localhost:6543/notanexception')
+ self.assertEqual(browser.get_code(), 200)
+ self.failUnless('no' in browser.get_html())
+
+ browser.go('http://localhost:6543/anexception')
+ self.assertEqual(browser.get_code(), 200)
+ self.failUnless('yes' in browser.get_html())
+
+ browser.go('http://localhost:6543/route_raise_exception')
+ self.assertEqual(browser.get_code(), 200)
+ self.failUnless('yes' in browser.get_html())
+
+ browser.go('http://localhost:6543/route_raise_exception2')
+ self.assertEqual(browser.get_code(), 200)
+ self.failUnless('yes' in browser.get_html())
+
+ browser.go('http://localhost:6543/route_raise_exception3')
+ self.assertEqual(browser.get_code(), 200)
+ self.failUnless('whoa' in browser.get_html())
+
+ browser.go('http://localhost:6543/route_raise_exception4')
+ self.assertEqual(browser.get_code(), 200)
+ self.failUnless('whoa' in browser.get_html())
+
class DummyContext(object):
pass