From 8e25cecce3c0a19884a8d231ee1a672b80e94398 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Mon, 26 Apr 2021 22:23:58 +0200 Subject: [PATCH] fix(files): do not url-encode file paths twice --- gitlab/__version__.py | 2 +- gitlab/tests/objects/test_repositories.py | 49 +++++++++++++++++++++++ gitlab/v4/objects/files.py | 1 - 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 gitlab/tests/objects/test_repositories.py diff --git a/gitlab/__version__.py b/gitlab/__version__.py index 8128e31f0..a28b9bcce 100644 --- a/gitlab/__version__.py +++ b/gitlab/__version__.py @@ -3,4 +3,4 @@ __email__ = "gauvainpocentek@gmail.com" __license__ = "LGPL3" __title__ = "python-gitlab" -__version__ = "2.7.0" +__version__ = "2.7.1" diff --git a/gitlab/tests/objects/test_repositories.py b/gitlab/tests/objects/test_repositories.py new file mode 100644 index 000000000..7c4d77d4f --- /dev/null +++ b/gitlab/tests/objects/test_repositories.py @@ -0,0 +1,49 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/repositories.html +https://docs.gitlab.com/ee/api/repository_files.html +""" +from urllib.parse import quote + +import pytest +import responses + +from gitlab.v4.objects import ProjectFile + +file_path = "app/models/key.rb" +ref = "main" + + +@pytest.fixture +def resp_get_repository_file(): + file_response = { + "file_name": "key.rb", + "file_path": file_path, + "size": 1476, + "encoding": "base64", + "content": "IyA9PSBTY2hlbWEgSW5mb3...", + "content_sha256": "4c294617b60715c1d218e61164a3abd4808a4284cbc30e6728a01ad9aada4481", + "ref": ref, + "blob_id": "79f7bbd25901e8334750839545a9bd021f0e4c83", + "commit_id": "d5a3ff139356ce33e37e73add446f16869741b50", + "last_commit_id": "570e7b2abdd848b95f2f578043fc23bd6f6fd24d", + } + + # requests also encodes `.` + encoded_path = quote(file_path, safe="").replace(".", "%2E") + + with responses.RequestsMock() as rsps: + rsps.add( + method=responses.GET, + url=f"http://localhost/api/v4/projects/1/repository/files/{encoded_path}", + json=file_response, + content_type="application/json", + status=200, + ) + yield rsps + + +def test_get_repository_file(project, resp_get_repository_file): + file = project.files.get(file_path, ref=ref) + assert isinstance(file, ProjectFile) + assert file.file_path == file_path diff --git a/gitlab/v4/objects/files.py b/gitlab/v4/objects/files.py index 9fe692f5d..5d0401f5d 100644 --- a/gitlab/v4/objects/files.py +++ b/gitlab/v4/objects/files.py @@ -94,7 +94,6 @@ def get(self, file_path, ref, **kwargs): Returns: object: The generated RESTObject """ - file_path = file_path.replace("/", "%2F") return GetMixin.get(self, file_path, ref=ref, **kwargs) @cli.register_custom_action( pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy