summaryrefslogtreecommitdiff
path: root/gitlab
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab')
-rw-r--r--gitlab/__init__.py17
-rw-r--r--gitlab/tests/test_gitlab.py38
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])