Files
python-jenkins/tests/test_version.py
Darragh Bailey c58ae7e1af Separate tests in separate files and classes
Split existing tests into separate files and classes to make it easier
to select a subset to be executed when making modifications.

Add some simple consolidations of test data as example improvements that
can be extended by consolidating complete tests or sets of tests.

Change-Id: If2380e6f4e848ba68f05868e2ef4186d7912952b
2015-08-25 01:11:47 +01:00

58 lines
2.1 KiB
Python

from mock import patch, Mock
import six
import jenkins
from tests.base import JenkinsTestBase
class JenkinsVersionTest(JenkinsTestBase):
@patch('jenkins.urlopen')
def test_some_version(self, urlopen_mock):
mock_response = Mock()
if six.PY2:
config = {'info.return_value.getheader.return_value': 'Version42'}
if six.PY3:
config = {'getheader.return_value': 'Version42'}
mock_response.configure_mock(**config)
urlopen_mock.side_effect = [mock_response]
self.assertEqual(self.j.get_version(), 'Version42')
self._check_requests(urlopen_mock.call_args_list)
@patch('jenkins.urlopen')
def test_raise_HTTPError(self, urlopen_mock):
urlopen_mock.side_effect = jenkins.HTTPError(
'http://example.com/',
code=503,
msg="internal server error",
hdrs=[],
fp=None)
with self.assertRaises(jenkins.BadHTTPException) as context_manager:
self.j.get_version()
self.assertEqual(
str(context_manager.exception),
'Error communicating with server[http://example.com/]')
self._check_requests(urlopen_mock.call_args_list)
@patch('jenkins.urlopen')
def test_raise_BadStatusLine(self, urlopen_mock):
urlopen_mock.side_effect = jenkins.BadStatusLine('not a valid status line')
with self.assertRaises(jenkins.BadHTTPException) as context_manager:
self.j.get_version()
self.assertEqual(
str(context_manager.exception),
'Error communicating with server[http://example.com/]')
self._check_requests(urlopen_mock.call_args_list)
@patch('jenkins.urlopen', return_value=None)
def test_return_empty_response(self, urlopen_mock):
with self.assertRaises(jenkins.EmptyResponseException) as context_manager:
self.j.get_version()
self.assertEqual(
str(context_manager.exception),
'Error communicating with server[http://example.com/]:'
' empty response')
self._check_requests(urlopen_mock.call_args_list)