diff options
| author | Andrei Belov <defan@nginx.com> | 2020-08-13 19:28:27 +0300 |
|---|---|---|
| committer | Andrei Belov <defan@nginx.com> | 2020-08-13 19:28:27 +0300 |
| commit | aff76e4f90b4e948c327ce2b021dc3203c33cbcd (patch) | |
| tree | 5bd6ac3aa92683777548472984c209bf26d8a971 /test/test_routing.py | |
| parent | 04ce9f997e0e49e57ce4b5fc4aa98134232a1974 (diff) | |
| parent | 6473d4b65a99aa10d509220fb99d8c4f65631ed0 (diff) | |
| download | unit-1.19.0-1.tar.gz unit-1.19.0-1.tar.bz2 | |
Merged with the default branch.1.19.0-1
Diffstat (limited to '')
| -rw-r--r-- | test/test_routing.py | 70 |
1 files changed, 65 insertions, 5 deletions
diff --git a/test/test_routing.py b/test/test_routing.py index 3cf4009c..269e8efc 100644 --- a/test/test_routing.py +++ b/test/test_routing.py @@ -115,10 +115,41 @@ class TestRouting(TestApplicationProto): def test_routes_match_invalid(self): self.route_match_invalid({"method": "**"}) - self.route_match_invalid({"method": "blah**"}) - self.route_match_invalid({"host": "*blah*blah"}) - self.route_match_invalid({"host": "blah*blah*blah"}) - self.route_match_invalid({"host": "blah*blah*"}) + + def test_routes_match_valid(self): + self.route_match({"method": "blah*"}) + self.route_match({"host": "*blah*blah"}) + self.route_match({"host": "blah*blah*blah"}) + self.route_match({"host": "blah*blah*"}) + + def test_routes_match_empty_exact(self): + self.route_match({"uri": ""}) + self.assertEqual(self.get()['status'], 404) + + self.route_match({"uri": "/"}) + self.assertEqual(self.get()['status'], 200) + self.assertEqual(self.get(url='/blah')['status'], 404) + + def test_routes_match_negative(self): + self.route_match({"uri": "!"}) + self.assertEqual(self.get()['status'], 404) + + self.route_match({"uri": "!/"}) + self.assertEqual(self.get()['status'], 404) + self.assertEqual(self.get(url='/blah')['status'], 200) + + self.route_match({"uri": "!*blah"}) + self.assertEqual(self.get()['status'], 200) + self.assertEqual(self.get(url='/bla')['status'], 200) + self.assertEqual(self.get(url='/blah')['status'], 404) + self.assertEqual(self.get(url='/blah1')['status'], 200) + + self.route_match({"uri": "!/blah*1*"}) + self.assertEqual(self.get()['status'], 200) + self.assertEqual(self.get(url='/blah')['status'], 200) + self.assertEqual(self.get(url='/blah1')['status'], 404) + self.assertEqual(self.get(url='/blah12')['status'], 404) + self.assertEqual(self.get(url='/blah2')['status'], 200) def test_routes_match_wildcard_middle(self): self.route_match({"host": "ex*le"}) @@ -169,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*"}) @@ -181,6 +233,15 @@ class TestRouting(TestApplicationProto): self.assertEqual(self.get(url='/blah')['status'], 200, '/blah') self.assertEqual(self.get(url='/BLAH')['status'], 404, '/BLAH') + def test_routes_match_many_wildcard_substrings_case_sensitive(self): + self.route_match({"uri": "*a*B*c*"}) + + self.assertEqual(self.get(url='/blah-a-B-c-blah')['status'], 200) + self.assertEqual(self.get(url='/a-B-c')['status'], 200) + self.assertEqual(self.get(url='/aBc')['status'], 200) + self.assertEqual(self.get(url='/aBCaBbc')['status'], 200) + self.assertEqual(self.get(url='/ABc')['status'], 404) + def test_routes_pass_encode(self): def check_pass(path, name): self.assertIn( @@ -1362,7 +1423,6 @@ class TestRouting(TestApplicationProto): self.route_match_invalid({"arguments": ["var"]}) self.route_match_invalid({"arguments": [{"var1": {}}]}) self.route_match_invalid({"arguments": {"": "bar"}}) - self.route_match_invalid({"arguments": {"foo": "*ba*r"}}) self.route_match_invalid({"arguments": {"foo": "%"}}) self.route_match_invalid({"arguments": {"foo": "%1G"}}) self.route_match_invalid({"arguments": {"%": "bar"}}) |
