summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Abbi <robin.abbi@downley.net>2020-05-04 14:05:48 +0100
committerRobin Abbi <robin.abbi@downley.net>2020-05-04 14:05:48 +0100
commitf6540b5e350430d8581df30d3996c966a8bf9537 (patch)
tree5d04f8b0e2fa895058b8aefc7f2ca5323b5086c8
parent9cd647a12f38de5082f4c052c2f355858b65f724 (diff)
downloadroutes-f6540b5e350430d8581df30d3996c966a8bf9537.tar.gz
Add conditions to Mapper.extend.
-rw-r--r--routes/mapper.py6
-rw-r--r--tests/test_functional/test_explicit_use.py30
2 files changed, 34 insertions, 2 deletions
diff --git a/routes/mapper.py b/routes/mapper.py
index eb4060a..0f7a2e8 100644
--- a/routes/mapper.py
+++ b/routes/mapper.py
@@ -490,7 +490,11 @@ class Mapper(SubMapperParent):
routepath = path_prefix + route.routepath
else:
routepath = route.routepath
- self.connect(route.name, routepath, **route._kargs)
+ self.connect(route.name,
+ routepath,
+ conditions=route.conditions,
+ **route._kargs,
+ )
def make_route(self, *args, **kargs):
"""Make a new Route object
diff --git a/tests/test_functional/test_explicit_use.py b/tests/test_functional/test_explicit_use.py
index ccd3b7a..b1e1cd7 100644
--- a/tests/test_functional/test_explicit_use.py
+++ b/tests/test_functional/test_explicit_use.py
@@ -1,6 +1,6 @@
"""test_explicit_use"""
import os, sys, time, unittest
-from nose.tools import eq_, assert_raises
+from nose.tools import eq_, assert_raises, assert_is_none
from routes import *
from routes.route import Route
@@ -101,6 +101,34 @@ class TestUtils(unittest.TestCase):
map.extend(routes)
eq_(map.match('/foo'), {})
+ def test_add_routes_conditions_unmet(self):
+ map = Mapper(explicit=True)
+ map.minimization = False
+ routes = [
+ Route('foo', '/foo', conditions=dict(method=["POST"]))
+ ]
+ environ = {
+ 'HTTP_HOST': 'localhost.com',
+ 'PATH_INFO': '/foo',
+ 'REQUEST_METHOD': 'GET',
+ }
+ map.extend(routes)
+ assert_is_none(map.match('/foo', environ=environ))
+
+ def test_add_routes_conditions_met(self):
+ map = Mapper(explicit=True)
+ map.minimization = False
+ routes = [
+ Route('foo', '/foo', conditions=dict(method=["POST"]))
+ ]
+ environ = {
+ 'HTTP_HOST': 'localhost.com',
+ 'PATH_INFO': '/foo',
+ 'REQUEST_METHOD': 'POST',
+ }
+ map.extend(routes)
+ eq_(map.match('/foo', environ=environ), {})
+
def test_using_func(self):
def fred(view):
pass