summaryrefslogtreecommitdiff
path: root/tests/unit/test_gitlab_auth.py
diff options
context:
space:
mode:
authorNejc Habjan <hab.nejc@gmail.com>2021-02-12 00:47:32 +0100
committerJohn Villalovos <john@sodarock.com>2022-01-02 14:35:39 -0800
commitca58008607385338aaedd14a58adc347fa1a41a0 (patch)
tree3597e79d38ad47a0841c5a773950897863a87490 /tests/unit/test_gitlab_auth.py
parente19e4d7cdf9cd04359cd3e95036675c81f4e1dc5 (diff)
downloadgitlab-ca58008607385338aaedd14a58adc347fa1a41a0.tar.gz
feat(cli): allow options from args and environment variables
BREAKING-CHANGE: The gitlab CLI will now accept CLI arguments and environment variables for its global options in addition to configuration file options. This may change behavior for some workflows such as running inside GitLab CI and with certain environment variables configured.
Diffstat (limited to 'tests/unit/test_gitlab_auth.py')
-rw-r--r--tests/unit/test_gitlab_auth.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/unit/test_gitlab_auth.py b/tests/unit/test_gitlab_auth.py
index 314fbed..8d6677f 100644
--- a/tests/unit/test_gitlab_auth.py
+++ b/tests/unit/test_gitlab_auth.py
@@ -2,6 +2,7 @@ import pytest
import requests
from gitlab import Gitlab
+from gitlab.config import GitlabConfigParser
def test_invalid_auth_args():
@@ -83,3 +84,116 @@ def test_http_auth():
assert isinstance(gl._http_auth, requests.auth.HTTPBasicAuth)
assert gl.headers["PRIVATE-TOKEN"] == "private_token"
assert "Authorization" not in gl.headers
+
+
+@pytest.mark.parametrize(
+ "options,config,expected_private_token,expected_oauth_token,expected_job_token",
+ [
+ (
+ {
+ "private_token": "options-private-token",
+ "oauth_token": "options-oauth-token",
+ "job_token": "options-job-token",
+ },
+ {
+ "private_token": "config-private-token",
+ "oauth_token": "config-oauth-token",
+ "job_token": "config-job-token",
+ },
+ "options-private-token",
+ None,
+ None,
+ ),
+ (
+ {
+ "private_token": None,
+ "oauth_token": "options-oauth-token",
+ "job_token": "options-job-token",
+ },
+ {
+ "private_token": "config-private-token",
+ "oauth_token": "config-oauth-token",
+ "job_token": "config-job-token",
+ },
+ "config-private-token",
+ None,
+ None,
+ ),
+ (
+ {
+ "private_token": None,
+ "oauth_token": None,
+ "job_token": "options-job-token",
+ },
+ {
+ "private_token": "config-private-token",
+ "oauth_token": "config-oauth-token",
+ "job_token": "config-job-token",
+ },
+ "config-private-token",
+ None,
+ None,
+ ),
+ (
+ {
+ "private_token": None,
+ "oauth_token": None,
+ "job_token": None,
+ },
+ {
+ "private_token": "config-private-token",
+ "oauth_token": "config-oauth-token",
+ "job_token": "config-job-token",
+ },
+ "config-private-token",
+ None,
+ None,
+ ),
+ (
+ {
+ "private_token": None,
+ "oauth_token": None,
+ "job_token": None,
+ },
+ {
+ "private_token": None,
+ "oauth_token": "config-oauth-token",
+ "job_token": "config-job-token",
+ },
+ None,
+ "config-oauth-token",
+ None,
+ ),
+ (
+ {
+ "private_token": None,
+ "oauth_token": None,
+ "job_token": None,
+ },
+ {
+ "private_token": None,
+ "oauth_token": None,
+ "job_token": "config-job-token",
+ },
+ None,
+ None,
+ "config-job-token",
+ ),
+ ],
+)
+def test_merge_auth(
+ options,
+ config,
+ expected_private_token,
+ expected_oauth_token,
+ expected_job_token,
+):
+ cp = GitlabConfigParser()
+ cp.private_token = config["private_token"]
+ cp.oauth_token = config["oauth_token"]
+ cp.job_token = config["job_token"]
+
+ private_token, oauth_token, job_token = Gitlab._merge_auth(options, cp)
+ assert private_token == expected_private_token
+ assert oauth_token == expected_oauth_token
+ assert job_token == expected_job_token