def test_mod_response(): router = Router() route1a = router.get("https://foo.bar/baz/") % 409 route1b = router.get("https://foo.bar/baz/") % 404 route2 = router.get("https://foo.bar") % dict(status_code=201) route3 = router.post("https://fox.zoo/") % httpx.Response(401, json={"error": "x"}) request = httpx.Request("GET", "https://foo.bar/baz/") resolved = router.resolve(request) assert resolved.response.status_code == 404 assert resolved.route is route1b assert route1a is route1b request = httpx.Request("GET", "https://foo.bar/") resolved = router.resolve(request) assert resolved.response.status_code == 201 assert resolved.route is route2 request = httpx.Request("POST", "https://fox.zoo/") resolved = router.resolve(request) assert resolved.response.status_code == 401 assert resolved.response.json() == {"error": "x"} assert resolved.route is route3 with pytest.raises(TypeError, match="Route can only"): router.route() % []
def test_resolve(args, kwargs, expected): router = Router(assert_all_mocked=False) route = router.route(*args, **kwargs).respond(status_code=201) request = httpx.Request( "GET", "https://foo.bar/baz/", cookies={"foo": "bar", "ham": "spam"} ) resolved = router.resolve(request) assert bool(resolved.route is route) is expected if expected: assert bool(resolved.response.status_code == 201) is expected else: assert resolved.response.status_code == 200 # auto mocked
def test_base_url(url, expected): router = Router(base_url="https://foo.bar/", assert_all_mocked=False) route = router.route(method="GET", url="/baz/").respond(201) request = httpx.Request("GET", url) matched_route, response = router.match(request) assert bool(matched_route is route) is expected if expected: assert bool(response.status_code == 201) is expected else: assert not response response = router.resolve(request) assert bool(response.status_code == 201) is expected
def test_pass_through(): router = Router(assert_all_mocked=False) route = router.route(method="GET").pass_through() request = httpx.Request("GET", "https://foo.bar/baz/") matched_route, response = router.match(request) assert matched_route is route assert matched_route.is_pass_through assert response is request route.pass_through(False) matched_route, response = router.match(request) assert matched_route is route assert not matched_route.is_pass_through assert response is not None