summaryrefslogtreecommitdiff
path: root/gitlab
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab')
-rw-r--r--gitlab/__init__.py3
-rw-r--r--gitlab/cli.py5
-rw-r--r--gitlab/config.py24
-rw-r--r--gitlab/tests/test_config.py27
4 files changed, 50 insertions, 9 deletions
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index 5099349..c0f93bf 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -182,7 +182,8 @@ class Gitlab(object):
"""
config = gitlab.config.GitlabConfigParser(gitlab_id=gitlab_id,
config_files=config_files)
- return Gitlab(config.url, private_token=config.token,
+ return Gitlab(config.url, private_token=config.private_token,
+ oauth_token=config.oauth_token,
ssl_verify=config.ssl_verify, timeout=config.timeout,
http_username=config.http_username,
http_password=config.http_password,
diff --git a/gitlab/cli.py b/gitlab/cli.py
index 1ab7d62..af82c09 100644
--- a/gitlab/cli.py
+++ b/gitlab/cli.py
@@ -86,7 +86,7 @@ def _get_base_parser():
help="Verbose mode (legacy format only)",
action="store_true")
parser.add_argument("-d", "--debug",
- help="Debug mode (display HTTP requests",
+ help="Debug mode (display HTTP requests)",
action="store_true")
parser.add_argument("-c", "--config-file", action='append',
help=("Configuration file to use. Can be used "
@@ -147,7 +147,8 @@ def main():
try:
gl = gitlab.Gitlab.from_config(gitlab_id, config_files)
- gl.auth()
+ if gl.private_token or gl.oauth_token:
+ gl.auth()
except Exception as e:
die(str(e))
diff --git a/gitlab/config.py b/gitlab/config.py
index d1c29d0..9cf208c 100644
--- a/gitlab/config.py
+++ b/gitlab/config.py
@@ -53,7 +53,6 @@ class GitlabConfigParser(object):
try:
self.url = self._config.get(self.gitlab_id, 'url')
- self.token = self._config.get(self.gitlab_id, 'private_token')
except Exception:
raise GitlabDataError("Impossible to get gitlab informations from "
"configuration (%s)" % self.gitlab_id)
@@ -96,6 +95,29 @@ class GitlabConfigParser(object):
except Exception:
pass
+ self.private_token = None
+ try:
+ self.private_token = self._config.get(self.gitlab_id,
+ 'private_token')
+ except Exception:
+ pass
+
+ self.oauth_token = None
+ try:
+ self.oauth_token = self._config.get(self.gitlab_id, 'oauth_token')
+ except Exception:
+ pass
+
+ self.http_username = None
+ self.http_password = None
+ try:
+ self.http_username = self._config.get(self.gitlab_id,
+ 'http_username')
+ self.http_password = self._config.get(self.gitlab_id,
+ 'http_password')
+ except Exception:
+ pass
+
self.http_username = None
self.http_password = None
try:
diff --git a/gitlab/tests/test_config.py b/gitlab/tests/test_config.py
index 83d7daa..271fa0b 100644
--- a/gitlab/tests/test_config.py
+++ b/gitlab/tests/test_config.py
@@ -45,6 +45,10 @@ timeout = 10
url = https://three.url
private_token = MNOPQR
ssl_verify = /path/to/CA/bundle.crt
+
+[four]
+url = https://four.url
+oauth_token = STUV
"""
no_default_config = u"""[global]
@@ -85,8 +89,7 @@ class TestConfigParser(unittest.TestCase):
fd = six.StringIO(missing_attr_config)
fd.close = mock.Mock(return_value=None)
m_open.return_value = fd
- self.assertRaises(config.GitlabDataError, config.GitlabConfigParser,
- gitlab_id='one')
+ config.GitlabConfigParser('one')
self.assertRaises(config.GitlabDataError, config.GitlabConfigParser,
gitlab_id='two')
self.assertRaises(config.GitlabDataError, config.GitlabConfigParser,
@@ -101,7 +104,8 @@ class TestConfigParser(unittest.TestCase):
cp = config.GitlabConfigParser()
self.assertEqual("one", cp.gitlab_id)
self.assertEqual("http://one.url", cp.url)
- self.assertEqual("ABCDEF", cp.token)
+ self.assertEqual("ABCDEF", cp.private_token)
+ self.assertEqual(None, cp.oauth_token)
self.assertEqual(2, cp.timeout)
self.assertEqual(True, cp.ssl_verify)
@@ -111,7 +115,8 @@ class TestConfigParser(unittest.TestCase):
cp = config.GitlabConfigParser(gitlab_id="two")
self.assertEqual("two", cp.gitlab_id)
self.assertEqual("https://two.url", cp.url)
- self.assertEqual("GHIJKL", cp.token)
+ self.assertEqual("GHIJKL", cp.private_token)
+ self.assertEqual(None, cp.oauth_token)
self.assertEqual(10, cp.timeout)
self.assertEqual(False, cp.ssl_verify)
@@ -121,6 +126,18 @@ class TestConfigParser(unittest.TestCase):
cp = config.GitlabConfigParser(gitlab_id="three")
self.assertEqual("three", cp.gitlab_id)
self.assertEqual("https://three.url", cp.url)
- self.assertEqual("MNOPQR", cp.token)
+ self.assertEqual("MNOPQR", cp.private_token)
+ self.assertEqual(None, cp.oauth_token)
self.assertEqual(2, cp.timeout)
self.assertEqual("/path/to/CA/bundle.crt", cp.ssl_verify)
+
+ fd = six.StringIO(valid_config)
+ fd.close = mock.Mock(return_value=None)
+ m_open.return_value = fd
+ cp = config.GitlabConfigParser(gitlab_id="four")
+ self.assertEqual("four", cp.gitlab_id)
+ self.assertEqual("https://four.url", cp.url)
+ self.assertEqual(None, cp.private_token)
+ self.assertEqual("STUV", cp.oauth_token)
+ self.assertEqual(2, cp.timeout)
+ self.assertEqual(True, cp.ssl_verify)