Router: route patterns multi wildcards fix.

Matching 'start' and 'end' position now adjusted to avoid false matching.

This is related to #434 issue on Github.
Thanks to 洪志道 (Hong Zhi Dao).
This commit is contained in:
Axel Duch
2020-07-10 10:28:53 +01:00
parent 18fbfc3d50
commit b6792b00ae
2 changed files with 27 additions and 3 deletions

View File

@@ -200,6 +200,27 @@ class TestRouting(TestApplicationProto):
self.assertEqual(self.get(url='/blah')['status'], 200, '/blah')
self.assertEqual(self.get(url='/BLAH')['status'], 404, '/BLAH')
def test_route_match_wildcards_ordered(self):
self.route_match({"uri": "/a*x*y*"})
self.assertEqual(self.get(url='/axy')['status'], 200, '/axy')
self.assertEqual(self.get(url='/ayx')['status'], 404, '/ayx')
def test_route_match_wildcards_adjust_start(self):
self.route_match({"uri": "/bla*bla*"})
self.assertEqual(self.get(url='/bla_foo')['status'], 404, '/bla_foo')
def test_route_match_wildcards_adjust_start_substr(self):
self.route_match({"uri": "*bla*bla*"})
self.assertEqual(self.get(url='/bla_foo')['status'], 404, '/bla_foo')
def test_route_match_wildcards_adjust_end(self):
self.route_match({"uri": "/bla*bla"})
self.assertEqual(self.get(url='/foo_bla')['status'], 404, '/foo_bla')
def test_routes_match_wildcard_right_case_sensitive(self):
self.route_match({"uri": "/bla*"})