Beispiel #1
0
 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"))
Beispiel #2
0
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, "")
Beispiel #3
0
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, "")
Beispiel #4
0
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()
Beispiel #6
0
 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
Beispiel #8
0
    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()
Beispiel #9
0
    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()
Beispiel #10
0
 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)
Beispiel #11
0
 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"])