Exemplo n.º 1
0
def test_handle_merge_request_no_deprecate(
    mock_add_label_to_index,
    mock_cleanup,
    mock_prfb,
    mock_uiibs,
    mock_srs,
    mock_gpb,
    mock_abmis,
    mock_gbfdl,
    mock_geaps,
    mock_dep_b,
    mock_bi,
    mock_pi,
    mock_capml,
    mock_vii,
    mock_uiips,
):
    prebuild_info = {
        'arches': {'amd64', 'other_arch'},
        'binary_image': 'binary-image:1.0',
        'target_ocp_version': '4.6',
        'source_from_index_resolved': 'source-index@sha256:resolved',
        'target_index_resolved': 'target-index@sha256:resolved',
        'distribution_scope': 'stage',
    }
    mock_prfb.return_value = prebuild_info
    mock_gbfdl.return_value = []

    build_merge_index_image.handle_merge_request(
        'source-from-index:1.0',
        ['some-bundle:1.0'],
        1,
        'binary-image:1.0',
        'target-from-index:1.0',
        distribution_scope='stage',
    )

    mock_cleanup.assert_called_once()
    mock_prfb.assert_called_once_with(
        1,
        'binary-image:1.0',
        binary_image_config=None,
        overwrite_from_index_token=None,
        source_from_index='source-from-index:1.0',
        target_index='target-from-index:1.0',
        distribution_scope='stage',
    )
    mock_uiibs.assert_called_once_with(1, prebuild_info)
    assert mock_gpb.call_count == 2
    mock_abmis.assert_called_once()
    mock_gbfdl.assert_called_once()
    mock_geaps.assert_called_once()
    assert mock_dep_b.call_count == 0
    assert mock_bi.call_count == 2
    assert mock_pi.call_count == 2
    mock_vii.assert_not_called()
    mock_capml.assert_called_once()
    mock_uiips.assert_called_once()
def test_handle_merge_request(
    mock_set_registry_token,
    mock_add_label_to_index,
    mock_cleanup,
    mock_prfb,
    mock_uiibs,
    mock_srs,
    mock_gpb,
    mock_abmis,
    mock_gbfdl,
    mock_geaps,
    mock_dep_b,
    mock_bi,
    mock_pi,
    mock_capml,
    mock_vii,
    mock_uiips,
    target_index,
    target_index_resolved,
    binary_image,
):
    prebuild_info = {
        'arches': {'amd64', 'other_arch'},
        'binary_image': binary_image,
        'target_ocp_version': '4.6',
        'source_from_index_resolved': 'source-index@sha256:resolved',
        'target_index_resolved': target_index_resolved,
        'distribution_scope': 'stage',
    }
    mock_prfb.return_value = prebuild_info
    mock_gbfdl.return_value = ['some-bundle:1.0']
    binary_image_config = {'prod': {'v4.5': 'some_image'}, 'stage': {'stage': 'some_other_img'}}

    # Simulate opm's behavior of creating files that cannot be deleted
    def side_effect(_, temp_dir, *args, **kwargs):
        read_only_dir = os.path.join(temp_dir, 'read-only-dir')
        os.mkdir(read_only_dir)
        with open(os.path.join(read_only_dir, 'read-only-file'), 'w') as f:
            os.chmod(f.fileno(), stat.S_IRUSR | stat.S_IRGRP)
        # Make the dir read-only *after* populating it
        os.chmod(read_only_dir, mode=stat.S_IRUSR | stat.S_IRGRP)

    mock_dep_b.side_effect = side_effect

    build_merge_index_image.handle_merge_request(
        'source-from-index:1.0',
        ['some-bundle:1.0'],
        1,
        binary_image,
        target_index,
        distribution_scope='stage',
        binary_image_config=binary_image_config,
    )

    mock_cleanup.assert_called_once()
    mock_prfb.assert_called_once_with(
        1,
        RequestConfigMerge(
            _binary_image=binary_image,
            overwrite_target_index_token=None,
            source_from_index='source-from-index:1.0',
            target_index=target_index,
            distribution_scope='stage',
            binary_image_config=binary_image_config,
        ),
    )
    mock_uiibs.assert_called_once_with(1, prebuild_info)
    if target_index:
        assert mock_gpb.call_count == 2
    else:
        assert mock_gpb.call_count == 1
    mock_vii.assert_not_called()
    mock_abmis.assert_called_once()
    mock_gbfdl.assert_called_once()
    mock_geaps.assert_called_once()
    mock_dep_b.assert_called_once()
    mock_set_registry_token.assert_called_once()
    assert mock_bi.call_count == 2
    assert mock_pi.call_count == 2
    assert mock_capml.call_count == 1
    mock_uiips.assert_called_once()