def test_paasta_rollback_mark_for_deployment_wrong_cluster(
    mock_mark_for_deployment,
    mock_get_git_url,
    mock_list_clusters,
    mock_figure_out_service_name,
    mock_validate_given_instances,
    mock_list_all_instances_for_service,
):

    fake_args = Mock(
        cluster='cluster1',
        instances='instance1',
        commit='123456'
    )

    mock_get_git_url.return_value = 'git://git.repo'
    mock_figure_out_service_name.return_value = 'fakeservice'
    mock_list_clusters.return_value = ['cluster0', 'cluster2']
    mock_list_all_instances_for_service.return_value = ['instance1', 'instance2']
    mock_validate_given_instances.return_value = [['instance1'], []]

    with raises(SystemExit) as sys_exit:
        paasta_rollback(fake_args)
        assert sys_exit.value_code == 1

    assert mock_mark_for_deployment.call_count == 0
def test_paasta_rollback_mark_for_deployment_multiple_instance_args(
    mock_mark_for_deployment,
    mock_get_git_url,
    mock_list_clusters,
    mock_figure_out_service_name,
    mock_validate_given_instances,
    mock_list_all_instances_for_service,
):

    fake_args = Mock(
        cluster='cluster1',
        instances='instance1,instance2',
        commit='123456'
    )

    mock_get_git_url.return_value = 'git://git.repo'
    mock_figure_out_service_name.return_value = 'fakeservice'
    mock_list_clusters.return_value = ['cluster1', 'cluster2']
    mock_list_all_instances_for_service.return_value = ['instance1', 'instance2', 'instance3']
    mock_validate_given_instances.return_value = [['instance1', 'instance2'], []]

    with raises(SystemExit) as sys_exit:
        paasta_rollback(fake_args)
        assert sys_exit.value_code == 0

    expected = [
        call(
            git_url=mock_get_git_url.return_value,
            cluster=fake_args.cluster,
            service=mock_figure_out_service_name.return_value,
            commit=fake_args.commit,
            instance='instance1'
        ),
        call(
            git_url=mock_get_git_url.return_value,
            cluster=fake_args.cluster,
            service=mock_figure_out_service_name.return_value,
            commit=fake_args.commit,
            instance='instance2'
        ),
    ]

    mock_mark_for_deployment.assert_has_calls(expected, any_order=True)
    assert mock_mark_for_deployment.call_count == 2