From 74a8f69ebc691c0850ab72d8bca421e7b4de52a5 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Wed, 20 Jan 2010 05:33:45 +0000 Subject: Add (non-failing) tests for ordering issue reported indirectly via http://labs.creativecommons.org/2010/01/13/cc-engine-and-web-non-frameworks/ .. can't seem to repeat. --- repoze/bfg/tests/ccbugapp/__init__.py | 1 + repoze/bfg/tests/ccbugapp/configure.zcml | 15 +++++++++++++++ repoze/bfg/tests/ccbugapp/views.py | 10 ++++++++++ repoze/bfg/tests/test_integration.py | 20 ++++++++++++++++++-- repoze/bfg/tests/test_urldispatch.py | 21 +++++++++++++++++++++ 5 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 repoze/bfg/tests/ccbugapp/__init__.py create mode 100644 repoze/bfg/tests/ccbugapp/configure.zcml create mode 100644 repoze/bfg/tests/ccbugapp/views.py diff --git a/repoze/bfg/tests/ccbugapp/__init__.py b/repoze/bfg/tests/ccbugapp/__init__.py new file mode 100644 index 000000000..546616b2c --- /dev/null +++ b/repoze/bfg/tests/ccbugapp/__init__.py @@ -0,0 +1 @@ +# fixture application diff --git a/repoze/bfg/tests/ccbugapp/configure.zcml b/repoze/bfg/tests/ccbugapp/configure.zcml new file mode 100644 index 000000000..cb9ca6f1d --- /dev/null +++ b/repoze/bfg/tests/ccbugapp/configure.zcml @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/repoze/bfg/tests/ccbugapp/views.py b/repoze/bfg/tests/ccbugapp/views.py new file mode 100644 index 000000000..4a6939ac2 --- /dev/null +++ b/repoze/bfg/tests/ccbugapp/views.py @@ -0,0 +1,10 @@ +from webob import Response + +def rdf_view(request): + """ """ + return Response('rdf') + +def juri_view(request): + """ """ + return Response('juri') + diff --git a/repoze/bfg/tests/test_integration.py b/repoze/bfg/tests/test_integration.py index da866f8d0..1c6fdd01e 100644 --- a/repoze/bfg/tests/test_integration.py +++ b/repoze/bfg/tests/test_integration.py @@ -62,13 +62,13 @@ class TestStaticApp(unittest.TestCase): result.body, open(os.path.join(here, 'fixtures/minimal.pt'), 'r').read()) -class TestFixtureApp(unittest.TestCase): +class TwillBase(unittest.TestCase): def setUp(self): import sys import twill from repoze.bfg.configuration import Configurator config = Configurator() - config.load_zcml('repoze.bfg.tests.fixtureapp:configure.zcml') + config.load_zcml(self.config) twill.add_wsgi_intercept('localhost', 6543, config.make_wsgi_app) if sys.platform is 'win32': # pragma: no cover out = open('nul:', 'wb') @@ -85,6 +85,8 @@ class TestFixtureApp(unittest.TestCase): twill.set_output(None) testing.tearDown() +class TestFixtureApp(TwillBase): + config = 'repoze.bfg.tests.fixtureapp:configure.zcml' def test_it(self): import twill.commands browser = twill.commands.get_browser() @@ -97,6 +99,20 @@ class TestFixtureApp(unittest.TestCase): browser.go('http://localhost:6543/dummyskin.html') self.assertEqual(browser.get_code(), 404) +class TestCCBug(TwillBase): + # "unordered" as reported in IRC by author of + # http://labs.creativecommons.org/2010/01/13/cc-engine-and-web-non-frameworks/ + config = 'repoze.bfg.tests.ccbugapp:configure.zcml' + def test_it(self): + import twill.commands + browser = twill.commands.get_browser() + browser.go('http://localhost:6543/licenses/1/v1/rdf') + self.assertEqual(browser.get_code(), 200) + self.assertEqual(browser.get_html(), 'rdf') + browser.go('http://localhost:6543/licenses/1/v1/juri') + self.assertEqual(browser.get_code(), 200) + self.assertEqual(browser.get_html(), 'juri') + class DummyContext(object): pass diff --git a/repoze/bfg/tests/test_urldispatch.py b/repoze/bfg/tests/test_urldispatch.py index 861a4fd05..c1fa66aa7 100644 --- a/repoze/bfg/tests/test_urldispatch.py +++ b/repoze/bfg/tests/test_urldispatch.py @@ -108,6 +108,27 @@ class RoutesMapperTests(unittest.TestCase): self.assertEqual(result['match']['action'], 'action1') self.assertEqual(result['match']['article'], 'article1') + def test_cc_bug(self): + # "unordered" as reported in IRC by author of + # http://labs.creativecommons.org/2010/01/13/cc-engine-and-web-non-frameworks/ + mapper = self._makeOne() + mapper.connect('licenses/:license_code/:license_version/rdf', 'rdf') + mapper.connect('licenses/:license_code/:license_version/:jurisdiction', + 'juri') + + request = self._getRequest(PATH_INFO='/licenses/1/v2/rdf') + result = mapper(request) + self.assertEqual(result['route'], mapper.routes['rdf']) + self.assertEqual(result['match']['license_code'], '1') + self.assertEqual(result['match']['license_version'], 'v2') + + request = self._getRequest(PATH_INFO='/licenses/1/v2/usa') + result = mapper(request) + self.assertEqual(result['route'], mapper.routes['juri']) + self.assertEqual(result['match']['license_code'], '1') + self.assertEqual(result['match']['license_version'], 'v2') + self.assertEqual(result['match']['jurisdiction'], 'usa') + def test_root_route_matches(self): mapper = self._makeOne() mapper.connect('', 'root') -- cgit v1.2.3