def test_build_plashets_image(self, _build_plashet_from_tags: AsyncMock, _build_plashet_for_assembly: AsyncMock): runtime = MagicMock(dry_run=False) group_config = { "arches": ["x86_64", "s390x"], "signing_advisory": 12345, } pipeline = RebuildPipeline(runtime, group="openshift-4.9", assembly="art0001", type=RebuildType.IMAGE, dg_key="foo") _build_plashet_from_tags.return_value = (Path("/path/to/local/dir1"), "https://example.com/dir1") _build_plashet_for_assembly.return_value = ( Path("/path/to/local/dir2"), "https://example.com/dir2") actual = get_event_loop().run_until_complete( pipeline._build_plashets("202107160000", 8, group_config)) _build_plashet_from_tags.assert_called_once_with( 'art0001-202107160000-image-foo-basis', 8, group_config["arches"], group_config["signing_advisory"]) _build_plashet_for_assembly.assert_called_once_with( 'art0001-202107160000-image-foo-overrides', 8, group_config["arches"], group_config["signing_advisory"]) self.assertEqual( actual, (Path("/path/to/local/dir1"), "https://example.com/dir1", Path("/path/to/local/dir2"), "https://example.com/dir2"))
async def test_attempt_join(mock_execute_dialog: AsyncMock, skip_qtbot): # Setup mock_execute_dialog.return_value = QDialog.Accepted network_client = MagicMock() network_client.join_game_session = AsyncMock() session_a = GameSessionListEntry(id=1, name="A Game", has_password=True, state=GameSessionState.FINISHED, num_players=1, creator="You") session_b = GameSessionListEntry(id=2, name="B Game", has_password=True, state=GameSessionState.IN_PROGRESS, num_players=1, creator="You") dialog = GameSessionBrowserDialog(network_client) dialog.sessions = [session_a, session_b] dialog.update_list() dialog.table_widget.selectRow(0) # Run await dialog.attempt_join() # Assert mock_execute_dialog.assert_awaited_once() network_client.join_game_session.assert_awaited_once_with(session_b, "")
async def test_attempt_join(mock_execute_dialog: AsyncMock, skip_qtbot): # Setup utc = datetime.timezone.utc mock_execute_dialog.return_value = QDialog.Accepted network_client = MagicMock() network_client.join_game_session = AsyncMock() session_a = GameSessionListEntry( id=1, name="A Game", has_password=True, state=GameSessionState.FINISHED, num_players=1, creator="You", creation_date=datetime.datetime(year=2015, month=5, day=1, tzinfo=utc)) session_b = GameSessionListEntry(id=2, name="B Game", has_password=True, state=GameSessionState.IN_PROGRESS, num_players=1, creator="You", creation_date=datetime.datetime.now(utc) - datetime.timedelta(days=4)) dialog = GameSessionBrowserDialog(network_client) dialog.sessions = [session_a, session_b] dialog.update_list() dialog.table_widget.selectRow(0) # Run await dialog.attempt_join() # Assert mock_execute_dialog.assert_awaited_once() network_client.join_game_session.assert_awaited_once_with(session_b, "")
async def test_host_game_session(mock_execute_dialog: AsyncMock, skip_qtbot, default_online_interactions, mocker): # Setup mock_create_and_update: AsyncMock = mocker.patch( "randovania.gui.main_online_interaction.GameSessionWindow.create_and_update", new_callable=AsyncMock) mock_create_and_update.return_value = MagicMock() mock_get_game_connection = mocker.patch( "randovania.gui.lib.common_qt_lib.get_game_connection", autospec=True) default_online_interactions._ensure_logged_in = AsyncMock( return_value=True) mock_execute_dialog.return_value = QDialog.Accepted default_online_interactions.network_client.create_new_session = AsyncMock() # Run await default_online_interactions._host_game_session() # Assert mock_execute_dialog.assert_awaited_once() default_online_interactions.network_client.create_new_session.assert_awaited_once_with( "") mock_create_and_update.assert_awaited_once_with( default_online_interactions.network_client, mock_get_game_connection.return_value, default_online_interactions.preset_manager, default_online_interactions.window_manager, default_online_interactions.options, ) mock_create_and_update.return_value.show.assert_called_once_with()
async def test_browse_for_game_session(mock_game_session_window: AsyncMock, mock_game_session_browser: MagicMock, mock_execute_dialog: AsyncMock, skip_qtbot, default_main_window, mocker): # Setup mock_get_game_connection = mocker.patch( "randovania.gui.lib.common_qt_lib.get_game_connection", autospec=True) mocker.patch("randovania.gui.main_window.MainWindow._ensure_logged_in", new_callable=AsyncMock, return_value=True) mock_execute_dialog.return_value = mock_game_session_browser.return_value.Accepted mock_game_session_browser.return_value.refresh = AsyncMock() # Run await default_main_window._browse_for_game_session() # Assert mock_game_session_browser.assert_called_once_with( default_main_window.network_client) mock_game_session_browser.return_value.refresh.assert_awaited_once_with() mock_execute_dialog.assert_awaited_once_with( mock_game_session_browser.return_value) mock_game_session_window.assert_awaited_once_with( default_main_window.network_client, mock_get_game_connection.return_value, default_main_window.preset_manager, default_main_window, default_main_window._options, ) mock_game_session_window.return_value.show.assert_called_once_with()
def test_copy_to_rcm_guest(self, cmd_assert_async: AsyncMock): cmd_assert_async.return_value = (0, "whatever", "whatever") pipeline = TarballSourcesPipeline(MagicMock(dry_run=False), "fake-group-4.10", "fake-assembly", ["fake-component"], []) get_event_loop().run_until_complete( pipeline._copy_to_rcm_guest("fake-working/sources")) cmd_assert_async.assert_awaited_once_with([ "rsync", "-avz", "--no-perms", "--no-owner", "--no-group", "fake-working/sources", ANY ])
async def test_handle_network_errors_success(skip_qtbot, qapp): callee = AsyncMock() callee.return_value = MagicMock() data = MagicMock() # Run wrapped = qt_network_client.handle_network_errors(callee) result = await wrapped(qapp, "foo", data) # Assert callee.assert_awaited_once_with(qapp, "foo", data) assert result is callee.return_value
def test_promote_arch(self, get_release_image_info: AsyncMock, build_release_image: AsyncMock, get_image_stream_tag: AsyncMock, tag_release: AsyncMock): runtime = MagicMock(config={"build_config": {"ocp_build_data_url": "https://example.com/ocp-build-data.git"}}, working_dir=Path("/path/to/working"), dry_run=False) pipeline = PromotePipeline(runtime, group="openshift-4.10", assembly="4.10.99", release_offset=None, arches=["x86_64", "s390x", "ppc64le", "aarch64"]) previous_list = ["4.10.98", "4.10.97", "4.9.99"] metadata = {"description": "whatever", "url": "https://access.redhat.com/errata/RHBA-2099:2222"} # test x86_64 reference_release = "whatever-x86_64" actual = asyncio.get_event_loop().run_until_complete(pipeline.promote_arch(release_name="4.10.99", arch="x86_64", previous_list=previous_list, metadata=metadata, reference_release=reference_release, tag_stable=True)) get_release_image_info.assert_any_await("quay.io/openshift-release-dev/ocp-release:4.10.99-x86_64") build_release_image.assert_awaited_once_with("4.10.99", "x86_64", previous_list, metadata, "quay.io/openshift-release-dev/ocp-release:4.10.99-x86_64", reference_release) get_image_stream_tag.assert_awaited_once_with("ocp", "release:4.10.99") tag_release.assert_awaited_once_with("quay.io/openshift-release-dev/ocp-release:4.10.99-x86_64", "ocp/release:4.10.99") self.assertEqual(actual["image"], "quay.io/openshift-release-dev/ocp-release:4.10.99-x86_64") # test aarch64 reference_release = "whatever-aarch64" get_release_image_info.reset_mock() build_release_image.reset_mock() get_image_stream_tag.reset_mock() tag_release.reset_mock() actual = asyncio.get_event_loop().run_until_complete(pipeline.promote_arch(release_name="4.10.99", arch="aarch64", previous_list=previous_list, metadata=metadata, reference_release=reference_release, tag_stable=True)) get_release_image_info.assert_any_await("quay.io/openshift-release-dev/ocp-release:4.10.99-aarch64") build_release_image.assert_awaited_once_with("4.10.99", "aarch64", previous_list, metadata, "quay.io/openshift-release-dev/ocp-release:4.10.99-aarch64", reference_release) get_image_stream_tag.assert_awaited_once_with("ocp-arm64", "release-arm64:4.10.99") tag_release.assert_awaited_once_with("quay.io/openshift-release-dev/ocp-release:4.10.99-aarch64", "ocp-arm64/release-arm64:4.10.99") self.assertEqual(actual["image"], "quay.io/openshift-release-dev/ocp-release:4.10.99-aarch64") # test release tag already exists but doesn't match the to-be-promoted release image get_image_stream_tag.return_value = { "image": { "dockerImageReference": "quay.io/openshift-release-dev/ocp-release@fake:foobar", } } reference_release = "whatever-aarch64" get_release_image_info.reset_mock() build_release_image.reset_mock() get_image_stream_tag.reset_mock() tag_release.reset_mock() with self.assertRaisesRegex(ValueError, "already exists, but it has a different digest"): asyncio.get_event_loop().run_until_complete(pipeline.promote_arch(release_name="4.10.99", arch="aarch64", previous_list=previous_list, metadata=metadata, reference_release=reference_release, tag_stable=True)) get_release_image_info.assert_any_await("quay.io/openshift-release-dev/ocp-release:4.10.99-aarch64") build_release_image.assert_awaited_once_with("4.10.99", "aarch64", previous_list, metadata, "quay.io/openshift-release-dev/ocp-release:4.10.99-aarch64", reference_release) get_image_stream_tag.assert_awaited_once_with("ocp-arm64", "release-arm64:4.10.99") tag_release.assert_not_awaited()
async def test_icx_sendTransaction_must_relay_if_no_permission( self, mock_channel_tx_creator, monkeypatch, test_cli ): # Mocking to check tx is relayed or not! mock_relay_tx_request = AsyncMock() monkeypatch.setattr(f"{IcxDispatcher.__module__}.{relay_tx_request.__name__}", mock_relay_tx_request) mock_relay_tx_request.return_value = "relay mock result" # Given I receives icx_sendTransaction request json_request = copy.deepcopy(self.REQUESTS["icx_sendTransaction"]) # And the node is a validator mock_channel_tx_creator(response_code=message_code.Response.fail_no_permission) # When I call dispatch method response: Response = await test_cli.post(self.URI, json=json_request) # Then the server should relay tx to another node mock_relay_tx_request.assert_called()
def test_associate_builds_with_cves( self, FakeAsyncErrataAPI: AsyncMock, fake_get_advisory_cve_package_exclusions: AsyncMock): api = FakeAsyncErrataAPI.return_value api.get_cves.return_value = ["CVE-2099-1", "CVE-2099-2", "CVE-2099-3"] attached_builds = [ "a-1.0.0-1.el8", "a-1.0.0-1.el7", "b-1.0.0-1.el8", "c-1.0.0-1.el8", "d-1.0.0-1.el8", "e-1.0.0-1.el7" ] cve_components = { "CVE-2099-1": {"a", "b", "d"}, "CVE-2099-2": {"c", "e"}, "CVE-2099-3": {"a", "b", "c", "d"}, } fake_get_advisory_cve_package_exclusions.return_value = { "CVE-2099-1": { "c": 1, "d": 2 }, "CVE-2099-2": { "a": 3, "b": 4, "d": 5 }, "CVE-2099-3": {} } actual = get_event_loop().run_until_complete( AsyncErrataUtils.associate_builds_with_cves(api, 1, attached_builds, cve_components, dry_run=False)) api.delete_cve_package_exclusion.assert_any_await(2) api.create_cve_package_exclusion.assert_any_await(1, "CVE-2099-1", "e") api.create_cve_package_exclusion.assert_any_await(1, "CVE-2099-3", "e") self.assertEqual(actual, None)
def test_run(self, load_group_config: AsyncMock): runtime = MagicMock(dry_run=False) load_group_config.return_value = { "advisories": { "extras": 10000, "image": 10001 } } pipeline = TarballSourcesPipeline(runtime, "fake-group-4.10", "fake-assembly", ["fake-component"], []) pipeline._create_tarball_sources = AsyncMock( return_value=["source-1.tar.gz", "source-2.tar.gz"]) pipeline._copy_to_rcm_guest = AsyncMock() pipeline._create_jira = MagicMock(return_value=MagicMock( key="FAKE-123")) get_event_loop().run_until_complete(pipeline.run()) load_group_config.assert_awaited_once_with("fake-group-4.10", "fake-assembly", ANY) pipeline._create_tarball_sources.assert_awaited_once_with( [10000, 10001], ANY) pipeline._copy_to_rcm_guest.assert_awaited_once_with(ANY) pipeline._create_jira.assert_called_once_with( [10000, 10001], ["source-1.tar.gz", "source-2.tar.gz"])