diff options
author | Nejc Habjan <hab.nejc@gmail.com> | 2021-02-07 12:11:12 +0100 |
---|---|---|
committer | Nejc Habjan <hab.nejc@gmail.com> | 2021-02-07 12:11:12 +0100 |
commit | 77ac807f8c66d4debfde79ea450c4e35a17c506e (patch) | |
tree | 266798ee730cf18be7e0153e140168533fad394e | |
parent | 2edd69c55fc7f4f69e119397f0d37823d3417bc6 (diff) | |
download | gitlab-feat/default-url.tar.gz |
chore(api): handle all falsy values in urlfeat/default-url
-rw-r--r-- | gitlab/__init__.py | 17 | ||||
-rw-r--r-- | gitlab/tests/test_gitlab.py | 38 |
2 files changed, 53 insertions, 2 deletions
diff --git a/gitlab/__init__.py b/gitlab/__init__.py index e1b8bb8..9c2b5cf 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -70,7 +70,7 @@ class Gitlab(object): def __init__( self, - url=DEFAULT_URL, + url=None, private_token=None, oauth_token=None, job_token=None, @@ -88,7 +88,7 @@ class Gitlab(object): self._api_version = str(api_version) self._server_version = self._server_revision = None - self._base_url = url.rstrip("/") + self._base_url = self._get_base_url(url) self._url = "%s/api/v%s" % (self._base_url, api_version) #: Timeout to use for requests to gitlab server self.timeout = timeout @@ -409,6 +409,19 @@ class Gitlab(object): "verify": self.ssl_verify, } + def _get_base_url(self, url): + """Return the base URL with the trailing slash stripped. + + If the URL is a Falsy value, return the default URL. + + Returns: + str: The base URL + """ + if not url: + return DEFAULT_URL + + return url.rstrip("/") + def _build_url(self, path): """Returns the full url from path. diff --git a/gitlab/tests/test_gitlab.py b/gitlab/tests/test_gitlab.py index 202a101..eed4699 100644 --- a/gitlab/tests/test_gitlab.py +++ b/gitlab/tests/test_gitlab.py @@ -25,8 +25,10 @@ from gitlab import Gitlab, GitlabList, DEFAULT_URL, USER_AGENT from gitlab.v4.objects import CurrentUser +localhost = "http://localhost" username = "username" user_id = 1 +token = "abc123" @urlmatch(scheme="http", netloc="localhost", path="/api/v4/user", method="get") @@ -133,6 +135,42 @@ def test_gitlab_default_url(): assert gl.url == DEFAULT_URL +@pytest.mark.parametrize( + "args, kwargs, expected_url, expected_private_token, expected_oauth_token", + [ + ([], {}, DEFAULT_URL, None, None), + ([None, token], {}, DEFAULT_URL, token, None), + ([localhost], {}, localhost, None, None), + ([localhost, token], {}, localhost, token, None), + ([localhost, None, token], {}, localhost, None, token), + ([], {"private_token": token}, DEFAULT_URL, token, None), + ([], {"oauth_token": token}, DEFAULT_URL, None, token), + ([], {"url": localhost}, localhost, None, None), + ([], {"url": localhost, "private_token": token}, localhost, token, None), + ([], {"url": localhost, "oauth_token": token}, localhost, None, token), + ], + ids=[ + "no_args", + "args_private_token", + "args_url", + "args_url_private_token", + "args_url_oauth_token", + "kwargs_private_token", + "kwargs_oauth_token", + "kwargs_url", + "kwargs_url_private_token", + "kwargs_url_oauth_token", + ], +) +def test_gitlab_args_kwargs( + args, kwargs, expected_url, expected_private_token, expected_oauth_token +): + gl = Gitlab(*args, **kwargs) + assert gl.url == expected_url + assert gl.private_token == expected_private_token + assert gl.oauth_token == expected_oauth_token + + def test_gitlab_from_config(default_config): config_path = default_config Gitlab.from_config("one", [config_path]) |