def test_router_match_with_trailing_slash(): router = Router() def get_foo(): ... def create_foo(): ... router.add_get("/foo", get_foo) router.add_post("/foo", create_foo) m = router.get_match(HttpMethod.GET, b"/foo/") assert m is not None assert m.handler is get_foo m = router.get_match(HttpMethod.POST, b"/foo/") assert m is not None assert m.handler is create_foo m = router.get_match(HttpMethod.POST, b"/foo//") assert m is None
def test_more_than_one_star_raises(): router = Router() def home(): ... with pytest.raises(ValueError): router.add_get("*/*", home)
def test_more_than_one_star_raises(): router = Router() def home(): ... with pytest.raises(RouteException): router.add_get("*/*", home)
def test_router_match_any_below(self): router = Router() def a(): pass def b(): pass def c(): pass def d(): pass router.add_get(b'/a/*', a) router.add_get(b'/b/*', b) router.add_get(b'/c/*', c) router.add_get(b'/d/*', d) m = router.get_match(HttpMethod.GET, b'/a') assert m is None m = router.get_match(HttpMethod.GET, b'/a/anything/really') assert m is not None assert m.handler is a assert m.values.get('tail') == 'anything/really' m = router.get_match(HttpMethod.GET, b'/b/anything/really') assert m is not None assert m.handler is b assert m.values.get('tail') == 'anything/really' m = router.get_match(HttpMethod.GET, b'/c/anything/really') assert m is not None assert m.handler is c assert m.values.get('tail') == 'anything/really' m = router.get_match(HttpMethod.GET, b'/d/anything/really') assert m is not None assert m.handler is d assert m.values.get('tail') == 'anything/really' m = router.get_match(HttpMethod.POST, b'/a/anything/really') assert m is None m = router.get_match(HttpMethod.POST, b'/b/anything/really') assert m is None m = router.get_match(HttpMethod.POST, b'/c/anything/really') assert m is None m = router.get_match(HttpMethod.POST, b'/d/anything/really') assert m is None
def test_duplicate_pattern_star_raises(): router = Router() def home(): ... def another(): ... router.add_get(b'*', home) with pytest.raises(RouteDuplicate): router.add_get(b'*', another)
def test_duplicate_pattern_raises(first_route, second_route): router = Router() def home(): ... def another(): ... router.add_get(first_route, home) with pytest.raises(RouteDuplicate): router.add_get(second_route, another)
def test_duplicate_pattern_raises(self): router = Router() def home(): pass def another(): pass router.add_get(b'/', home) with pytest.raises(RouteDuplicate): router.add_get(b'/', another)
def test_router_match_among_many(self): router = Router() def home(): pass def get_foo(): pass def create_foo(): pass def delete_foo(): pass router.add_get(b'/', home) router.add_get(b'/foo', get_foo) router.add_post(b'/foo', create_foo) router.add_delete(b'/foo', delete_foo) m = router.get_match(HttpMethod.GET, b'/') assert m is not None assert m.handler is home m = router.get_match(HttpMethod.POST, b'/') assert m is None m = router.get_match(HttpMethod.GET, b'/foo') assert m is not None assert m.handler is get_foo m = router.get_match(HttpMethod.POST, b'/foo') assert m is not None assert m.handler is create_foo m = router.get_match(HttpMethod.DELETE, b'/foo') assert m is not None assert m.handler is delete_foo
def test_router_match_any_by_extension(): router = Router() def a(): ... def b(): ... router.add_get(b'/a/*.js', a) router.add_get(b'/b/*.css', b) m = router.get_match(HttpMethod.GET, b'/a/anything/really') assert m is None m = router.get_match(HttpMethod.GET, b'/a/anything/really.js') assert m is not None assert m.handler is a assert m.values.get('tail') == 'anything/really' m = router.get_match(HttpMethod.GET, b'/b/anything/really.css') assert m is not None assert m.handler is b assert m.values.get('tail') == 'anything/really'
def test_router_match_any_by_extension(): router = Router() def a(): ... def b(): ... router.add_get("/a/*.js", a) router.add_get("/b/*.css", b) m = router.get_match(HttpMethod.GET, b"/a/anything/really") assert m is None m = router.get_match(HttpMethod.GET, b"/a/anything/really.js") assert m is not None assert m.handler is a assert m.values.get("tail") == "anything/really" m = router.get_match(HttpMethod.GET, b"/b/anything/really.css") assert m is not None assert m.handler is b assert m.values.get("tail") == "anything/really"
def test_router_match_among_many(): router = Router() def home(): ... def home_verbose(): ... def home_options(): ... def home_connect(): ... def get_foo(): ... def create_foo(): ... def patch_foo(): ... def delete_foo(): ... router.add_trace("/", home_verbose) router.add_options("/", home_options) router.add_connect("/", home_connect) router.add_get("/", home) router.add_get("/foo", get_foo) router.add_patch("/foo", patch_foo) router.add_post("/foo", create_foo) router.add_delete("/foo", delete_foo) m = router.get_match(HttpMethod.GET, b"/") assert m is not None assert m.handler is home m = router.get_match(HttpMethod.TRACE, b"/") assert m is not None assert m.handler is home_verbose m = router.get_match(HttpMethod.CONNECT, b"/") assert m is not None assert m.handler is home_connect m = router.get_match(HttpMethod.OPTIONS, b"/") assert m is not None assert m.handler is home_options m = router.get_match(HttpMethod.POST, b"/") assert m is None m = router.get_match(HttpMethod.GET, b"/foo") assert m is not None assert m.handler is get_foo m = router.get_match(HttpMethod.POST, b"/foo") assert m is not None assert m.handler is create_foo m = router.get_match(HttpMethod.PATCH, b"/foo") assert m is not None assert m.handler is patch_foo m = router.get_match(HttpMethod.DELETE, b"/foo") assert m is not None assert m.handler is delete_foo
def test_router_match_any_below(): router = Router() def a(): ... def b(): ... def c(): ... def d(): ... router.add_get("/a/*", a) router.add_get("/b/*", b) router.add_get("/c/*", c) router.add_get("/d/*", d) m = router.get_match(HttpMethod.GET, b"/a") assert m is not None assert m.handler is a assert m.values.get("tail") == "" m = router.get_match(HttpMethod.GET, b"/a/") assert m is not None assert m.handler is a assert m.values.get("tail") == "" m = router.get_match(HttpMethod.GET, b"/a/anything/really") assert m is not None assert m.handler is a assert m.values.get("tail") == "anything/really" m = router.get_match(HttpMethod.GET, b"/b/anything/really") assert m is not None assert m.handler is b assert m.values.get("tail") == "anything/really" m = router.get_match(HttpMethod.GET, b"/c/anything/really") assert m is not None assert m.handler is c assert m.values.get("tail") == "anything/really" m = router.get_match(HttpMethod.GET, b"/d/anything/really") assert m is not None assert m.handler is d assert m.values.get("tail") == "anything/really" m = router.get_match(HttpMethod.POST, b"/a/anything/really") assert m is None m = router.get_match(HttpMethod.POST, b"/b/anything/really") assert m is None m = router.get_match(HttpMethod.POST, b"/c/anything/really") assert m is None m = router.get_match(HttpMethod.POST, b"/d/anything/really") assert m is None