Skip to content

Commit 0c99cde

Browse files
committed
test
1 parent 9044d22 commit 0c99cde

File tree

2 files changed

+42
-16
lines changed

2 files changed

+42
-16
lines changed

services/web/server/src/simcore_service_webserver/storage/_handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def _from_storage_url(
7777
prefix = f"/{_get_storage_vtag(request.app)}"
7878
converted_url = str(
7979
request.url.with_path(
80-
f"/v0/storage{storage_url.path.removeprefix(prefix)}"
80+
f"/v0/storage{storage_url.path.removeprefix(prefix)}", encoded=True
8181
).with_scheme(request.headers.get(X_FORWARDED_PROTO, request.url.scheme))
8282
)
8383

services/web/server/tests/unit/with_dbs/03/test_storage_handlers.py

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -197,30 +197,56 @@ def test_url_storage_resolver_helpers(faker: Faker, app_environment: EnvVarsDict
197197
)
198198
assert encoded_url.raw_parts[-1] == f"{encoded_file_id}:complete"
199199

200-
web_request = make_mocked_request("GET", str(encoded_url), app=app)
201-
web_request[RQT_USERID_KEY] = faker.pyint()
200+
encoded_web_request = make_mocked_request("GET", str(encoded_url), app=app)
201+
encoded_web_request[RQT_USERID_KEY] = faker.pyint()
202202

203203
# web -> storage
204-
storage_url = _to_storage_url(web_request)
204+
encoded_storage_url = _to_storage_url(encoded_web_request)
205205
# Something like
206206
# http://storage:123/v5/locations/0/files/e3e70...c07cd%2Ff7...55%2Ffile.py:complete?user_id=8376
207207

208-
assert storage_url.raw_parts[-1] == web_request.url.raw_parts[-1]
208+
assert encoded_storage_url.raw_parts[-1] == encoded_web_request.url.raw_parts[-1]
209209

210-
assert storage_url.host == app_environment["STORAGE_HOST"]
211-
assert storage_url.port == int(app_environment["STORAGE_PORT"])
212-
assert storage_url.query["user_id"] == str(web_request[RQT_USERID_KEY])
210+
assert encoded_storage_url.host == app_environment["STORAGE_HOST"]
211+
assert encoded_storage_url.port == int(app_environment["STORAGE_PORT"])
212+
assert encoded_storage_url.query["user_id"] == str(
213+
encoded_web_request[RQT_USERID_KEY]
214+
)
213215

214216
# storage -> web
215-
web_url: AnyUrl = _from_storage_url(
216-
web_request,
217-
TypeAdapter(AnyUrl).validate_python(f"{storage_url}"),
217+
encoded_web_url: AnyUrl = _from_storage_url(
218+
encoded_web_request,
219+
TypeAdapter(AnyUrl).validate_python(f"{encoded_storage_url}"),
218220
url_encode=None,
219221
)
220222

221-
assert storage_url.host != web_url.host
222-
assert storage_url.port != web_url.port
223+
assert encoded_storage_url.host != encoded_web_url.host
224+
assert encoded_storage_url.port != encoded_web_url.port
225+
226+
assert isinstance(encoded_storage_url, URL) # this is a bit inconvenient
227+
assert isinstance(encoded_web_url, AnyUrl)
228+
assert f"{encoded_web_url}" == f"{encoded_web_request.url}"
229+
230+
# since storage is FastAPI-base it now returns non encoded URLs
231+
non_encoded_url = URL(f"/v0/storage/locations/0/files/{file_id}:complete")
232+
non_encoded_web_request = make_mocked_request("GET", str(non_encoded_url), app=app)
233+
non_encoded_web_request[RQT_USERID_KEY] = faker.pyint()
234+
non_encoded_storage_url = _to_storage_url(non_encoded_web_request)
235+
assert (
236+
non_encoded_storage_url.raw_parts[-1]
237+
== non_encoded_web_request.url.raw_parts[-1]
238+
)
239+
assert non_encoded_storage_url.host == app_environment["STORAGE_HOST"]
240+
assert non_encoded_storage_url.port == int(app_environment["STORAGE_PORT"])
241+
assert non_encoded_storage_url.query["user_id"] == str(
242+
non_encoded_web_request[RQT_USERID_KEY]
243+
)
223244

224-
assert isinstance(storage_url, URL) # this is a bit inconvenient
225-
assert isinstance(web_url, AnyUrl)
226-
assert f"{web_url}" == f"{web_request.url}"
245+
assert (
246+
_from_storage_url(
247+
non_encoded_web_request,
248+
TypeAdapter(AnyUrl).validate_python(f"{non_encoded_storage_url}"),
249+
url_encode=file_id,
250+
).path
251+
== f"{encoded_url}"
252+
)

0 commit comments

Comments
 (0)