from jenkinsapi.fingerprint import Fingerprint
from jenkinsapi.jenkinsbase import JenkinsBase
from jenkinsapi.utils.requester import Requester
-from jenkinsapi.custom_exceptions import UnknownJob
+from jenkinsapi.custom_exceptions import UnknownJob, BadURL
log = logging.getLogger(__name__)
def get_executors(self, nodename):
url = '%s/computer/%s' % (self.baseurl, nodename)
return Executors(url, nodename, self)
+
+ def get_version(self):
+ """
+ Return version number of Jenkins
+ """
+ r = self.requester.get_and_confirm_status(self.baseurl)
+ try:
+ return r.headers['X-jenkins']
+ except KeyError:
+ msg = '%s is not a valid Jenkins URL.' %(self.baseurl)
+ raise BadURL(msg)
from jenkinsapi.plugins import Plugins
from jenkinsapi.utils.requester import Requester
from jenkinsapi.jenkins import Jenkins, JenkinsBase, Job
-from jenkinsapi.custom_exceptions import JenkinsAPIException, UnknownJob
+from jenkinsapi.custom_exceptions import JenkinsAPIException, UnknownJob, BadURL
class TestJenkins(unittest.TestCase):
new_jenkins = J.get_jenkins_obj()
self.assertEquals(new_jenkins, J)
+ @mock.patch.object(JenkinsBase, '_poll')
+ @mock.patch.object(Jenkins, '_poll')
+ def test_get_version(self, _base_poll,_poll):
+ class MockResponse(object):
+ def __init__(self):
+ self.headers = {}
+ self.headers['X-jenkins'] = '1.542'
+ mock_requester = Requester(username='foouser', password='foopassword')
+ mock_requester.get_and_confirm_status = mock.MagicMock(return_value=MockResponse())
+ J = Jenkins('http://localhost:8080/',
+ username='foouser', password='foopassword',
+ requester=mock_requester)
+ self.assertEquals('1.542', J.get_version())
+
+ @mock.patch.object(JenkinsBase, '_poll')
+ @mock.patch.object(Jenkins, '_poll')
+ def test_get_version_exception(self, _base_poll,_poll):
+ class MockResponse(object):
+ def __init__(self):
+ self.headers = {}
+ base_url = 'http://localhost:8080'
+ mock_requester = Requester(username='foouser', password='foopassword')
+ mock_requester.get_and_confirm_status = mock.MagicMock(return_value=MockResponse())
+ J = Jenkins(base_url,
+ username='foouser', password='foopassword',
+ requester=mock_requester)
+ with self.assertRaises(BadURL) as context:
+ J.get_version()
+ msg = '%s is not a valid Jenkins URL.' %(base_url)
+ self.assertEqual(context.exception.message,msg)
class TestJenkinsURLs(unittest.TestCase):