Router: fixed "not empty" pattern matching.
The "!" pattern should be opposite to "", i.e. match only non-empty values. But after 3c00af54b937 it was equal to "!*", which is wrong.
This commit is contained in:
parent
37390d2a3b
commit
3f513f434f
2 changed files with 15 additions and 4 deletions
|
@ -1085,10 +1085,6 @@ nxt_http_route_pattern_create(nxt_task_t *task, nxt_mp_t *mp,
|
|||
|
||||
pattern->negative = 1;
|
||||
pattern->any = 0;
|
||||
|
||||
if (test.length == 0) {
|
||||
return NXT_OK;
|
||||
}
|
||||
}
|
||||
|
||||
if (test.length == 0) {
|
||||
|
|
|
@ -118,6 +118,9 @@ class TestRouting(TestApplicationProto):
|
|||
|
||||
def test_routes_match_negative(self):
|
||||
self.route_match({"uri": "!"})
|
||||
assert self.get()['status'] == 200
|
||||
|
||||
self.route_match({"uri": "!*"})
|
||||
assert self.get()['status'] == 404
|
||||
|
||||
self.route_match({"uri": "!/"})
|
||||
|
@ -1187,6 +1190,18 @@ class TestRouting(TestApplicationProto):
|
|||
assert self.get(url='/?foo=barxx&x%=%')['status'] == 404
|
||||
|
||||
def test_routes_match_arguments_negative(self):
|
||||
self.route_match({"arguments": {"foo": "!"}})
|
||||
assert self.get(url='/?bar')['status'] == 404
|
||||
assert self.get(url='/?foo')['status'] == 404
|
||||
assert self.get(url='/?foo=')['status'] == 404
|
||||
assert self.get(url='/?foo=%25')['status'] == 200
|
||||
|
||||
self.route_match({"arguments": {"foo": "!*"}})
|
||||
assert self.get(url='/?bar')['status'] == 404
|
||||
assert self.get(url='/?foo')['status'] == 404
|
||||
assert self.get(url='/?foo=')['status'] == 404
|
||||
assert self.get(url='/?foo=blah')['status'] == 404
|
||||
|
||||
self.route_match({"arguments": {"foo": "!%25"}})
|
||||
assert self.get(url='/?foo=blah')['status'] == 200
|
||||
assert self.get(url='/?foo=%')['status'] == 404
|
||||
|
|
Loading…
Reference in a new issue