diff options
author | Gauvain Pocentek <gauvain.pocentek@objectif-libre.com> | 2016-01-09 00:37:46 +0100 |
---|---|---|
committer | Gauvain Pocentek <gauvain.pocentek@objectif-libre.com> | 2016-01-09 00:37:46 +0100 |
commit | 0ae315a4d1d154122208883bd006b2b882cb5113 (patch) | |
tree | 19b7422217ae01e32a9072a0aecf10bbf04f45f1 /gitlab/tests/test_config.py | |
parent | 689ecae70585e79c281224162a0ba2ab3921242a (diff) | |
download | gitlab-0ae315a4d1d154122208883bd006b2b882cb5113.tar.gz |
unit tests for config parser
Diffstat (limited to 'gitlab/tests/test_config.py')
-rw-r--r-- | gitlab/tests/test_config.py | 111 |
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) |