def test_copr_build_not_comment_on_success(copr_build_end, pc_build_pr, copr_build_pr): flexmock(GithubProject).should_receive("is_private").and_return(False) flexmock(GithubProject).should_receive("get_pr").and_return( flexmock(source_project=flexmock()).should_receive("comment").never()) flexmock(AbstractCoprBuildEvent).should_receive( "get_package_config").and_return(pc_build_pr) flexmock(CoprBuildJobHelper).should_receive("get_build_check").and_return( EXPECTED_BUILD_CHECK_NAME) flexmock(CoprBuildEndHandler).should_receive( "was_last_packit_comment_with_congratulation").and_return(True) flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return( copr_build_pr) copr_build_pr.should_call("set_status").with_args("success").once() copr_build_pr.should_receive("set_end_time").once() url = get_copr_build_info_url(1) flexmock(requests).should_receive("get").and_return(requests.Response()) flexmock( requests.Response).should_receive("raise_for_status").and_return(None) # check if packit-service set correct PR status flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.success, description="RPMs were built successfully.", url=url, check_names=CoprBuildJobHelper.get_build_check( copr_build_end["chroot"]), markdown_content=None, ).once() # skip testing farm flexmock(CoprBuildJobHelper).should_receive( "get_built_packages").and_return([]) flexmock(CoprBuildJobHelper).should_receive("job_tests").and_return(None) flexmock(Signature).should_receive("apply_async").once() flexmock(Pushgateway).should_receive("push").once().and_return() # skip SRPM url since it touches multiple classes flexmock(CoprBuildEndHandler).should_receive("set_srpm_url").and_return( None) processing_results = SteveJobs().process_message(copr_build_end) event_dict, job, job_config, package_config = get_parameters_from_results( processing_results) assert json.dumps(event_dict) run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job_config, )
def test_copr_build_end( copr_build_end, pc_build_pr, copr_build_pr, pc_comment_pr_succ, pr_comment_called, ): flexmock(GithubProject).should_receive("is_private").and_return(False) flexmock(GithubProject).should_receive("get_pr").and_return( flexmock(source_project=flexmock()) ) pc_build_pr.jobs[0].notifications.pull_request.successful_build = pc_comment_pr_succ flexmock(AbstractCoprBuildEvent).should_receive("get_package_config").and_return( pc_build_pr ) flexmock(CoprBuildEndHandler).should_receive( "was_last_packit_comment_with_congratulation" ).and_return(False) if pr_comment_called: flexmock(GithubProject).should_receive("pr_comment") else: flexmock(GithubProject).should_receive("pr_comment").never() flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return(copr_build_pr) copr_build_pr.should_receive("set_status").with_args("success") copr_build_pr.should_receive("set_end_time").once() url = get_copr_build_info_url_from_flask(1) flexmock(requests).should_receive("get").and_return(requests.Response()) flexmock(requests.Response).should_receive("raise_for_status").and_return(None) # check if packit-service set correct PR status flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.success, description="RPMs were built successfully.", url=url, check_names=CoprBuildJobHelper.get_build_check(copr_build_end["chroot"]), ).once() # no test job defined => testing farm should be skipped flexmock(TestingFarmJobHelper).should_receive("run_testing_farm").times(0) flexmock(Signature).should_receive("apply_async").once() processing_results = SteveJobs().process_message(copr_build_end) event_dict, job, job_config, package_config = get_parameters_from_results( processing_results ) run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job_config, )
def test_copr_build_end_push(copr_build_end, pc_build_push, copr_build_branch_push): flexmock(GithubProject).should_receive("is_private").and_return(False) flexmock(GithubProject).should_receive("get_pr").and_return( flexmock(source_project=flexmock()) ) flexmock(AbstractCoprBuildEvent).should_receive("get_package_config").and_return( pc_build_push ) flexmock(CoprBuildEndHandler).should_receive( "was_last_packit_comment_with_congratulation" ).and_return(False) # we cannot comment for branch push events flexmock(GithubProject).should_receive("pr_comment").never() flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return( copr_build_branch_push ) copr_build_branch_push.should_receive("set_status").with_args("success") copr_build_branch_push.should_receive("set_end_time").once() url = get_copr_build_info_url_from_flask(1) flexmock(requests).should_receive("get").and_return(requests.Response()) flexmock(requests.Response).should_receive("raise_for_status").and_return(None) # check if packit-service set correct PR status flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.success, description="RPMs were built successfully.", url=url, check_names=CoprBuildJobHelper.get_build_check(copr_build_end["chroot"]), ).once() # skip testing farm flexmock(CoprBuildJobHelper).should_receive("job_tests").and_return(None) flexmock(Signature).should_receive("apply_async").once() processing_results = SteveJobs().process_message(copr_build_end) event_dict, job, job_config, package_config = get_parameters_from_results( processing_results ) run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job_config, )
def test_srpm_build_end_failure(srpm_build_end, pc_build_pr, srpm_build_model): srpm_build_end["status"] = COPR_API_FAIL_STATE pr = flexmock(source_project=flexmock()) flexmock(GithubProject).should_receive("is_private").and_return(False) flexmock(GithubProject).should_receive("get_pr").and_return(pr) flexmock(AbstractCoprBuildEvent).should_receive( "get_package_config").and_return(pc_build_pr) flexmock(CoprBuildModel).should_receive("get_all_by_build_id").and_return( [flexmock(target="fedora-33-x86_64")]) (flexmock(CoprBuildJobHelper).should_receive("get_build").with_args( 3122876).and_return( flexmock(source_package={"url": "https://my.host/my.srpm" })).at_least().once()) flexmock(Pushgateway).should_receive("push").once().and_return() flexmock(CoprBuildJobHelper).should_receive( "monitor_not_submitted_copr_builds") flexmock(SRPMBuildModel).should_receive("get_by_copr_build_id").and_return( srpm_build_model) srpm_build_model.should_call("set_status").with_args("failure").once() srpm_build_model.should_receive("set_end_time").once() url = get_srpm_build_info_url(1) flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.failure, description="SRPM build failed, check the logs for details.", url=url, check_names=["rpm-build:fedora-33-x86_64"], markdown_content=None, ).once() flexmock(Signature).should_receive("apply_async").once() flexmock(srpm_build_model).should_receive("set_url").with_args( "https://my.host/my.srpm").mock() processing_results = SteveJobs().process_message(srpm_build_end) event_dict, job, job_config, package_config = get_parameters_from_results( processing_results) assert json.dumps(event_dict) results = run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job_config, ) assert not first_dict_value(results["job"])["success"]
def test_copr_build_end_failed_testing_farm_no_json(copr_build_end, copr_build_pr): flexmock(GithubProject).should_receive("is_private").and_return(False) flexmock(GithubProject).should_receive("get_pr").and_return( flexmock( source_project=flexmock(get_web_url=lambda: "abc"), target_branch_head_commit="deadbeef", ).should_receive("comment").mock()) config = PackageConfig(jobs=[ JobConfig( type=JobType.copr_build, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig( _targets=["fedora-rawhide"], owner="some-owner", project="some-project", ), ), JobConfig( type=JobType.tests, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig(_targets=["fedora-rawhide"]), ), ]) flexmock(AbstractCoprBuildEvent).should_receive( "get_package_config").and_return(config) flexmock(PackageConfigGetter).should_receive( "get_package_config_from_repo").and_return(config) flexmock(CoprBuildEndHandler).should_receive( "was_last_packit_comment_with_congratulation").and_return(False) flexmock(LocalProject).should_receive("refresh_the_arguments").and_return( None) flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return( copr_build_pr) flexmock(CoprBuildModel).should_receive("get_by_id").and_return( copr_build_pr) copr_build_pr.should_call("set_status").with_args("success").once() copr_build_pr.should_receive("set_end_time").once() url = get_copr_build_info_url(1) flexmock(requests).should_receive("get").and_return(requests.Response()) flexmock( requests.Response).should_receive("raise_for_status").and_return(None) # check if packit-service set correct PR status flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.success, description="RPMs were built successfully.", url=url, check_names=EXPECTED_BUILD_CHECK_NAME, markdown_content=None, ).once() flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.pending, description="RPMs were built successfully.", url=url, check_names=EXPECTED_TESTING_FARM_CHECK_NAME, markdown_content=None, ).once() flexmock(TestingFarmJobHelper).should_receive( "is_fmf_configured").and_return(True) flexmock(TestingFarmJobHelper).should_receive( "send_testing_farm_request").and_return( RequestResponse( status_code=400, ok=False, content=b"some text error", reason="some text error", json=None, )) flexmock(CoprBuildModel).should_receive("set_status").with_args("failure") flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.running, description="Build succeeded. Submitting the tests ...", check_names=EXPECTED_TESTING_FARM_CHECK_NAME, url="", markdown_content=None, ).once() flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.failure, description="Failed to submit tests: some text error", check_names=EXPECTED_TESTING_FARM_CHECK_NAME, url="", markdown_content=None, ).once() flexmock(Signature).should_receive("apply_async").twice() flexmock(Pushgateway).should_receive("push").twice().and_return() # skip SRPM url since it touches multiple classes flexmock(CoprBuildEndHandler).should_receive("set_srpm_url").and_return( None) processing_results = SteveJobs().process_message(copr_build_end) event_dict, job, job_config, package_config = get_parameters_from_results( processing_results) assert json.dumps(event_dict) flexmock(CoprBuildJobHelper).should_receive( "get_built_packages").and_return([]) run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job_config, ) flexmock(TestingFarmHandler).should_receive("db_trigger").and_return( copr_build_pr.get_trigger_object()) run_testing_farm_handler( package_config=package_config, event=event_dict, job_config=job_config, chroot="fedora-rawhide-x86_64", build_id=flexmock(), )
def test_copr_build_end_testing_farm(copr_build_end, copr_build_pr): tft_api_url = "https://api.dev.testing-farm.io/v0.1/" service_config = ServiceConfig(testing_farm_api_url=tft_api_url, testing_farm_secret="secret token") flexmock(ServiceConfig).should_receive("get_service_config").and_return( service_config) flexmock(GithubProject).should_receive("is_private").and_return(False) flexmock(GithubProject).should_receive("get_pr").and_return( flexmock( source_project=flexmock( get_web_url=lambda: "https://github.com/foo/bar"), target_branch_head_commit="deadbeef", ).should_receive("comment").mock()) urls.DASHBOARD_URL = "https://dashboard.localhost" config = PackageConfig(jobs=[ JobConfig( type=JobType.copr_build, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig( _targets=["fedora-rawhide"], owner="some-owner", project="some-project", ), ), JobConfig( type=JobType.tests, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig(_targets=["fedora-rawhide"]), ), ]) flexmock(AbstractCoprBuildEvent).should_receive( "get_package_config").and_return(config) flexmock(PackageConfigGetter).should_receive( "get_package_config_from_repo").and_return(config) flexmock(CoprBuildEndHandler).should_receive( "was_last_packit_comment_with_congratulation").and_return(False) flexmock(LocalProject).should_receive("refresh_the_arguments").and_return( None) flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return( copr_build_pr) flexmock(CoprBuildModel).should_receive("get_by_id").and_return( copr_build_pr) copr_build_pr.should_call("set_status").with_args("success").once() copr_build_pr.should_receive("set_end_time").once() flexmock(requests).should_receive("get").and_return(requests.Response()) flexmock( requests.Response).should_receive("raise_for_status").and_return(None) # check if packit-service set correct PR status url = get_copr_build_info_url(1) flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.success, description="RPMs were built successfully.", url=url, check_names=EXPECTED_BUILD_CHECK_NAME, markdown_content=None, ).once() flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.pending, description="RPMs were built successfully.", url=url, check_names=EXPECTED_TESTING_FARM_CHECK_NAME, markdown_content=None, ).once() payload = { "api_key": "secret token", "test": { "fmf": { "url": "https://github.com/foo/bar", "ref": "0011223344", }, }, "environments": [{ "arch": "x86_64", "os": { "compose": "Fedora-Rawhide" }, "tmt": { "context": { "distro": "fedora-rawhide", "arch": "x86_64", "trigger": "commit", } }, "artifacts": [ { "id": "1:fedora-rawhide-x86_64", "type": "fedora-copr-build", "packages": ["bar-0.1-1.noarch"], }, ], "variables": { "PACKIT_FULL_REPO_NAME": "foo/bar", "PACKIT_COMMIT_SHA": "0011223344", "PACKIT_PACKAGE_NVR": "bar-0.1-1", "PACKIT_BUILD_LOG_URL": "https://log-url", "PACKIT_TARGET_SHA": "deadbeef", }, }], "notification": { "webhook": { "url": "https://stg.packit.dev/api/testing-farm/results", "token": "secret token", } }, } flexmock(TestingFarmJobHelper).should_receive( "is_fmf_configured").and_return(True) flexmock(TestingFarmJobHelper).should_receive("distro2compose").with_args( "fedora-rawhide", "x86_64").and_return("Fedora-Rawhide") pipeline_id = "5e8079d8-f181-41cf-af96-28e99774eb68" flexmock(TestingFarmJobHelper).should_receive( "send_testing_farm_request").with_args( endpoint="requests", method="POST", data=payload).and_return( RequestResponse( status_code=200, ok=True, content=json.dumps({ "id": pipeline_id }).encode(), json={"id": pipeline_id}, )) flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.running, description="Build succeeded. Submitting the tests ...", check_names=EXPECTED_TESTING_FARM_CHECK_NAME, url="", markdown_content=None, ).once() flexmock(GithubProject).should_receive("get_web_url").and_return( "https://github.com/foo/bar") tft_test_run_model = flexmock(id=5) flexmock(TFTTestRunModel).should_receive("create").with_args( pipeline_id=pipeline_id, commit_sha="0011223344", status=TestingFarmResult.new, target="fedora-rawhide-x86_64", web_url=None, run_model=copr_build_pr.runs[0], data={ "base_project_url": "https://github.com/foo/bar" }, ).and_return(tft_test_run_model) flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.running, description="Tests have been submitted ...", url="https://dashboard.localhost/results/testing-farm/5", check_names=EXPECTED_TESTING_FARM_CHECK_NAME, markdown_content=None, ).once() flexmock(Signature).should_receive("apply_async").twice() # skip SRPM url since it touches multiple classes flexmock(CoprBuildEndHandler).should_receive("set_srpm_url").and_return( None) flexmock(Pushgateway).should_receive("push").twice().and_return() processing_results = SteveJobs().process_message(copr_build_end) event_dict, job, job_config, package_config = get_parameters_from_results( processing_results) assert json.dumps(event_dict) flexmock(CoprBuildJobHelper).should_receive( "get_built_packages").and_return([]) run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job_config, ) flexmock(TestingFarmHandler).should_receive("db_trigger").and_return( copr_build_pr.get_trigger_object()) flexmock(CoprBuildModel).should_receive("get_all_by").and_return( [copr_build_pr]) run_testing_farm_handler( package_config=package_config, event=event_dict, job_config=job_config, chroot="fedora-rawhide-x86_64", build_id=1, )
def test_copr_build_end( copr_build_end, pc_build_pr, copr_build_pr, pc_comment_pr_succ, pr_comment_called, ): pr = flexmock(source_project=flexmock()) flexmock(GithubProject).should_receive("is_private").and_return(False) flexmock(GithubProject).should_receive("get_pr").and_return(pr) pc_build_pr.jobs[ 0].notifications.pull_request.successful_build = pc_comment_pr_succ flexmock(AbstractCoprBuildEvent).should_receive( "get_package_config").and_return(pc_build_pr) flexmock(CoprBuildEndHandler).should_receive( "was_last_packit_comment_with_congratulation").and_return(False) if pr_comment_called: pr.should_receive("comment") else: pr.should_receive("comment").never() flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return( copr_build_pr) copr_build_pr.should_call("set_status").with_args("success").once() copr_build_pr.should_receive("set_end_time").once() url = get_copr_build_info_url(1) flexmock(requests).should_receive("get").and_return(requests.Response()) flexmock( requests.Response).should_receive("raise_for_status").and_return(None) # check if packit-service set correct PR status flexmock(StatusReporter).should_receive("report").with_args( state=BaseCommitStatus.success, description="RPMs were built successfully.", url=url, check_names=CoprBuildJobHelper.get_build_check( copr_build_end["chroot"]), markdown_content=None, ).once() # no test job defined => testing farm should be skipped flexmock(TestingFarmJobHelper).should_receive("run_testing_farm").times(0) flexmock(Signature).should_receive("apply_async").once() # fix SRPM url since it touches multiple classes (flexmock(CoprBuildJobHelper).should_receive("get_build").with_args( 1044215).and_return( flexmock(source_package={"url": "https://my.host/my.srpm" })).at_least().once()) flexmock(copr_build_pr._srpm_build_for_mocking).should_receive( "set_url").with_args("https://my.host/my.srpm").mock() flexmock(Pushgateway).should_receive("push").once().and_return() processing_results = SteveJobs().process_message(copr_build_end) event_dict, job, job_config, package_config = get_parameters_from_results( processing_results) assert json.dumps(event_dict) flexmock(CoprBuildJobHelper).should_receive( "get_built_packages").and_return([]) run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job_config, )
def test_copr_build_end_failed_testing_farm_no_json(copr_build_end, copr_build_pr): flexmock(GithubProject).should_receive("is_private").and_return(False) config = PackageConfig(jobs=[ JobConfig( type=JobType.copr_build, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig( targets=["fedora-rawhide"], owner="some-owner", project="some-project", ), ), JobConfig( type=JobType.tests, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig(targets=["fedora-rawhide"]), ), ]) flexmock(CoprBuildEvent).should_receive("get_package_config").and_return( config) flexmock(PackageConfigGetter).should_receive( "get_package_config_from_repo").and_return(config) flexmock(CoprBuildEndHandler).should_receive( "was_last_packit_comment_with_congratulation").and_return(False) flexmock(GithubProject).should_receive("pr_comment") flexmock(LocalProject).should_receive("refresh_the_arguments").and_return( None) flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return( copr_build_pr) copr_build_pr.should_receive("set_status").with_args("success") copr_build_pr.should_receive("set_end_time").once() url = get_copr_build_info_url_from_flask(1) flexmock(requests).should_receive("get").and_return(requests.Response()) flexmock( requests.Response).should_receive("raise_for_status").and_return(None) # check if packit-service set correct PR status flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.success, description="RPMs were built successfully.", url=url, check_names=EXPECTED_BUILD_CHECK_NAME, ).once() flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.pending, description="RPMs were built successfully.", url=url, check_names=EXPECTED_TESTING_FARM_CHECK_NAME, ).once() flexmock(TestingFarmJobHelper).should_receive( "send_testing_farm_request").and_return( RequestResponse( status_code=400, ok=False, content=b"some text error", reason="some text error", json=None, )) flexmock(CoprBuildModel).should_receive("set_status").with_args("failure") flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.pending, description="Build succeeded. Submitting the tests ...", check_names=EXPECTED_TESTING_FARM_CHECK_NAME, url="", ).once() flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.failure, description="Failed to submit tests: some text error", check_names=EXPECTED_TESTING_FARM_CHECK_NAME, url="", ).once() tft_test_run_model = flexmock() tft_test_run_model.should_receive("set_status").with_args( TestingFarmResult.error).and_return().once() pipeline_id = "5e8079d8-f181-41cf-af96-28e99774eb68" flexmock(uuid).should_receive("uuid4").and_return(uuid.UUID(pipeline_id)) flexmock(TFTTestRunModel).should_receive("create").with_args( pipeline_id=pipeline_id, commit_sha="0011223344", status=TestingFarmResult.new, target="fedora-rawhide-x86_64", trigger_model=copr_build_pr.job_trigger.get_trigger_object(), web_url=None, ).and_return(tft_test_run_model) flexmock(Signature).should_receive("apply_async").twice() processing_results = SteveJobs().process_message(copr_build_end) event_dict, package_config, job = get_parameters_from_results( processing_results) run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job, ) flexmock(GithubTestingFarmHandler).should_receive("db_trigger").and_return( copr_build_pr.job_trigger.get_trigger_object()) run_testing_farm_handler( package_config=package_config, event=event_dict, job_config=job, chroot="fedora-rawhide-x86_64", build_id=flexmock(), )
def test_copr_build_end_testing_farm(copr_build_end, copr_build_pr): flexmock(GithubProject).should_receive("is_private").and_return(False) config = PackageConfig(jobs=[ JobConfig( type=JobType.copr_build, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig( targets=["fedora-rawhide"], owner="some-owner", project="some-project", ), ), JobConfig( type=JobType.tests, trigger=JobConfigTriggerType.pull_request, metadata=JobMetadataConfig(targets=["fedora-rawhide"]), ), ]) flexmock(CoprBuildEvent).should_receive("get_package_config").and_return( config) flexmock(PackageConfigGetter).should_receive( "get_package_config_from_repo").and_return(config) flexmock(CoprBuildEndHandler).should_receive( "was_last_packit_comment_with_congratulation").and_return(False) flexmock(GithubProject).should_receive("pr_comment") flexmock(LocalProject).should_receive("refresh_the_arguments").and_return( None) flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return( copr_build_pr) copr_build_pr.should_receive("set_status").with_args("success") copr_build_pr.should_receive("set_end_time").once() flexmock(requests).should_receive("get").and_return(requests.Response()) flexmock( requests.Response).should_receive("raise_for_status").and_return(None) # check if packit-service set correct PR status url = get_copr_build_info_url_from_flask(1) flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.success, description="RPMs were built successfully.", url=url, check_names=EXPECTED_BUILD_CHECK_NAME, ).once() flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.pending, description="RPMs were built successfully.", url=url, check_names=EXPECTED_TESTING_FARM_CHECK_NAME, ).once() pipeline_id = "5e8079d8-f181-41cf-af96-28e99774eb68" flexmock(uuid).should_receive("uuid4").and_return(uuid.UUID(pipeline_id)) payload: dict = { "pipeline": { "id": pipeline_id }, "api": { "token": "" }, "response-url": "https://stg.packit.dev/api/testing-farm/results", "artifact": { "repo-name": "bar", "repo-namespace": "foo", "copr-repo-name": "some-owner/some-project", "copr-chroot": "fedora-rawhide-x86_64", "commit-sha": "0011223344", "git-url": "https://github.com/foo/bar.git", "git-ref": "0011223344", }, } tft_test_run_model = flexmock() tft_test_run_model.should_receive("set_status").with_args( TestingFarmResult.running).and_return().once() flexmock(TFTTestRunModel).should_receive("create").with_args( pipeline_id=pipeline_id, commit_sha="0011223344", status=TestingFarmResult.new, target="fedora-rawhide-x86_64", trigger_model=copr_build_pr.job_trigger.get_trigger_object(), web_url=None, ).and_return(tft_test_run_model) flexmock(TestingFarmJobHelper).should_receive( "send_testing_farm_request").with_args( TESTING_FARM_TRIGGER_URL, "POST", {}, json.dumps(payload)).and_return( RequestResponse( status_code=200, ok=True, content=b'{"url": "some-url"}', json={"url": "some-url"}, )) flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.pending, description="Build succeeded. Submitting the tests ...", check_names=EXPECTED_TESTING_FARM_CHECK_NAME, url="", ).once() flexmock(StatusReporter).should_receive("report").with_args( state=CommitStatus.pending, description="Tests are running ...", url="some-url", check_names=EXPECTED_TESTING_FARM_CHECK_NAME, ).once() flexmock(Signature).should_receive("apply_async").twice() processing_results = SteveJobs().process_message(copr_build_end) event_dict, package_config, job = get_parameters_from_results( processing_results) run_copr_build_end_handler( package_config=package_config, event=event_dict, job_config=job, ) flexmock(GithubTestingFarmHandler).should_receive("db_trigger").and_return( copr_build_pr.job_trigger.get_trigger_object()) run_testing_farm_handler( package_config=package_config, event=event_dict, job_config=job, chroot="fedora-rawhide-x86_64", build_id=flexmock(), )