summaryrefslogtreecommitdiff
path: root/gitlab/tests/test_config.py
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain.pocentek@objectif-libre.com>2016-01-09 00:37:46 +0100
committerGauvain Pocentek <gauvain.pocentek@objectif-libre.com>2016-01-09 00:37:46 +0100
commit0ae315a4d1d154122208883bd006b2b882cb5113 (patch)
tree19b7422217ae01e32a9072a0aecf10bbf04f45f1 /gitlab/tests/test_config.py
parent689ecae70585e79c281224162a0ba2ab3921242a (diff)
downloadgitlab-0ae315a4d1d154122208883bd006b2b882cb5113.tar.gz
unit tests for config parser
Diffstat (limited to 'gitlab/tests/test_config.py')
-rw-r--r--gitlab/tests/test_config.py111
1 files changed, 111 insertions, 0 deletions
diff --git a/gitlab/tests/test_config.py b/gitlab/tests/test_config.py
new file mode 100644
index 0000000..2b9cce4
--- /dev/null
+++ b/gitlab/tests/test_config.py
@@ -0,0 +1,111 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2016 Gauvain Pocentek <gauvain@pocentek.net>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+try:
+ import unittest
+except ImportError:
+ import unittest2 as unittest
+
+import mock
+import six
+
+from gitlab import config
+
+
+valid_config = u"""[global]
+default = one
+ssl_verify = true
+timeout = 2
+
+[one]
+url = http://one.url
+private_token = ABCDEF
+
+[two]
+url = https://two.url
+private_token = GHIJKL
+ssl_verify = false
+timeout = 10
+"""
+
+no_default_config = u"""[global]
+[there]
+url = http://there.url
+private_token = ABCDEF
+"""
+
+missing_attr_config = u"""[global]
+[one]
+url = http://one.url
+
+[two]
+private_token = ABCDEF
+
+[three]
+meh = hem
+"""
+
+
+class TestConfigParser(unittest.TestCase):
+ @mock.patch('six.moves.builtins.open')
+ def test_invalid_id(self, m_open):
+ fd = six.StringIO(no_default_config)
+ fd.close = mock.Mock(return_value=None)
+ m_open.return_value = fd
+ self.assertRaises(config.GitlabIDError, config.GitlabConfigParser)
+
+ fd = six.StringIO(valid_config)
+ fd.close = mock.Mock(return_value=None)
+ m_open.return_value = fd
+ self.assertRaises(config.GitlabDataError,
+ config.GitlabConfigParser,
+ gitlab_id='not_there')
+
+ @mock.patch('six.moves.builtins.open')
+ def test_invalid_data(self, m_open):
+ 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')
+ self.assertRaises(config.GitlabDataError, config.GitlabConfigParser,
+ gitlab_id='two')
+ self.assertRaises(config.GitlabDataError, config.GitlabConfigParser,
+ gitlab_id='three')
+
+ @mock.patch('six.moves.builtins.open')
+ def test_valid_data(self, m_open):
+ fd = six.StringIO(valid_config)
+ fd.close = mock.Mock(return_value=None)
+ m_open.return_value = fd
+
+ cp = config.GitlabConfigParser()
+ self.assertEqual("one", cp.gitlab_id)
+ self.assertEqual("http://one.url", cp.url)
+ self.assertEqual("ABCDEF", cp.token)
+ self.assertEqual(2, cp.timeout)
+ self.assertEqual(True, 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="two")
+ self.assertEqual("two", cp.gitlab_id)
+ self.assertEqual("https://two.url", cp.url)
+ self.assertEqual("GHIJKL", cp.token)
+ self.assertEqual(10, cp.timeout)
+ self.assertEqual(False, cp.ssl_verify)