Use TestWithScenarios to add additional url tests
It's important to check that we correctly handle the server url for all API calls, so ensure that the test code uses test scenarios to cover. Fix get_info() api call creation of url. Change-Id: Idb0becc4c0c56df81bc5545919e530b7a77dadc9
This commit is contained in:
		@@ -453,7 +453,7 @@ class Jenkins(object):
 | 
			
		||||
            u'name': u'my_job'}
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        url = "/".join((item, INFO))
 | 
			
		||||
        url = '/'.join((item, INFO)).lstrip('/')
 | 
			
		||||
        if query:
 | 
			
		||||
            url += query
 | 
			
		||||
        try:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
from six.moves.urllib.request import build_opener
 | 
			
		||||
from testscenarios import TestWithScenarios
 | 
			
		||||
 | 
			
		||||
import jenkins
 | 
			
		||||
 | 
			
		||||
@@ -10,18 +11,26 @@ else:
 | 
			
		||||
    import unittest
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class JenkinsTestBase(unittest.TestCase):
 | 
			
		||||
class JenkinsTestBase(TestWithScenarios, unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    crumb_data = {
 | 
			
		||||
        "crumb": "dab177f483b3dd93483ef6716d8e792d",
 | 
			
		||||
        "crumbRequestField": ".crumb",
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    scenarios = [
 | 
			
		||||
        ('base_url1', dict(base_url='http://example.com')),
 | 
			
		||||
        ('base_url2', dict(base_url='http://example.com/jenkins'))
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(JenkinsTestBase, self).setUp()
 | 
			
		||||
        self.opener = build_opener()
 | 
			
		||||
 | 
			
		||||
        self.j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        self.j = jenkins.Jenkins(self.base_url, 'test', 'test')
 | 
			
		||||
 | 
			
		||||
    def make_url(self, path):
 | 
			
		||||
        return u'{0}/{1}'.format(self.base_url, path)
 | 
			
		||||
 | 
			
		||||
    def _check_requests(self, requests):
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ class JenkinsBuildJobTest(JenkinsJobsTestBase):
 | 
			
		||||
        build_info = self.j.build_job(u'Test Job')
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
                         u'http://example.com/job/Test%20Job/build')
 | 
			
		||||
                         self.make_url('job/Test%20Job/build'))
 | 
			
		||||
        self.assertEqual(build_info, {'foo': 'bar'})
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -28,7 +28,7 @@ class JenkinsBuildJobTest(JenkinsJobsTestBase):
 | 
			
		||||
        build_info = self.j.build_job(u'a Folder/Test Job')
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
                         u'http://example.com/job/a%20Folder/job/Test%20Job/build')
 | 
			
		||||
                         self.make_url('job/a%20Folder/job/Test%20Job/build'))
 | 
			
		||||
        self.assertEqual(build_info, {'foo': 'bar'})
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -41,7 +41,7 @@ class JenkinsBuildJobTest(JenkinsJobsTestBase):
 | 
			
		||||
        build_info = self.j.build_job(u'TestJob', token='some_token')
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
                         u'http://example.com/job/TestJob/build?token=some_token')
 | 
			
		||||
                         self.make_url('job/TestJob/build?token=some_token'))
 | 
			
		||||
        self.assertEqual(build_info, {'foo': 'bar'})
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +54,7 @@ class JenkinsBuildJobTest(JenkinsJobsTestBase):
 | 
			
		||||
        build_info = self.j.build_job(u'a Folder/TestJob', token='some_token')
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
                         u'http://example.com/job/a%20Folder/job/TestJob/build?token=some_token')
 | 
			
		||||
                         self.make_url('job/a%20Folder/job/TestJob/build?token=some_token'))
 | 
			
		||||
        self.assertEqual(build_info, {'foo': 'bar'})
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ class JenkinsGetJobConfigTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/Test%20Job/config.xml')
 | 
			
		||||
            self.make_url('job/Test%20Job/config.xml'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -21,5 +21,5 @@ class JenkinsGetJobConfigTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20folder/job/Test%20Job/config.xml')
 | 
			
		||||
            self.make_url('job/a%20folder/job/Test%20Job/config.xml'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -19,8 +19,7 @@ class JenkinsCopyJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/createItem'
 | 
			
		||||
            '?name=Test%20Job_2&mode=copy&from=Test%20Job')
 | 
			
		||||
            self.make_url('createItem?name=Test%20Job_2&mode=copy&from=Test%20Job'))
 | 
			
		||||
        self.assertTrue(self.j.job_exists('Test Job_2'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -36,8 +35,8 @@ class JenkinsCopyJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/createItem'
 | 
			
		||||
            '?name=Test%20Job_2&mode=copy&from=Test%20Job')
 | 
			
		||||
            self.make_url('job/a%20Folder/createItem?name=Test%20Job_2'
 | 
			
		||||
                          '&mode=copy&from=Test%20Job'))
 | 
			
		||||
        self.assertTrue(self.j.job_exists('a Folder/Test Job_2'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -52,8 +51,7 @@ class JenkinsCopyJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.copy_job(u'TestJob', u'TestJob_2')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/createItem'
 | 
			
		||||
            '?name=TestJob_2&mode=copy&from=TestJob')
 | 
			
		||||
            self.make_url('createItem?name=TestJob_2&mode=copy&from=TestJob'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'create[TestJob_2] failed')
 | 
			
		||||
@@ -70,8 +68,8 @@ class JenkinsCopyJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.copy_job(u'a Folder/TestJob', u'a Folder/TestJob_2')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/createItem'
 | 
			
		||||
            '?name=TestJob_2&mode=copy&from=TestJob')
 | 
			
		||||
            self.make_url('job/a%20Folder/createItem?name=TestJob_2&mode=copy'
 | 
			
		||||
                          '&from=TestJob'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'create[a Folder/TestJob_2] failed')
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ class JenkinsCreateJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/createItem?name=Test%20Job')
 | 
			
		||||
            self.make_url('createItem?name=Test%20Job'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -34,7 +34,7 @@ class JenkinsCreateJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/createItem?name=Test%20Job')
 | 
			
		||||
            self.make_url('job/a%20Folder/createItem?name=Test%20Job'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -48,7 +48,7 @@ class JenkinsCreateJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.create_job(u'TestJob', self.config_xml)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/TestJob/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'job[TestJob] already exists')
 | 
			
		||||
@@ -65,7 +65,7 @@ class JenkinsCreateJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.create_job(u'a Folder/TestJob', self.config_xml)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'job[a Folder/TestJob] already exists')
 | 
			
		||||
@@ -83,10 +83,10 @@ class JenkinsCreateJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.create_job(u'TestJob', self.config_xml)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/TestJob/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/createItem?name=TestJob')
 | 
			
		||||
            self.make_url('createItem?name=TestJob'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'create[TestJob] failed')
 | 
			
		||||
@@ -104,10 +104,10 @@ class JenkinsCreateJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.create_job(u'a Folder/TestJob', self.config_xml)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/createItem?name=TestJob')
 | 
			
		||||
            self.make_url('job/a%20Folder/createItem?name=TestJob'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'create[a Folder/TestJob] failed')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ class JenkinsDebugJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/Test%20Job/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/Test%20Job/api/json?depth=0'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -38,5 +38,5 @@ class JenkinsDebugJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/Test%20Job/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/api/json?depth=0'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ class JenkinsDeleteJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/Test%20Job/doDelete')
 | 
			
		||||
            self.make_url('job/Test%20Job/doDelete'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -32,7 +32,7 @@ class JenkinsDeleteJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/Test%20Job/doDelete')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/doDelete'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -47,7 +47,7 @@ class JenkinsDeleteJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.delete_job(u'TestJob')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob/doDelete')
 | 
			
		||||
            self.make_url('job/TestJob/doDelete'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'delete[TestJob] failed')
 | 
			
		||||
@@ -65,7 +65,7 @@ class JenkinsDeleteJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.delete_job(u'a Folder/TestJob')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/doDelete')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/doDelete'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'delete[a Folder/TestJob] failed')
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ class JenkinsDisableJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/Test%20Job/disable')
 | 
			
		||||
            self.make_url('job/Test%20Job/disable'))
 | 
			
		||||
        self.assertTrue(self.j.job_exists('Test Job'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -33,6 +33,6 @@ class JenkinsDisableJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/Test%20Job/disable')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/disable'))
 | 
			
		||||
        self.assertTrue(self.j.job_exists('a Folder/Test Job'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ class JenkinsEnableJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob/enable')
 | 
			
		||||
            self.make_url('job/TestJob/enable'))
 | 
			
		||||
        self.assertTrue(self.j.job_exists('TestJob'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -33,6 +33,6 @@ class JenkinsEnableJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/enable')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/enable'))
 | 
			
		||||
        self.assertTrue(self.j.job_exists('a Folder/TestJob'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -24,13 +24,13 @@ class JenkinsGetJobsTest(JenkinsGetJobsTestBase):
 | 
			
		||||
        self.assertEqual(job_info, [jobs])
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json?tree=jobs[url,color,name,jobs]')
 | 
			
		||||
            self.make_url('api/json?tree=jobs[url,color,name,jobs]'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_folders_simple(self, jenkins_mock):
 | 
			
		||||
        response = build_jobs_list_responses(
 | 
			
		||||
            self.jobs_in_folder, 'http://example.com/')
 | 
			
		||||
            self.jobs_in_folder, self.make_url(''))
 | 
			
		||||
        jenkins_mock.side_effect = iter(response)
 | 
			
		||||
 | 
			
		||||
        jobs_info = self.j.get_jobs()
 | 
			
		||||
@@ -45,7 +45,7 @@ class JenkinsGetJobsTest(JenkinsGetJobsTestBase):
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_folders_additional_level(self, jenkins_mock):
 | 
			
		||||
        response = build_jobs_list_responses(
 | 
			
		||||
            self.jobs_in_folder, 'http://example.com/')
 | 
			
		||||
            self.jobs_in_folder, self.make_url(''))
 | 
			
		||||
        jenkins_mock.side_effect = iter(response)
 | 
			
		||||
 | 
			
		||||
        jobs_info = self.j.get_jobs(folder_depth=1)
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ class JenkinsGetJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
        self.assertEqual(job_info, job_info_to_return)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/Test%20Job/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/Test%20Job/api/json?depth=0'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -40,7 +40,7 @@ class JenkinsGetJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
        self.assertEqual(job_info, job_info_to_return)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/Test%20Job/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/api/json?depth=0'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -71,7 +71,7 @@ class JenkinsGetJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.get_job_info(u'TestJob')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/TestJob/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/TestJob/api/json?depth=0'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'job[TestJob] does not exist')
 | 
			
		||||
@@ -85,7 +85,7 @@ class JenkinsGetJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.get_job_info(u'TestJob')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/TestJob/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/TestJob/api/json?depth=0'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Could not parse JSON info for job[TestJob]')
 | 
			
		||||
@@ -94,7 +94,7 @@ class JenkinsGetJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob/api/json?depth=0',
 | 
			
		||||
            self.make_url('job/TestJob/api/json?depth=0'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -104,7 +104,7 @@ class JenkinsGetJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.get_job_info(u'TestJob')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/TestJob/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/TestJob/api/json?depth=0'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'job[TestJob] does not exist')
 | 
			
		||||
@@ -113,7 +113,7 @@ class JenkinsGetJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_in_folder_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/api/json?depth=0',
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/api/json?depth=0'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -123,7 +123,7 @@ class JenkinsGetJobInfoTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.get_job_info(u'a Folder/TestJob')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/TestJob/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/api/json?depth=0'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'job[a Folder/TestJob] does not exist')
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ class JenkinsGetJobNameTest(JenkinsJobsTestBase):
 | 
			
		||||
        self.assertEqual(job_name, 'Test Job')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/Test%20Job/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/Test%20Job/api/json?tree=name'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -30,7 +30,7 @@ class JenkinsGetJobNameTest(JenkinsJobsTestBase):
 | 
			
		||||
        self.assertEqual(job_name, 'Test Job')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/Test%20Job/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/api/json?tree=name'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -42,7 +42,7 @@ class JenkinsGetJobNameTest(JenkinsJobsTestBase):
 | 
			
		||||
        self.assertEqual(job_name, None)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/TestJob/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/TestJob/api/json?tree=name'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -54,7 +54,7 @@ class JenkinsGetJobNameTest(JenkinsJobsTestBase):
 | 
			
		||||
        self.assertEqual(job_name, None)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/TestJob/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/api/json?tree=name'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -66,7 +66,7 @@ class JenkinsGetJobNameTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.get_job_name(u'TestJob')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/TestJob/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Jenkins returned an unexpected job name {0} '
 | 
			
		||||
@@ -82,7 +82,7 @@ class JenkinsGetJobNameTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.get_job_name(u'a Folder/TestJob')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/api/json?tree=name')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Jenkins returned an unexpected job name {0} (expected: '
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ class JenkinsReconfigJobTest(JenkinsJobsTestBase):
 | 
			
		||||
        self.j.reconfig_job(u'Test Job', self.config_xml)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
                         u'http://example.com/job/Test%20Job/config.xml')
 | 
			
		||||
                         self.make_url('job/Test%20Job/config.xml'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -30,5 +30,5 @@ class JenkinsReconfigJobTest(JenkinsJobsTestBase):
 | 
			
		||||
        self.j.reconfig_job(u'a Folder/Test Job', self.config_xml)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
                         u'http://example.com/job/a%20Folder/job/Test%20Job/config.xml')
 | 
			
		||||
                         self.make_url('job/a%20Folder/job/Test%20Job/config.xml'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ class JenkinsRenameJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/Test%20Job/doRename?newName=Test%20Job_2')
 | 
			
		||||
            self.make_url('job/Test%20Job/doRename?newName=Test%20Job_2'))
 | 
			
		||||
        self.assertTrue(self.j.job_exists('Test Job_2'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -35,7 +35,7 @@ class JenkinsRenameJobTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/Test%20Job/doRename?newName=Test%20Job_2')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/doRename?newName=Test%20Job_2'))
 | 
			
		||||
        self.assertTrue(self.j.job_exists('Test Job_2'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -50,7 +50,7 @@ class JenkinsRenameJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.rename_job(u'TestJob', u'TestJob_2')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob/doRename?newName=TestJob_2')
 | 
			
		||||
            self.make_url('job/TestJob/doRename?newName=TestJob_2'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'rename[TestJob_2] failed')
 | 
			
		||||
@@ -67,7 +67,7 @@ class JenkinsRenameJobTest(JenkinsJobsTestBase):
 | 
			
		||||
            self.j.rename_job(u'a Folder/TestJob', u'a Folder/TestJob_2')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/doRename?newName=TestJob_2')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/doRename?newName=TestJob_2'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'rename[a Folder/TestJob_2] failed')
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ class JenkinsSetNextBuildNumberTest(JenkinsJobsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/TestJob/nextbuildnumber/submit')
 | 
			
		||||
            self.make_url('job/TestJob/nextbuildnumber/submit'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].data,
 | 
			
		||||
            b'nextBuildNumber=1234')
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ class JenkinsBuildConsoleTest(JenkinsTestBase):
 | 
			
		||||
        self.assertEqual(build_info, jenkins_mock.return_value)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/Test%20Job/52/consoleText')
 | 
			
		||||
            self.make_url('job/Test%20Job/52/consoleText'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -28,7 +28,7 @@ class JenkinsBuildConsoleTest(JenkinsTestBase):
 | 
			
		||||
        self.assertEqual(build_info, jenkins_mock.return_value)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/Test%20Job/52/consoleText')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/52/consoleText'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -64,7 +64,7 @@ class JenkinsBuildConsoleTest(JenkinsTestBase):
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob/52/consoleText',
 | 
			
		||||
            self.make_url('job/TestJob/52/consoleText'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -74,7 +74,7 @@ class JenkinsBuildConsoleTest(JenkinsTestBase):
 | 
			
		||||
            self.j.get_build_console_output(u'TestJob', number=52)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/TestJob/52/consoleText')
 | 
			
		||||
            self.make_url('job/TestJob/52/consoleText'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'job[TestJob] number[52] does not exist')
 | 
			
		||||
@@ -83,7 +83,7 @@ class JenkinsBuildConsoleTest(JenkinsTestBase):
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_in_folder_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/52/consoleText',
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/52/consoleText'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -93,7 +93,7 @@ class JenkinsBuildConsoleTest(JenkinsTestBase):
 | 
			
		||||
            self.j.get_build_console_output(u'a Folder/TestJob', number=52)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/TestJob/52/consoleText')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/52/consoleText'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'job[a Folder/TestJob] number[52] does not exist')
 | 
			
		||||
@@ -117,7 +117,7 @@ class JenkinsBuildInfoTest(JenkinsTestBase):
 | 
			
		||||
        self.assertEqual(build_info, build_info_to_return)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/Test%20Job/52/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/Test%20Job/52/api/json?depth=0'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -135,7 +135,7 @@ class JenkinsBuildInfoTest(JenkinsTestBase):
 | 
			
		||||
        self.assertEqual(build_info, build_info_to_return)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/Test%20Job/52/api/json?depth=0')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/52/api/json?depth=0'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -163,7 +163,7 @@ class JenkinsBuildInfoTest(JenkinsTestBase):
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob/api/json?depth=0',
 | 
			
		||||
            self.make_url('job/TestJob/api/json?depth=0'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -179,7 +179,7 @@ class JenkinsBuildInfoTest(JenkinsTestBase):
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_in_folder_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/a%20Folder/job/TestJob/api/json?depth=0',
 | 
			
		||||
            self.make_url('job/a%20Folder/job/TestJob/api/json?depth=0'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -201,7 +201,7 @@ class JenkinsStopBuildTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/Test%20Job/52/stop')
 | 
			
		||||
            self.make_url('job/Test%20Job/52/stop'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -211,7 +211,7 @@ class JenkinsStopBuildTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/job/a%20Folder/job/Test%20Job/52/stop')
 | 
			
		||||
            self.make_url('job/a%20Folder/job/Test%20Job/52/stop'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,13 @@ class JenkinsInfoTest(JenkinsTestBase):
 | 
			
		||||
        self.assertEqual(job_info, job_info_to_return)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json')
 | 
			
		||||
            self.make_url('api/json'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob/api/json?depth=0',
 | 
			
		||||
            self.make_url('job/TestJob/api/json?depth=0'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -39,10 +39,10 @@ class JenkinsInfoTest(JenkinsTestBase):
 | 
			
		||||
            self.j.get_info()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json')
 | 
			
		||||
            self.make_url('api/json'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -53,10 +53,10 @@ class JenkinsInfoTest(JenkinsTestBase):
 | 
			
		||||
            self.j.get_info()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json')
 | 
			
		||||
            self.make_url('api/json'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -67,25 +67,25 @@ class JenkinsInfoTest(JenkinsTestBase):
 | 
			
		||||
            self.j.get_info()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json')
 | 
			
		||||
            self.make_url('api/json'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Could not parse JSON info for server[http://example.com/]')
 | 
			
		||||
            'Could not parse JSON info for server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_return_empty_response(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.JenkinsException(
 | 
			
		||||
            "Error communicating with server[http://example.com/]: "
 | 
			
		||||
            "empty response")
 | 
			
		||||
            "Error communicating with server[{0}/]: empty response".
 | 
			
		||||
            format(self.base_url))
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(jenkins.JenkinsException) as context_manager:
 | 
			
		||||
            self.j.get_info()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json')
 | 
			
		||||
            self.make_url('api/json'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]: '
 | 
			
		||||
            'empty response')
 | 
			
		||||
            'Error communicating with server[{0}/]: '
 | 
			
		||||
            'empty response'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -18,27 +18,27 @@ def get_mock_urlopen_return_value(a_dict=None):
 | 
			
		||||
class JenkinsConstructorTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
    def test_url_with_trailing_slash(self):
 | 
			
		||||
        self.assertEqual(self.j.server, 'http://example.com/')
 | 
			
		||||
        self.assertEqual(self.j.server, self.make_url(''))
 | 
			
		||||
        self.assertEqual(self.j.auth, b'Basic dGVzdDp0ZXN0')
 | 
			
		||||
        self.assertEqual(self.j.crumb, None)
 | 
			
		||||
 | 
			
		||||
    def test_url_without_trailing_slash(self):
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com', 'test', 'test')
 | 
			
		||||
        self.assertEqual(j.server, 'http://example.com/')
 | 
			
		||||
        j = jenkins.Jenkins(self.base_url, 'test', 'test')
 | 
			
		||||
        self.assertEqual(j.server, self.make_url(''))
 | 
			
		||||
        self.assertEqual(j.auth, b'Basic dGVzdDp0ZXN0')
 | 
			
		||||
        self.assertEqual(j.crumb, None)
 | 
			
		||||
 | 
			
		||||
    def test_without_user_or_password(self):
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com')
 | 
			
		||||
        self.assertEqual(j.server, 'http://example.com/')
 | 
			
		||||
        j = jenkins.Jenkins('{0}'.format(self.base_url))
 | 
			
		||||
        self.assertEqual(j.server, self.make_url(''))
 | 
			
		||||
        self.assertEqual(j.auth, None)
 | 
			
		||||
        self.assertEqual(j.crumb, None)
 | 
			
		||||
 | 
			
		||||
    def test_unicode_password(self):
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com',
 | 
			
		||||
        j = jenkins.Jenkins('{0}'.format(self.base_url),
 | 
			
		||||
                            six.u('nonascii'),
 | 
			
		||||
                            six.u('\xe9\u20ac'))
 | 
			
		||||
        self.assertEqual(j.server, 'http://example.com/')
 | 
			
		||||
        self.assertEqual(j.server, self.make_url(''))
 | 
			
		||||
        self.assertEqual(j.auth, b'Basic bm9uYXNjaWk6w6nigqw=')
 | 
			
		||||
        self.assertEqual(j.crumb, None)
 | 
			
		||||
 | 
			
		||||
@@ -46,18 +46,18 @@ class JenkinsConstructorTest(JenkinsTestBase):
 | 
			
		||||
        long_str = 'a' * 60
 | 
			
		||||
        long_str_b64 = 'YWFh' * 20
 | 
			
		||||
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com', long_str, long_str)
 | 
			
		||||
        j = jenkins.Jenkins('{0}'.format(self.base_url), long_str, long_str)
 | 
			
		||||
 | 
			
		||||
        self.assertNotIn(b"\n", j.auth)
 | 
			
		||||
        self.assertEqual(j.auth.decode('utf-8'), 'Basic %s' % (
 | 
			
		||||
            long_str_b64 + 'Om' + long_str_b64[2:] + 'YQ=='))
 | 
			
		||||
 | 
			
		||||
    def test_default_timeout(self):
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com')
 | 
			
		||||
        j = jenkins.Jenkins('{0}'.format(self.base_url))
 | 
			
		||||
        self.assertEqual(j.timeout, socket._GLOBAL_DEFAULT_TIMEOUT)
 | 
			
		||||
 | 
			
		||||
    def test_custom_timeout(self):
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com', timeout=300)
 | 
			
		||||
        j = jenkins.Jenkins('{0}'.format(self.base_url), timeout=300)
 | 
			
		||||
        self.assertEqual(j.timeout, 300)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -66,13 +66,13 @@ class JenkinsMaybeAddCrumbTest(JenkinsTestBase):
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
    def test_simple(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.NotFoundException()
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        self.j.maybe_add_crumb(request)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/crumbIssuer/api/json')
 | 
			
		||||
            self.make_url('crumbIssuer/api/json'))
 | 
			
		||||
        self.assertFalse(self.j.crumb)
 | 
			
		||||
        self.assertFalse('.crumb' in request.headers)
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
@@ -80,13 +80,13 @@ class JenkinsMaybeAddCrumbTest(JenkinsTestBase):
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
    def test_with_data(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.return_value = get_mock_urlopen_return_value(self.crumb_data)
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        self.j.maybe_add_crumb(request)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/crumbIssuer/api/json')
 | 
			
		||||
            self.make_url('crumbIssuer/api/json'))
 | 
			
		||||
        self.assertEqual(self.j.crumb, self.crumb_data)
 | 
			
		||||
        self.assertEqual(request.headers['.crumb'], self.crumb_data['crumb'])
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
@@ -95,13 +95,13 @@ class JenkinsMaybeAddCrumbTest(JenkinsTestBase):
 | 
			
		||||
    def test_return_empty_response(self, jenkins_mock):
 | 
			
		||||
        "Don't try to create crumb header from an empty response"
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.EmptyResponseException("empty response")
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        self.j.maybe_add_crumb(request)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/crumbIssuer/api/json')
 | 
			
		||||
            self.make_url('crumbIssuer/api/json'))
 | 
			
		||||
        self.assertFalse(self.j.crumb)
 | 
			
		||||
        self.assertFalse('.crumb' in request.headers)
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
@@ -116,13 +116,13 @@ class JenkinsOpenTest(JenkinsTestBase):
 | 
			
		||||
            get_mock_urlopen_return_value(self.crumb_data),
 | 
			
		||||
            get_mock_urlopen_return_value(data),
 | 
			
		||||
        ]
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        response = self.j.jenkins_open(request)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob')
 | 
			
		||||
            self.make_url('job/TestJob'))
 | 
			
		||||
        self.assertEqual(response, json.dumps(data))
 | 
			
		||||
        self.assertEqual(self.j.crumb, self.crumb_data)
 | 
			
		||||
        self.assertEqual(request.headers['.crumb'], self.crumb_data['crumb'])
 | 
			
		||||
@@ -131,12 +131,12 @@ class JenkinsOpenTest(JenkinsTestBase):
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
    def test_response_403(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob',
 | 
			
		||||
            self.make_url('job/TestJob'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
            fp=None)
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(jenkins.JenkinsException) as context_manager:
 | 
			
		||||
            self.j.jenkins_open(request, add_crumb=False)
 | 
			
		||||
@@ -146,18 +146,18 @@ class JenkinsOpenTest(JenkinsTestBase):
 | 
			
		||||
            'basic auth failed')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob')
 | 
			
		||||
            self.make_url('job/TestJob'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
    def test_response_404(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob',
 | 
			
		||||
            self.make_url('job/TestJob'),
 | 
			
		||||
            code=404,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
            fp=None)
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(jenkins.NotFoundException) as context_manager:
 | 
			
		||||
            self.j.jenkins_open(request, add_crumb=False)
 | 
			
		||||
@@ -166,35 +166,35 @@ class JenkinsOpenTest(JenkinsTestBase):
 | 
			
		||||
            'Requested item could not be found')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob')
 | 
			
		||||
            self.make_url('job/TestJob'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
    def test_empty_response(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.return_value = Mock(**{'read.return_value': None})
 | 
			
		||||
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(jenkins.JenkinsException) as context_manager:
 | 
			
		||||
            self.j.jenkins_open(request, False)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]: '
 | 
			
		||||
            'empty response')
 | 
			
		||||
            'Error communicating with server[{0}/]: '
 | 
			
		||||
            'empty response'.format(self.base_url))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob')
 | 
			
		||||
            self.make_url('job/TestJob'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
    def test_response_501(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob',
 | 
			
		||||
            self.make_url('job/TestJob'),
 | 
			
		||||
            code=501,
 | 
			
		||||
            msg="Not implemented",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
            fp=None)
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(HTTPError) as context_manager:
 | 
			
		||||
            self.j.jenkins_open(request, add_crumb=False)
 | 
			
		||||
@@ -203,15 +203,15 @@ class JenkinsOpenTest(JenkinsTestBase):
 | 
			
		||||
            'HTTP Error 501: Not implemented')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob')
 | 
			
		||||
            self.make_url('job/TestJob'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
    def test_timeout(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.URLError(
 | 
			
		||||
            reason="timed out")
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test', timeout=1)
 | 
			
		||||
        request = jenkins.Request('http://example.com/job/TestJob')
 | 
			
		||||
        j = jenkins.Jenkins(self.make_url(''), 'test', 'test', timeout=1)
 | 
			
		||||
        request = jenkins.Request(self.make_url('job/TestJob'))
 | 
			
		||||
 | 
			
		||||
        with self.assertRaises(jenkins.JenkinsException) as context_manager:
 | 
			
		||||
            j.jenkins_open(request, add_crumb=False)
 | 
			
		||||
@@ -220,5 +220,5 @@ class JenkinsOpenTest(JenkinsTestBase):
 | 
			
		||||
            'Error in request: timed out')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/job/TestJob')
 | 
			
		||||
            self.make_url('job/TestJob'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -43,10 +43,10 @@ class JenkinsGetNodesTest(JenkinsNodesTestBase):
 | 
			
		||||
            self.j.get_nodes()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/api/json')
 | 
			
		||||
            self.make_url('computer/api/json'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Could not parse JSON info for server[http://example.com/]')
 | 
			
		||||
            'Could not parse JSON info for server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
@@ -56,13 +56,13 @@ class JenkinsGetNodesTest(JenkinsNodesTestBase):
 | 
			
		||||
            self.j.get_nodes()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(urlopen_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob',
 | 
			
		||||
            self.make_url('job/TestJob'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -72,10 +72,10 @@ class JenkinsGetNodesTest(JenkinsNodesTestBase):
 | 
			
		||||
            self.j.get_nodes()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/api/json')
 | 
			
		||||
            self.make_url('computer/api/json'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -90,7 +90,7 @@ class JenkinsGetNodeInfoTest(JenkinsNodesTestBase):
 | 
			
		||||
        self.assertEqual(self.j.get_node_info('test node'), self.node_info)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test%20node/api/json?depth=0')
 | 
			
		||||
            self.make_url('computer/test%20node/api/json?depth=0'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -103,7 +103,7 @@ class JenkinsGetNodeInfoTest(JenkinsNodesTestBase):
 | 
			
		||||
            self.j.get_node_info('test_node')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test_node/api/json?depth=0')
 | 
			
		||||
            self.make_url('computer/test_node/api/json?depth=0'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Could not parse JSON info for node[test_node]')
 | 
			
		||||
@@ -112,7 +112,7 @@ class JenkinsGetNodeInfoTest(JenkinsNodesTestBase):
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/TestJob',
 | 
			
		||||
            self.make_url('job/TestJob'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -122,7 +122,7 @@ class JenkinsGetNodeInfoTest(JenkinsNodesTestBase):
 | 
			
		||||
            self.j.get_node_info('test_node')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test_node/api/json?depth=0')
 | 
			
		||||
            self.make_url('computer/test_node/api/json?depth=0'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'node[test_node] does not exist')
 | 
			
		||||
@@ -166,7 +166,7 @@ class JenkinsDeleteNodeTest(JenkinsNodesTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test%20node/doDelete')
 | 
			
		||||
            self.make_url('computer/test%20node/doDelete'))
 | 
			
		||||
        self.assertFalse(self.j.node_exists('test node'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -182,7 +182,7 @@ class JenkinsDeleteNodeTest(JenkinsNodesTestBase):
 | 
			
		||||
            self.j.delete_node('test_node')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test_node/doDelete')
 | 
			
		||||
            self.make_url('computer/test_node/doDelete'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'delete[test_node] failed')
 | 
			
		||||
@@ -204,7 +204,7 @@ class JenkinsCreateNodeTest(JenkinsNodesTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url().split('?')[0],
 | 
			
		||||
            'http://example.com/computer/doCreateItem')
 | 
			
		||||
            self.make_url('computer/doCreateItem'))
 | 
			
		||||
        self.assertTrue(self.j.node_exists('test node'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
@@ -234,7 +234,7 @@ class JenkinsCreateNodeTest(JenkinsNodesTestBase):
 | 
			
		||||
            self.j.create_node('test_node')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url().split('?')[0],
 | 
			
		||||
            'http://example.com/computer/doCreateItem')
 | 
			
		||||
            self.make_url('computer/doCreateItem'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'create[test_node] failed')
 | 
			
		||||
@@ -254,8 +254,8 @@ class JenkinsEnableNodeTest(JenkinsNodesTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test%20node/' +
 | 
			
		||||
            'toggleOffline?offlineMessage=')
 | 
			
		||||
            '{0}/computer/test%20node/'
 | 
			
		||||
            'toggleOffline?offlineMessage='.format(self.base_url))
 | 
			
		||||
 | 
			
		||||
        jenkins_mock.side_effect = [json.dumps(self.online_node_info)]
 | 
			
		||||
        node_info = self.j.get_node_info('test node')
 | 
			
		||||
@@ -275,7 +275,7 @@ class JenkinsEnableNodeTest(JenkinsNodesTestBase):
 | 
			
		||||
        # Last call to jenkins was to check status
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test_node/api/json?depth=0')
 | 
			
		||||
            self.make_url('computer/test_node/api/json?depth=0'))
 | 
			
		||||
 | 
			
		||||
        jenkins_mock.side_effect = [json.dumps(self.online_node_info)]
 | 
			
		||||
        node_info = self.j.get_node_info('test_node')
 | 
			
		||||
@@ -296,8 +296,8 @@ class JenkinsDisableNodeTest(JenkinsNodesTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test%20node/' +
 | 
			
		||||
            'toggleOffline?offlineMessage=')
 | 
			
		||||
            '{0}/computer/test%20node/'
 | 
			
		||||
            'toggleOffline?offlineMessage='.format(self.base_url))
 | 
			
		||||
 | 
			
		||||
        jenkins_mock.side_effect = [json.dumps(self.offline_node_info)]
 | 
			
		||||
        node_info = self.j.get_node_info('test node')
 | 
			
		||||
@@ -317,7 +317,7 @@ class JenkinsDisableNodeTest(JenkinsNodesTestBase):
 | 
			
		||||
        # Last call to jenkins was to check status
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/computer/test_node/api/json?depth=0')
 | 
			
		||||
            self.make_url('computer/test_node/api/json?depth=0'))
 | 
			
		||||
 | 
			
		||||
        jenkins_mock.side_effect = [json.dumps(self.offline_node_info)]
 | 
			
		||||
        node_info = self.j.get_node_info('test_node')
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@
 | 
			
		||||
 | 
			
		||||
import json
 | 
			
		||||
from mock import patch
 | 
			
		||||
from testscenarios.testcase import TestWithScenarios
 | 
			
		||||
from testscenarios.scenarios import multiply_scenarios
 | 
			
		||||
 | 
			
		||||
import jenkins
 | 
			
		||||
from jenkins import plugins
 | 
			
		||||
@@ -84,7 +84,7 @@ class JenkinsPluginsInfoTest(JenkinsPluginsBase):
 | 
			
		||||
        self.assertEqual(plugins_info, self.plugin_info_json['plugins'])
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/pluginManager/api/json?depth=2')
 | 
			
		||||
            self.make_url('pluginManager/api/json?depth=2'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -104,7 +104,7 @@ class JenkinsPluginsInfoTest(JenkinsPluginsBase):
 | 
			
		||||
        self.j.get_plugins_info(depth=1)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/pluginManager/api/json?depth=1')
 | 
			
		||||
            self.make_url('pluginManager/api/json?depth=1'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -115,10 +115,10 @@ class JenkinsPluginsInfoTest(JenkinsPluginsBase):
 | 
			
		||||
            self.j.get_plugins_info()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/pluginManager/api/json?depth=2')
 | 
			
		||||
            self.make_url('pluginManager/api/json?depth=2'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -129,16 +129,16 @@ class JenkinsPluginsInfoTest(JenkinsPluginsBase):
 | 
			
		||||
            self.j.get_plugins_info()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/pluginManager/api/json?depth=2')
 | 
			
		||||
            self.make_url('pluginManager/api/json?depth=2'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Could not parse JSON info for server[http://example.com/]')
 | 
			
		||||
            'Could not parse JSON info for server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/pluginManager/api/json?depth=2',
 | 
			
		||||
            self.make_url('job/pluginManager/api/json?depth=2'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -148,7 +148,7 @@ class JenkinsPluginsInfoTest(JenkinsPluginsBase):
 | 
			
		||||
            self.j.get_plugins_info(depth=52)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -179,7 +179,7 @@ class JenkinsPluginInfoTest(JenkinsPluginsBase):
 | 
			
		||||
            json.dumps(self.plugin_info_json),
 | 
			
		||||
            json.dumps(self.updated_plugin_info_json)
 | 
			
		||||
        ]
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
 | 
			
		||||
 | 
			
		||||
        plugins_info = j.get_plugins()
 | 
			
		||||
        self.assertEqual(plugins_info["mailer"]["version"],
 | 
			
		||||
@@ -210,7 +210,7 @@ class JenkinsPluginInfoTest(JenkinsPluginsBase):
 | 
			
		||||
        self.j.get_plugin_info('test', depth=1)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/pluginManager/api/json?depth=1')
 | 
			
		||||
            self.make_url('pluginManager/api/json?depth=1'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -221,10 +221,10 @@ class JenkinsPluginInfoTest(JenkinsPluginsBase):
 | 
			
		||||
            self.j.get_plugin_info('test')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/pluginManager/api/json?depth=2')
 | 
			
		||||
            self.make_url('pluginManager/api/json?depth=2'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -235,16 +235,16 @@ class JenkinsPluginInfoTest(JenkinsPluginsBase):
 | 
			
		||||
            self.j.get_plugin_info('test')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/pluginManager/api/json?depth=2')
 | 
			
		||||
            self.make_url('pluginManager/api/json?depth=2'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Could not parse JSON info for server[http://example.com/]')
 | 
			
		||||
            'Could not parse JSON info for server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_raise_HTTPError(self, jenkins_mock):
 | 
			
		||||
        jenkins_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/job/pluginManager/api/json?depth=2',
 | 
			
		||||
            self.make_url('job/pluginManager/api/json?depth=2'),
 | 
			
		||||
            code=401,
 | 
			
		||||
            msg="basic auth failed",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -254,12 +254,15 @@ class JenkinsPluginInfoTest(JenkinsPluginsBase):
 | 
			
		||||
            self.j.get_plugin_info(u'TestPlugin', depth=52)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PluginsTestScenarios(TestWithScenarios, JenkinsPluginsBase):
 | 
			
		||||
    scenarios = [
 | 
			
		||||
class PluginsTestScenarios(JenkinsPluginsBase):
 | 
			
		||||
 | 
			
		||||
    scenarios = multiply_scenarios(
 | 
			
		||||
        JenkinsPluginsBase.scenarios,
 | 
			
		||||
        [
 | 
			
		||||
            ('s1', dict(v1='1.0.0', op='__gt__', v2='0.8.0')),
 | 
			
		||||
            ('s2', dict(v1='1.0.1alpha', op='__gt__', v2='1.0.0')),
 | 
			
		||||
            ('s3', dict(v1='1.0', op='__eq__', v2='1.0.0')),
 | 
			
		||||
@@ -273,7 +276,7 @@ class PluginsTestScenarios(TestWithScenarios, JenkinsPluginsBase):
 | 
			
		||||
            ('s11', dict(v1='1.0.preview', op='__lt__', v2='1.0')),
 | 
			
		||||
            ('s12', dict(v1='1.1-SNAPSHOT', op='__gt__', v2='1.0')),
 | 
			
		||||
            ('s13', dict(v1='1.0a-SNAPSHOT', op='__lt__', v2='1.0a')),
 | 
			
		||||
    ]
 | 
			
		||||
        ])
 | 
			
		||||
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(PluginsTestScenarios, self).setUp()
 | 
			
		||||
@@ -293,7 +296,7 @@ class PluginsTestScenarios(TestWithScenarios, JenkinsPluginsBase):
 | 
			
		||||
        equality operator defined for the scenario.
 | 
			
		||||
        """
 | 
			
		||||
        plugin_name = "Jenkins Mailer Plugin"
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        j = jenkins.Jenkins(self.base_url, 'test', 'test')
 | 
			
		||||
        plugin_info = j.get_plugins()[plugin_name]
 | 
			
		||||
        v1 = plugin_info.get("version")
 | 
			
		||||
 | 
			
		||||
@@ -311,7 +314,7 @@ class PluginsTestScenarios(TestWithScenarios, JenkinsPluginsBase):
 | 
			
		||||
        type of PluginVersion before comparing provides the same result.
 | 
			
		||||
        """
 | 
			
		||||
        plugin_name = "Jenkins Mailer Plugin"
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        j = jenkins.Jenkins(self.base_url, 'test', 'test')
 | 
			
		||||
        plugin_info = j.get_plugins()[plugin_name]
 | 
			
		||||
        v1 = plugin_info.get("version")
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ class JenkinsCancelQueueTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/queue/cancelItem?id=52')
 | 
			
		||||
            self.make_url('queue/cancelItem?id=52'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open',
 | 
			
		||||
@@ -29,7 +29,7 @@ class JenkinsCancelQueueTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/queue/cancelItem?id=52')
 | 
			
		||||
            self.make_url('queue/cancelItem?id=52'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -68,5 +68,5 @@ class JenkinsQueueInfoTest(JenkinsTestBase):
 | 
			
		||||
        self.assertEqual(queue_info, queue_info_to_return['items'])
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/queue/api/json?depth=0')
 | 
			
		||||
            self.make_url('queue/api/json?depth=0'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -17,10 +17,10 @@ class JenkinsQuietDownTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/quietDown')
 | 
			
		||||
            self.make_url('quietDown'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json')
 | 
			
		||||
            self.make_url('api/json'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -35,10 +35,10 @@ class JenkinsQuietDownTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/quietDown')
 | 
			
		||||
            self.make_url('quietDown'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json')
 | 
			
		||||
            self.make_url('api/json'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'quiet down failed')
 | 
			
		||||
@@ -55,5 +55,5 @@ class JenkinsQuietDownTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/quietDown')
 | 
			
		||||
            self.make_url('quietDown'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -12,18 +12,18 @@ class JenkinsScriptTest(JenkinsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/scriptText')
 | 
			
		||||
            self.make_url('scriptText'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
    def test_install_plugin(self, jenkins_mock):
 | 
			
		||||
        '''Installation of plugins is done with the run_script method
 | 
			
		||||
        '''
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
 | 
			
		||||
        j.install_plugin("jabber")
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/scriptText')
 | 
			
		||||
            self.make_url('scriptText'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -31,7 +31,7 @@ class JenkinsScriptTest(JenkinsTestBase):
 | 
			
		||||
    def test_install_plugin_with_dependencies(self, run_script_mock, jenkins_mock):
 | 
			
		||||
        '''Verify install plugins with dependencies
 | 
			
		||||
        '''
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
 | 
			
		||||
        j.install_plugin("jabber")
 | 
			
		||||
        self.assertEqual(len(run_script_mock.call_args_list), 2)
 | 
			
		||||
        self.assertEqual(run_script_mock.call_args_list[0][0][0],
 | 
			
		||||
@@ -47,7 +47,7 @@ class JenkinsScriptTest(JenkinsTestBase):
 | 
			
		||||
    def test_install_plugin_without_dependencies(self, run_script_mock, jenkins_mock):
 | 
			
		||||
        '''Verify install plugins without dependencies
 | 
			
		||||
        '''
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
 | 
			
		||||
        j.install_plugin("jabber", include_dependencies=False)
 | 
			
		||||
        self.assertEqual(len(run_script_mock.call_args_list), 2)
 | 
			
		||||
        self.assertEqual(run_script_mock.call_args_list[0][0][0],
 | 
			
		||||
@@ -63,7 +63,7 @@ class JenkinsScriptTest(JenkinsTestBase):
 | 
			
		||||
        '''Verify install plugin does not need a restart
 | 
			
		||||
        '''
 | 
			
		||||
        run_script_mock.return_value = u'Result: false\n'
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
 | 
			
		||||
        self.assertFalse(j.install_plugin("jabber"))
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -72,5 +72,5 @@ class JenkinsScriptTest(JenkinsTestBase):
 | 
			
		||||
        '''Verify install plugin needs a restart
 | 
			
		||||
        '''
 | 
			
		||||
        run_script_mock.return_value = u'Result: true\n'
 | 
			
		||||
        j = jenkins.Jenkins('http://example.com/', 'test', 'test')
 | 
			
		||||
        j = jenkins.Jenkins(self.make_url(''), 'test', 'test')
 | 
			
		||||
        self.assertTrue(j.install_plugin("jabber"))
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ class JenkinsVersionTest(JenkinsTestBase):
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
    def test_raise_HTTPError(self, urlopen_mock):
 | 
			
		||||
        urlopen_mock.side_effect = jenkins.HTTPError(
 | 
			
		||||
            'http://example.com/',
 | 
			
		||||
            self.make_url(''),
 | 
			
		||||
            code=503,
 | 
			
		||||
            msg="internal server error",
 | 
			
		||||
            hdrs=[],
 | 
			
		||||
@@ -33,7 +33,7 @@ class JenkinsVersionTest(JenkinsTestBase):
 | 
			
		||||
            self.j.get_version()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(urlopen_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch('jenkins.urlopen')
 | 
			
		||||
@@ -43,7 +43,7 @@ class JenkinsVersionTest(JenkinsTestBase):
 | 
			
		||||
            self.j.get_version()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]')
 | 
			
		||||
            'Error communicating with server[{0}/]'.format(self.base_url))
 | 
			
		||||
        self._check_requests(urlopen_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch('jenkins.urlopen', return_value=None)
 | 
			
		||||
@@ -52,6 +52,6 @@ class JenkinsVersionTest(JenkinsTestBase):
 | 
			
		||||
            self.j.get_version()
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Error communicating with server[http://example.com/]:'
 | 
			
		||||
            ' empty response')
 | 
			
		||||
            'Error communicating with server[{0}/]:'
 | 
			
		||||
            ' empty response'.format(self.base_url))
 | 
			
		||||
        self._check_requests(urlopen_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ class JenkinsGetViewNameTest(JenkinsViewsTestBase):
 | 
			
		||||
        self.assertEqual(view_name, 'Test View')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/view/Test%20View/api/json?tree=name')
 | 
			
		||||
            self.make_url('view/Test%20View/api/json?tree=name'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -37,7 +37,7 @@ class JenkinsGetViewNameTest(JenkinsViewsTestBase):
 | 
			
		||||
        self.assertEqual(view_name, None)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/view/TestView/api/json?tree=name')
 | 
			
		||||
            self.make_url('view/TestView/api/json?tree=name'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -49,7 +49,7 @@ class JenkinsGetViewNameTest(JenkinsViewsTestBase):
 | 
			
		||||
            self.j.get_view_name(u'TestView')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/view/TestView/api/json?tree=name')
 | 
			
		||||
            self.make_url('view/TestView/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'Jenkins returned an unexpected view name {0} '
 | 
			
		||||
@@ -95,7 +95,7 @@ class JenkinsGetViewsTest(JenkinsViewsTestBase):
 | 
			
		||||
        self.assertEqual(view_info, views)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/api/json')
 | 
			
		||||
            self.make_url('api/json'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -112,7 +112,7 @@ class JenkinsDeleteViewTest(JenkinsViewsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/view/Test%20View/doDelete')
 | 
			
		||||
            self.make_url('view/Test%20View/doDelete'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -127,7 +127,7 @@ class JenkinsDeleteViewTest(JenkinsViewsTestBase):
 | 
			
		||||
            self.j.delete_view(u'TestView')
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/view/TestView/doDelete')
 | 
			
		||||
            self.make_url('view/TestView/doDelete'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'delete[TestView] failed')
 | 
			
		||||
@@ -148,7 +148,7 @@ class JenkinsCreateViewTest(JenkinsViewsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/createView?name=Test%20View')
 | 
			
		||||
            self.make_url('createView?name=Test%20View'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
    @patch.object(jenkins.Jenkins, 'jenkins_open')
 | 
			
		||||
@@ -162,7 +162,7 @@ class JenkinsCreateViewTest(JenkinsViewsTestBase):
 | 
			
		||||
            self.j.create_view(u'TestView', self.config_xml)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/view/TestView/api/json?tree=name')
 | 
			
		||||
            self.make_url('view/TestView/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'view[TestView] already exists')
 | 
			
		||||
@@ -180,10 +180,10 @@ class JenkinsCreateViewTest(JenkinsViewsTestBase):
 | 
			
		||||
            self.j.create_view(u'TestView', self.config_xml)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[0][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/view/TestView/api/json?tree=name')
 | 
			
		||||
            self.make_url('view/TestView/api/json?tree=name'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args_list[1][0][0].get_full_url(),
 | 
			
		||||
            'http://example.com/createView?name=TestView')
 | 
			
		||||
            self.make_url('createView?name=TestView'))
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            str(context_manager.exception),
 | 
			
		||||
            'create[TestView] failed')
 | 
			
		||||
@@ -202,7 +202,7 @@ class JenkinsReconfigViewTest(JenkinsViewsTestBase):
 | 
			
		||||
        self.j.reconfig_view(u'Test View', self.config_xml)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
                         u'http://example.com/view/Test%20View/config.xml')
 | 
			
		||||
                         self.make_url('view/Test%20View/config.xml'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -214,5 +214,5 @@ class JenkinsGetViewConfigTest(JenkinsViewsTestBase):
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            jenkins_mock.call_args[0][0].get_full_url(),
 | 
			
		||||
            u'http://example.com/view/Test%20View/config.xml')
 | 
			
		||||
            self.make_url('view/Test%20View/config.xml'))
 | 
			
		||||
        self._check_requests(jenkins_mock.call_args_list)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user