def test_is_build_completed(self): credentials = fake_credentials() j = JenkinsBuild(credentials, JOB_NAME, JENKINS_URL, BUILD_INFO) with patch('upload_jenkins_job.get_build_data', autospec=True, return_value=BUILD_INFO) as gbd_mock: build_status = j.is_build_completed() self.assertIs(build_status, True) self.assertEqual(gbd_mock.mock_calls, create_build_data_calls())
def test_is_build_completed_return_false(self): credentials = fake_credentials() build_info = json.loads('{"building": true}') j = JenkinsBuild(credentials, JOB_NAME, JENKINS_URL, BUILD_INFO) with patch('upload_jenkins_job.get_build_data', autospec=True, return_value=build_info) as gbd_mock: build_status = j.is_build_completed() self.assertIs(build_status, False) self.assertEqual(gbd_mock.mock_calls, create_build_data_calls())
def test_get_build_info(self): credentials = fake_credentials() j = JenkinsBuild(credentials, JOB_NAME, JENKINS_URL, None) with patch('upload_jenkins_job.get_build_data', autospec=True, return_value=BUILD_INFO) as gbd_mock: build_info = j.get_build_info(BUILD_NUM) self.assertEqual(build_info, BUILD_INFO) gbd_mock.assert_called_once_with( JENKINS_URL, credentials, JOB_NAME, BUILD_NUM)
def test_get_last_completed_build_number(self): last_build = {"lastCompletedBuild": {"number": BUILD_NUM}} credentials = fake_credentials() with patch("upload_jenkins_job.get_job_data", autospec=True, return_value=last_build) as gjd_mock: j = JenkinsBuild(credentials, JOB_NAME, None, BUILD_INFO) last_build_number = j.get_last_completed_build_number() self.assertEqual(last_build_number, BUILD_NUM) gjd_mock.assert_called_once_with(None, credentials, JOB_NAME)
def test_get_build_info(self): credentials = fake_credentials() j = JenkinsBuild(credentials, JOB_NAME, JENKINS_URL, None) with patch('upload_jenkins_job.get_build_data', autospec=True, return_value=BUILD_INFO) as gbd_mock: build_info = j.get_build_info(BUILD_NUM) self.assertEqual(build_info, BUILD_INFO) gbd_mock.assert_called_once_with(JENKINS_URL, credentials, JOB_NAME, BUILD_NUM)
def test_console_text(self): class Response: text = "console content" credentials = fake_credentials() j = JenkinsBuild(credentials, "fake", None, BUILD_INFO) with patch('upload_jenkins_job.requests.get', return_value=Response, autospec=True) as u_mock: with patch('upload_jenkins_job.HTTPBasicAuth', autospec=True) as h_mock: text = j.get_console_text() self.assertEqual(text, 'console content') u_mock.assert_called_once_with( BUILD_INFO['url'] + 'consoleText', auth=h_mock.return_value) h_mock.assert_called_once_with(credentials[0], credentials[1])
def test_artifacts(self): class Response: content = "artifact content" credentials = fake_credentials() j = JenkinsBuild(credentials, "fake", None, BUILD_INFO) expected = BUILD_INFO['url'] + 'artifact/' + 'logs/all-machines.log.gz' with patch('upload_jenkins_job.requests.get', return_value=Response, autospec=True) as u_mock: with patch('upload_jenkins_job.HTTPBasicAuth', return_value=None, autospec=True) as h_mock: for filename, content in j.artifacts(): self.assertEqual(content, 'artifact content') u_mock.assert_called_once_with( expected, auth=h_mock.return_value) h_mock.assert_called_once_with(credentials.user, credentials.password)
def test_console_text(self): class Response: text = "console content" credentials = fake_credentials() j = JenkinsBuild(credentials, "fake", None, BUILD_INFO) with patch('upload_jenkins_job.requests.get', return_value=Response, autospec=True) as u_mock: with patch('upload_jenkins_job.HTTPBasicAuth', autospec=True) as h_mock: text = j.get_console_text() self.assertEqual(text, 'console content') u_mock.assert_called_once_with(BUILD_INFO['url'] + 'consoleText', auth=h_mock.return_value) h_mock.assert_called_once_with(credentials[0], credentials[1])
def test_artifacts(self): class Response: content = "artifact content" credentials = fake_credentials() j = JenkinsBuild(credentials, "fake", None, BUILD_INFO) expected = BUILD_INFO['url'] + 'artifact/' + 'logs/all-machines.log.gz' with patch('upload_jenkins_job.requests.get', return_value=Response, autospec=True) as u_mock: with patch('upload_jenkins_job.HTTPBasicAuth', return_value=None, autospec=True) as h_mock: for filename, content in j.artifacts(): self.assertEqual(content, 'artifact content') u_mock.assert_called_once_with(expected, auth=h_mock.return_value) h_mock.assert_called_once_with(credentials.user, credentials.password)
def test_factory_with_build_number(self): credentials = fake_credentials() with patch('upload_jenkins_job.get_build_data', autospec=True, return_value=BUILD_INFO) as gbd_mock: j = JenkinsBuild.factory(credentials, JOB_NAME, BUILD_NUM) self.assertIs(type(j), JenkinsBuild) self.assertEqual(j.build_info, BUILD_INFO) gbd_mock.assert_called_once_with( JENKINS_URL, credentials, JOB_NAME, BUILD_NUM)
def test_factory_with_build_number(self): credentials = fake_credentials() with patch('upload_jenkins_job.get_build_data', autospec=True, return_value=BUILD_INFO) as gbd_mock: j = JenkinsBuild.factory(credentials, JOB_NAME, BUILD_NUM) self.assertIs(type(j), JenkinsBuild) self.assertEqual(j.build_info, BUILD_INFO) gbd_mock.assert_called_once_with(JENKINS_URL, credentials, JOB_NAME, BUILD_NUM)
def test_factory(self): credentials = fake_credentials() with patch('upload_jenkins_job.get_build_data', autospec=True) as gbd_mock: j = JenkinsBuild.factory(credentials, JOB_NAME) self.assertIs(type(j), JenkinsBuild) self.assertEqual(j.job_name, JOB_NAME) self.assertEqual(j.credentials, credentials) self.assertEqual(j.build_info, None) self.assertEqual(j.jenkins_url, JENKINS_URL) self.assertEqual(gbd_mock.call_count, 0)
def test_upload_by_build_number_timeout(self): credentials = fake_credentials() build_info = {"number": 9988, 'building': True} j = JenkinsBuild(credentials, JOB_NAME, JENKINS_URL, BUILD_INFO) uploader = S3Uploader(None, j) with patch('upload_jenkins_job.get_build_data', autospec=True, return_value=build_info) as gbd_mock: with self.assertRaisesRegexp(Exception, "Build fails to complete: 9988"): uploader.upload_by_build_number(build_number=9988, pause_time=.1, timeout=.1) self.assertEqual(gbd_mock.mock_calls, create_build_data_calls(build_num=9988, calls=2))
def test_upload_by_build_number(self): credentials = fake_credentials() build_info = {"number": 9988, 'building': False} j = JenkinsBuild(credentials, JOB_NAME, JENKINS_URL, BUILD_INFO) uploader = S3Uploader(None, j) with patch('upload_jenkins_job.os.getenv', return_value=9988, autospec=True) as g_mock: with patch('upload_jenkins_job.get_build_data', autospec=True, return_value=build_info) as gbd_mock: with patch.object(uploader, 'upload', autospec=True) as u_mock: uploader.upload_by_build_number() g_mock.assert_called_once_with('BUILD_NUMBER') u_mock.assert_called_once_with() self.assertEqual(gbd_mock.mock_calls, create_build_data_calls(build_num=9988, calls=2))
def test_upload_by_build_number_waits(self): credentials = fake_credentials() build_info = {"number": BUILD_NUM, 'building': True} build_info_done = {"number": BUILD_NUM, 'building': False} jb = JenkinsBuild(credentials, JOB_NAME, JENKINS_URL, BUILD_INFO) uploader = S3Uploader(None, jb) with patch('upload_jenkins_job.get_build_data', autospec=True, side_effect=[build_info, build_info, build_info_done]) as m: with patch.object(uploader, 'upload', autospec=True) as u_mock: with patch('upload_jenkins_job.sleep', autospec=True, side_effect=sleep(.1)) as s_mock: uploader.upload_by_build_number(build_number=BUILD_NUM, pause_time=.1, timeout=1) self.assertEqual(m.mock_calls, create_build_data_calls(calls=3)) u_mock.assert_called_once_with() s_mock.assert_called_once_with(.1)
def test_last_completed_test_results(self): class Response: text = "console content" build_info = {"artifacts": [], 'url': 'fake', "number": BUILD_NUM} last_build = {"lastCompletedBuild": {"number": BUILD_NUM}} cred = Credentials('joe', 'password') jenkins_build = JenkinsBuild(cred, None, None, build_info) s3_mock = MagicMock() h = S3Uploader(s3_mock, jenkins_build) with patch("upload_jenkins_job.get_job_data", autospec=True, return_value=last_build) as gjd_mock: with patch("upload_jenkins_job.get_build_data", autospec=True, return_value=build_info) as gbd_mock: with patch('upload_jenkins_job.requests.get', autospec=True, return_value=Response): h.upload_last_completed_test_result() self.assertEqual( h.jenkins_build.get_last_completed_build_number(), BUILD_NUM) self.assertEqual(s3_mock.store.mock_calls, [ call('1277-result-results.json', json.dumps(build_info, indent=4), headers={"Content-Type": "application/json"}), call('1277-console-consoleText.txt', Response.text, headers={"Content-Type": "text/plain; charset=utf8"}) ]) self.assertEqual(gjd_mock.mock_calls, [call(None, cred, None), call(None, cred, None)]) self.assertEqual(gbd_mock.mock_calls, [ call(None, cred, None, BUILD_NUM), call(None, cred, None, BUILD_NUM) ])
def test_get_build_number(self): credentials = fake_credentials() j = JenkinsBuild(credentials, "fake", None, BUILD_INFO) self.assertEqual(j.get_build_number(), BUILD_NUM)
def test_result(self): credentials = fake_credentials() j = JenkinsBuild(credentials, JOB_NAME, None, BUILD_INFO) self.assertEqual(j.result, BUILD_INFO['result'])