-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Problem
MockVWS uses urljoin to build the URL patterns it intercepts, e.g.:
url_pattern = urljoin(base=base_url, url=f"{route.path_pattern}$")Because route.path_pattern starts with / (e.g. /targets, /v1/query), Python's urljoin silently discards any path component in the base URL. So if a user configures MockVWS(base_vws_url="http://localhost/prefix"), the mock registers handlers at http://localhost/targets instead of http://localhost/prefix/targets.
The same issue affects base_vwq_url.
Impact
A client library fixed to use string concatenation (base_url.rstrip("/") + path) instead of urljoin (as done in vws-python#2867) will send requests to http://localhost/prefix/targets, which the mock won't intercept, causing ConnectionError.
This makes it impossible to write a positive integration test for path-prefix base URL support without bypassing MockVWS entirely.
Fix
Replace the urljoin call in the route-registration code with string concatenation:
url_pattern = base_url.rstrip("/") + route.path_pattern + "$"