] = httpx._client.USE_CLIENT_DEFAULT,
extensions: typing.Optional[typing.Dict[str, typing.Any]] = None,
) -> httpx.Response:
- url = self.base_url.join(url)
+ url = self._merge_url(url)
redirect = self._choose_redirect_arg(follow_redirects, allow_redirects)
return super().request(
method,
)
app = Starlette(routes=[Mount("/second_app", app=second_app)])
client = test_client_factory(app, base_url="http://testserver/second_app")
- response = client.post("/second_app/update_session", json={"some": "data"})
+ response = client.post("/update_session", json={"some": "data"})
assert response.status_code == 200
cookie = response.headers["set-cookie"]
cookie_path_match = re.search(r"; path=(\S+);", cookie)
client = test_client_factory(app)
response = client.get("/", headers=[("x-token", "foo"), ("x-token", "bar")])
assert response.json() == {"x-token": ["foo", "bar"]}
+
+
+def test_merge_url(test_client_factory: Callable[..., TestClient]):
+ def homepage(request: Request) -> Response:
+ return Response(request.url.path)
+
+ app = Starlette(routes=[Route("/api/v1/bar", endpoint=homepage)])
+ client = test_client_factory(app, base_url="http://testserver/api/v1/")
+ response = client.get("/bar")
+ assert response.text == "/api/v1/bar"