From 2747ae68792ff0eb353a075e6ed376b25b187942 Mon Sep 17 00:00:00 2001 From: Agate <me@agate.blue> Date: Fri, 28 Aug 2020 12:06:42 +0200 Subject: [PATCH] Fix #12: sanitization error --- funkwhale_cli/utils.py | 2 ++ tests/test_cli.py | 44 ++++++++++++++++++++++++++++-------------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/funkwhale_cli/utils.py b/funkwhale_cli/utils.py index 27f3f8e..9e075a7 100644 --- a/funkwhale_cli/utils.py +++ b/funkwhale_cli/utils.py @@ -81,6 +81,8 @@ def sanitize_recursive(value): elif isinstance(value, list): return [sanitize_recursive(v) for v in value] else: + if value and str(value).startswith("/"): + value = str(value)[1:] return pathvalidate.sanitize_filepath(str(value)) diff --git a/tests/test_cli.py b/tests/test_cli.py index fb071b1..c84831c 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -211,11 +211,20 @@ def test_uploads_create_channel(cli_ctx, session, responses, get_requests, tmpdi command = cli.uploads.uploads_create upload_data = { "uuid": upload_id, - "import_metadata": {"title": "test.mp3", "album": 12, "license": "cc-by-sa-4.0"} + "import_metadata": { + "title": "test.mp3", + "album": 12, + "license": "cc-by-sa-4.0", + }, } responses.post("https://test.funkwhale/api/v1/uploads/", payload=upload_data) responses.get("https://test.funkwhale/api/v1/channels/{}/".format(channel_id)) - responses.get("https://test.funkwhale/api/v1/uploads/{}/audio-file-metadata/".format(upload_id), payload={"title": 'test title'}) + responses.get( + "https://test.funkwhale/api/v1/uploads/{}/audio-file-metadata/".format( + upload_id + ), + payload={"title": "test title"}, + ) responses.patch("https://test.funkwhale/api/v1/uploads/{}/".format(upload_id)) command.callback( @@ -234,7 +243,9 @@ def test_uploads_create_channel(cli_ctx, session, responses, get_requests, tmpdi "import_reference": "test-import", "source": "upload://test.mp3", "import_status": "draft", - "import_metadata": json.dumps({"title": "test.mp3", "album": 12, "license": "cc-by-sa-4.0"}), + "import_metadata": json.dumps( + {"title": "test.mp3", "album": 12, "license": "cc-by-sa-4.0"} + ), } upload_requests = get_requests("post", "https://test.funkwhale/api/v1/uploads/") assert len(upload_requests) == 1 @@ -246,12 +257,18 @@ def test_uploads_create_channel(cli_ctx, session, responses, get_requests, tmpdi "get", "https://test.funkwhale/api/v1/channels/{}/".format(channel_id) ) assert len(channels_requests) == 1 - publish_requests = get_requests("patch", "https://test.funkwhale/api/v1/uploads/{}/".format(upload_id)) + publish_requests = get_requests( + "patch", "https://test.funkwhale/api/v1/uploads/{}/".format(upload_id) + ) assert len(publish_requests) == 1 data = publish_requests[0].kwargs["json"] expected_data = { "import_status": "pending", - "import_metadata": {"title": "test title", "album": 12, "license": "cc-by-sa-4.0"}, + "import_metadata": { + "title": "test title", + "album": 12, + "license": "cc-by-sa-4.0", + }, } assert data == expected_data @@ -538,11 +555,11 @@ def test_channel_create_music(cli_ctx, session, responses, get_requests): username="hello", content_category="music", description="description text", - tags='punk,rock, ska', + tags="punk,rock, ska", language=None, itunes_category=None, raw=False, - _async_reraise=True + _async_reraise=True, ) requests = get_requests("post", url) @@ -568,11 +585,11 @@ def test_channel_create_podcast(cli_ctx, session, responses, get_requests): username="hello", content_category="podcast", description="description text", - tags='punk,rock, ska', + tags="punk,rock, ska", language="en", itunes_category="Leisure", raw=False, - _async_reraise=True + _async_reraise=True, ) requests = get_requests("post", url) @@ -584,10 +601,7 @@ def test_channel_create_podcast(cli_ctx, session, responses, get_requests): "content_category": "podcast", "description": {"text": "description text", "content_type": "text/markdown"}, "tags": ["punk", "rock", "ska"], - "metadata": { - "itunes_category": "Leisure", - "language": "en", - } + "metadata": {"itunes_category": "Leisure", "language": "en",}, } @@ -623,7 +637,9 @@ def test_channels_rm(cli_ctx, session, responses, get_requests): responses.delete(url + "uuid1/") responses.delete(url + "uuid2/") - command.callback(id=["uuid1", "uuid2"], raw=False, no_input=True, _async_reraise=True) + command.callback( + id=["uuid1", "uuid2"], raw=False, no_input=True, _async_reraise=True + ) assert len(get_requests("delete", url + "uuid1/")) == 1 assert len(get_requests("delete", url + "uuid2/")) == 1 -- GitLab