def test_get_all_jobs_when_no_url_set(self): mock_workflow = Mock(Workflow) mock_workflow.settings = {} interface = JenkinsInterface(mock_workflow) mock_workflow.send_feedback.side_effect = TestException() try: interface.get_all_jobs() except TestException: pass mock_workflow.send_feedback.assert_called_once()
class TestJenkinsInterface(TestCase): def setUp(self): self.workflow = Workflow() self.old_jenkins_url = self.workflow.settings.get('jenkins_url') self.workflow.settings['jenkins_url'] = JENKINS_URL self.jenkins_interface = JenkinsInterface(self.workflow) def tearDown(self): self.workflow.settings['jenkins_url'] = self.old_jenkins_url def _patch_get_with_response(self, mock_get, response): mock_response = Mock() mock_get.return_value = mock_response mock_response.json.return_value = response @patch("jenkins.jenkins_interface.web.get") def test_get_all_jobs(self, mock_get): self._patch_get_with_response(mock_get, {'jobs': [{'name': 'test'}]}) jobs = self.jenkins_interface.get_all_jobs() self.assertEqual(1, len(jobs)) @patch("jenkins.jenkins_interface.web.get") def test_get_all_jobs_finds_no_jobs_raises_error(self, mock_get): self._patch_get_with_response(mock_get, {'jobs': []}) self.assertRaises(NoJobsFound, self.jenkins_interface.get_all_jobs) @patch("jenkins.jenkins_interface.web.get") def test_get_all_jobs_filters_with_query_no_jobs_does_not_error(self, mock_get): self._patch_get_with_response(mock_get, {'jobs': []}) jobs = self.jenkins_interface.get_all_jobs(query="query") self.assertEqual(0, len(jobs)) @patch("jenkins.jenkins_interface.web.get") def test_get_all_jobs_filters_with_query(self, mock_get): self._patch_get_with_response(mock_get, { 'jobs': [ {'name': 'test one'}, {'name': 'test two'}, {'name': 'ignore one'}, {'name': 'ignore two'} ] }) query = "test" jobs = self.jenkins_interface.get_all_jobs(query=query) self.assertEqual(2, len(jobs)) self.assertTrue(all(["one" in jobs[0].name, "two" in jobs[1].name])) @patch("jenkins.jenkins_interface.web.get") def test_get_all_failing_jobs(self, mock_get): self._patch_get_with_response(mock_get, { 'jobs': [ {'name': 'test1', 'color': 'red', 'url': JENKINS_URL}, {'name': 'test2', 'color': 'blue', 'url': JENKINS_URL}, {'name': 'test3', 'color': 'yellow', 'url': JENKINS_URL}, {'name': 'test4', 'color': 'redanime', 'url': JENKINS_URL} ] }) jobs = self.jenkins_interface.get_failed_jobs() self.assertEqual(2, len(jobs)) self.assertEqual('test1', jobs[0].name) self.assertEqual('test4', jobs[1].name) @patch("jenkins.jenkins_interface.web.get") def test_get_all_failing_jobs_with_query(self, mock_get): self._patch_get_with_response(mock_get, { 'jobs': [ {'name': 'test1', 'color': 'red', 'url': JENKINS_URL}, {'name': 'test2', 'color': 'blue', 'url': JENKINS_URL}, {'name': 'test3', 'color': 'yellow', 'url': JENKINS_URL}, {'name': 'test4', 'color': 'redanime', 'url': JENKINS_URL} ] }) jobs = self.jenkins_interface.get_failed_jobs('test1') self.assertEqual(1, len(jobs)) self.assertEqual('test1', jobs[0].name) @patch("jenkins.jenkins_interface.web.get") def test_get_all_building_jobs(self, mock_get): self._patch_get_with_response(mock_get, { 'jobs': [ {'name': 'test1', 'color': 'red', 'url': JENKINS_URL}, {'name': 'test2', 'color': 'blue', 'url': JENKINS_URL}, {'name': 'test3', 'color': 'yellow', 'url': JENKINS_URL}, {'name': 'test4', 'color': 'redanime', 'url': JENKINS_URL}, {'name': 'test5', 'color': 'redanime', 'url': JENKINS_URL} ] }) jobs = self.jenkins_interface.get_building_jobs() self.assertEqual(2, len(jobs)) self.assertEqual('test4', jobs[0].name) self.assertEqual('test5', jobs[1].name) @patch("jenkins.jenkins_interface.web.get") def test_get_all_building_jobs_with_query(self, mock_get): self._patch_get_with_response(mock_get, { 'jobs': [ {'name': 'test1', 'color': 'red', 'url': JENKINS_URL}, {'name': 'test2', 'color': 'blue', 'url': JENKINS_URL}, {'name': 'test3', 'color': 'yellow', 'url': JENKINS_URL}, {'name': 'test4', 'color': 'redanime', 'url': JENKINS_URL}, {'name': 'test5', 'color': 'redanime', 'url': JENKINS_URL} ] }) jobs = self.jenkins_interface.get_building_jobs('4') self.assertEqual(1, len(jobs)) self.assertEqual('test4', jobs[0].name) def test_interface_saves_new_url(self): self.jenkins_interface.set_jenkins_url('http://new-url') self.assertEqual('http://new-url', self.workflow.settings['jenkins_url']) def test_get_all_jobs_when_no_url_set(self): mock_workflow = Mock(Workflow) mock_workflow.settings = {} interface = JenkinsInterface(mock_workflow) mock_workflow.send_feedback.side_effect = TestException() try: interface.get_all_jobs() except TestException: pass mock_workflow.send_feedback.assert_called_once()
class TestJenkinsInterface(TestCase): def setUp(self): self.workflow = Workflow() self.old_jenkins_url = self.workflow.settings.get('jenkins_url') self.workflow.settings['jenkins_url'] = JENKINS_URL self.jenkins_interface = JenkinsInterface(self.workflow) def tearDown(self): self.workflow.settings['jenkins_url'] = self.old_jenkins_url def _patch_get_with_response(self, mock_get, response): mock_response = Mock() mock_get.return_value = mock_response mock_response.json.return_value = response @patch("jenkins.jenkins_interface.web.get") def test_get_all_jobs(self, mock_get): self._patch_get_with_response(mock_get, {'jobs': [{'name': 'test'}]}) jobs = self.jenkins_interface.get_all_jobs() self.assertEqual(1, len(jobs)) @patch("jenkins.jenkins_interface.web.get") def test_get_jobs_with_subjobs(self, mock_get): response = {'jobs': [{'name': 'test', 'jobs': [{'name': 'test2'}]}]} self._patch_get_with_response(mock_get, response) jobs = self.jenkins_interface.get_all_jobs() self.assertEqual(2, len(jobs)) @patch("jenkins.jenkins_interface.web.get") def test_get_all_jobs_finds_no_jobs_raises_error(self, mock_get): self._patch_get_with_response(mock_get, {'jobs': []}) self.assertRaises(NoJobsFound, self.jenkins_interface.get_all_jobs) @patch("jenkins.jenkins_interface.web.get") def test_get_all_jobs_filters_with_query_no_jobs_does_not_error( self, mock_get): self._patch_get_with_response(mock_get, {'jobs': []}) jobs = self.jenkins_interface.get_all_jobs(query="query") self.assertEqual(0, len(jobs)) @patch("jenkins.jenkins_interface.web.get") def test_get_all_jobs_filters_with_query(self, mock_get): self._patch_get_with_response( mock_get, { 'jobs': [{ 'name': 'test one' }, { 'name': 'test two' }, { 'name': 'ignore one' }, { 'name': 'ignore two' }] }) query = "test" jobs = self.jenkins_interface.get_all_jobs(query=query) self.assertEqual(2, len(jobs)) self.assertTrue(all(["one" in jobs[0].name, "two" in jobs[1].name])) @patch("jenkins.jenkins_interface.web.get") def test_get_all_failing_jobs(self, mock_get): self._patch_get_with_response( mock_get, { 'jobs': [{ 'name': 'test1', 'color': 'red', 'url': JENKINS_URL }, { 'name': 'test2', 'color': 'blue', 'url': JENKINS_URL }, { 'name': 'test3', 'color': 'yellow', 'url': JENKINS_URL }, { 'name': 'test4', 'color': 'redanime', 'url': JENKINS_URL }] }) jobs = self.jenkins_interface.get_failed_jobs() self.assertEqual(2, len(jobs)) self.assertEqual('test1', jobs[0].name) self.assertEqual('test4', jobs[1].name) @patch("jenkins.jenkins_interface.web.get") def test_get_all_failing_jobs_with_query(self, mock_get): self._patch_get_with_response( mock_get, { 'jobs': [{ 'name': 'test1', 'color': 'red', 'url': JENKINS_URL }, { 'name': 'test2', 'color': 'blue', 'url': JENKINS_URL }, { 'name': 'test3', 'color': 'yellow', 'url': JENKINS_URL }, { 'name': 'test4', 'color': 'redanime', 'url': JENKINS_URL }] }) jobs = self.jenkins_interface.get_failed_jobs('test1') self.assertEqual(1, len(jobs)) self.assertEqual('test1', jobs[0].name) @patch("jenkins.jenkins_interface.web.get") def test_get_all_building_jobs(self, mock_get): self._patch_get_with_response( mock_get, { 'jobs': [{ 'name': 'test1', 'color': 'red', 'url': JENKINS_URL }, { 'name': 'test2', 'color': 'blue', 'url': JENKINS_URL }, { 'name': 'test3', 'color': 'yellow', 'url': JENKINS_URL }, { 'name': 'test4', 'color': 'redanime', 'url': JENKINS_URL }, { 'name': 'test5', 'color': 'redanime', 'url': JENKINS_URL }] }) jobs = self.jenkins_interface.get_building_jobs() self.assertEqual(2, len(jobs)) self.assertEqual('test4', jobs[0].name) self.assertEqual('test5', jobs[1].name) @patch("jenkins.jenkins_interface.web.get") def test_get_all_building_jobs_with_query(self, mock_get): self._patch_get_with_response( mock_get, { 'jobs': [{ 'name': 'test1', 'color': 'red', 'url': JENKINS_URL }, { 'name': 'test2', 'color': 'blue', 'url': JENKINS_URL }, { 'name': 'test3', 'color': 'yellow', 'url': JENKINS_URL }, { 'name': 'test4', 'color': 'redanime', 'url': JENKINS_URL }, { 'name': 'test5', 'color': 'redanime', 'url': JENKINS_URL }] }) jobs = self.jenkins_interface.get_building_jobs('4') self.assertEqual(1, len(jobs)) self.assertEqual('test4', jobs[0].name) def test_interface_saves_new_url(self): self.jenkins_interface.set_jenkins_url('http://new-url') self.assertEqual('http://new-url', self.workflow.settings['jenkins_url']) def test_get_all_jobs_when_no_url_set(self): mock_workflow = Mock(Workflow) mock_workflow.settings = {} interface = JenkinsInterface(mock_workflow) mock_workflow.send_feedback.side_effect = TestException() try: interface.get_all_jobs() except TestException: pass mock_workflow.send_feedback.assert_called_once()