Ejemplo n.º 1
0
def test_archive_gist_called_process_error(mock_logger, mock_subprocess,
                                           mock_git_asset):
    operation = PULL_OPERATION
    github_archive = GithubArchive()
    github_archive.archive_gist(mock_git_asset, 'github_archive', operation)

    mock_logger.assert_called()
Ejemplo n.º 2
0
def test_archive_gist_clone_exists(mock_logger, mock_subprocess,
                                   mock_path_exists, mock_git_asset):
    operation = CLONE_OPERATION
    github_archive = GithubArchive()
    github_archive.archive_gist(mock_git_asset, 'github_archive', operation)

    mock_subprocess.assert_not_called()
Ejemplo n.º 3
0
def test_archive_gist_timeout_exception(mock_logger, mock_subprocess):
    gist = mock.MagicMock()
    gist.id = '123'
    operation = 'clone'
    message = f'Git operation timed out archiving {gist.id}.'
    GithubArchive.archive_gist(gist, 'mock/path', operation)
    mock_logger.error.assert_called_with(message)
Ejemplo n.º 4
0
def test_archive_gist_success(mock_logger, mock_subprocess):
    gist = mock.MagicMock()
    gist.id = '123'
    operation = 'clone'
    message = f'Gist: {gist.id} {operation} success!'
    GithubArchive.archive_gist(gist, 'mock/path', operation)
    mock_logger.info.assert_called_once_with(message)
Ejemplo n.º 5
0
def test_archive_repo_timeout_exception(mock_logger, mock_subprocess):
    repo = mock.MagicMock()
    repo.name = 'mock-repo'
    operation = 'clone'
    message = f'Git operation timed out archiving {repo.name}.'
    GithubArchive.archive_repo(repo, 'master', 'mock/path', operation)
    mock_logger.error.assert_called_with(message)
Ejemplo n.º 6
0
def test_archive_repo_success(mock_logger, mock_subprocess):
    repo = mock.MagicMock()
    repo.name = 'mock-repo'
    operation = 'clone'
    message = f'Repo: {repo.name} {operation} success!'
    GithubArchive.archive_repo(repo, 'master', 'mock/path', operation)
    mock_logger.info.assert_called_once_with(message)
Ejemplo n.º 7
0
def test_iterate_repos_not_matching_owner_name(mock_user, mock_archive_repo):
    mock_user.name = 'Justintime123'
    repo = mock.MagicMock()
    repo.owner.name = 'Justintim456'
    repos = [repo]
    GithubArchive.iterate_repos(repos, 'user', 'clone', 'master')
    mock_archive_repo.assert_not_called()
Ejemplo n.º 8
0
def test_archive_gist_timeout_exception(mock_logger, mock_subprocess,
                                        mock_git_asset):
    operation = CLONE_OPERATION
    message = f'Git operation timed out archiving {mock_git_asset.id}.'
    github_archive = GithubArchive()
    github_archive.archive_gist(mock_git_asset, 'mock/path', operation)

    mock_logger.assert_called_with(message)
Ejemplo n.º 9
0
def test_archive_gist_bad_param(mock_logger, mock_subprocess):
    gist = mock.MagicMock()
    gist.id = '123'
    operation = 'bad-param'
    message = f'Could not determine what action to take with {gist.id} based on {operation}.'
    with pytest.raises(ValueError):
        GithubArchive.archive_gist(gist, 'mock/path', operation)
    mock_logger.error.assert_called_once_with(message)
Ejemplo n.º 10
0
def test_archive_gist_clone_exists(mock_logger, mock_subprocess,
                                   mock_path_exists):
    gist = mock.MagicMock()
    gist.id = '123'
    operation = 'clone'
    message = f'Gist: {gist.id} already cloned, skipping clone operation.'
    GithubArchive.archive_gist(gist, 'mock/path', operation)
    mock_logger.info.assert_called_once_with(message)
Ejemplo n.º 11
0
def test_archive_repo_bad_param(mock_logger, mock_subprocess):
    repo = mock.MagicMock()
    repo.name = 'mock-repo'
    operation = 'bad-param'
    message = f'Could not determine what action to take with {repo.name} based on {operation}.'
    with pytest.raises(ValueError):
        GithubArchive.archive_repo(repo, 'master', 'mock/path', operation)
    mock_logger.error.assert_called_once_with(message)
Ejemplo n.º 12
0
def test_archive_repo_clone_exists(mock_logger, mock_subprocess,
                                   mock_path_exists):
    repo = mock.MagicMock()
    repo.name = 'mock-repo'
    operation = 'clone'
    message = f'Repo: {repo.name} already cloned, skipping clone operation.'
    GithubArchive.archive_repo(repo, 'master', 'mock/path', operation)
    mock_logger.info.assert_called_once_with(message)
Ejemplo n.º 13
0
def test_archive_gist_success(mock_logger, mock_subprocess, mock_git_asset):
    # TODO: Mock the subprocess better to ensure it's doing what it should
    operation = CLONE_OPERATION
    message = f'Gist: {mock_git_asset.owner.login}/{mock_git_asset.id} {operation} success!'
    github_archive = GithubArchive()
    github_archive.archive_gist(mock_git_asset, 'mock/path', operation)

    mock_subprocess.assert_called()
    mock_logger.assert_called_once_with(message)
Ejemplo n.º 14
0
 def _run(self):
     GithubArchive.run(
         user_clone=self.user_clone,
         user_pull=self.user_pull,
         gists_clone=self.gists_clone,
         gists_pull=self.gists_pull,
         orgs_clone=self.orgs_clone,
         orgs_pull=self.orgs_pull,
     )
Ejemplo n.º 15
0
def test_determine_repo_context_bad_param(mock_logger,
                                          mock_determine_repo_context,
                                          mock_object):
    repos = [mock_object]
    context = 'bad-param'
    message = f'Could not determine what action to take with {context}.'
    with pytest.raises(ValueError):
        GithubArchive.determine_repo_context(repos, context, 'clone')
    mock_determine_repo_context.assert_not_called()
    mock_logger.error.assert_called_once_with(message)
Ejemplo n.º 16
0
def test_initialize_project_missing_all_cli_args(mock_logger):
    # TODO: Is it possible to test all variations easily in one test?
    # Parametrize doesn't work great because we can't easily swap the param name being used
    message = 'At least one git operation and one list must be provided to run github-archive.'
    with pytest.raises(ValueError) as error:
        github_archive = GithubArchive()
        github_archive.initialize_project()

    mock_logger.assert_called_with(message)
    assert message == str(error.value)
Ejemplo n.º 17
0
def test_initialize_project_missing_operation(mock_logger):
    # TODO: Is it possible to test all variations easily in one test?
    # Parametrize doesn't work great because we can't easily swap the param name being used
    message = 'A list must be provided when a git operation is specified.'
    with pytest.raises(ValueError) as error:
        github_archive = GithubArchive(clone=True, )
        github_archive.initialize_project()

    mock_logger.assert_called_with(message)
    assert message == str(error.value)
Ejemplo n.º 18
0
def test_archive_repo_use_https_success(mock_logger, mock_subprocess,
                                        mock_git_asset):
    # TODO: Mock the subprocess better to ensure it's doing what it should
    operation = CLONE_OPERATION
    message = f'Repo: {mock_git_asset.owner.login}/{mock_git_asset.name} {operation} success!'
    github_archive = GithubArchive(use_https=True, )
    github_archive.archive_repo(mock_git_asset, 'mock/path', operation)

    mock_subprocess.assert_called()
    mock_logger.assert_called_once_with(message)
Ejemplo n.º 19
0
def test_run_orgs_pull_true(mock_logger, mock_determine_repo_context,
                            mock_iterate_gists, mock_get_all_org_repos):
    GithubArchive.run(user_clone=False,
                      user_pull=False,
                      orgs_clone=False,
                      orgs_pull=True,
                      gists_clone=False,
                      gists_pull=False,
                      branch='master')
    mock_get_all_org_repos.assert_called_once()
    mock_determine_repo_context.assert_called_once()
    mock_iterate_gists.assert_not_called()
    mock_logger.info.call_count == 3
Ejemplo n.º 20
0
def test_run_user_pull_true(mock_logger, mock_iterate_repos,
                            mock_iterate_gists, mock_get_repos):
    GithubArchive.run(
        user_clone=False,
        user_pull=True,
        orgs_clone=False,
        orgs_pull=False,
        gists_clone=False,
        gists_pull=False,
    )
    mock_get_repos.assert_called_once()
    mock_iterate_repos.assert_called_once()
    mock_iterate_gists.assert_not_called()
    mock_logger.info.call_count == 3
Ejemplo n.º 21
0
def test_run_orgs_list_without_flag(mock_logger, mock_iterate_repos,
                                    mock_iterate_gists,
                                    mock_get_all_org_repos):
    GithubArchive.run(user_clone=False,
                      user_pull=False,
                      orgs_clone=False,
                      orgs_pull=False,
                      gists_clone=False,
                      gists_pull=False,
                      branch='master')
    mock_get_all_org_repos.assert_not_called()
    mock_iterate_repos.assert_not_called()
    mock_iterate_gists.assert_not_called()
    mock_logger.info.call_count == 3
Ejemplo n.º 22
0
def test_run_token_view(mock_get_all_git_assets, mock_view_repos,
                        mock_authed_user_in_users, mock_get_user):
    github_archive = GithubArchive(
        token='123',
        users='justintime50',
        view=True,
    )

    github_archive.authenticated_username = '******'
    github_archive.run()

    mock_get_all_git_assets.assert_called_once()
    mock_view_repos.assert_called_once()
    assert github_archive.users == [
    ]  # Assert the authed user gets removed from list
Ejemplo n.º 23
0
def test_initialize_project_include_exclude_together(mock_logger):
    # TODO: Is it possible to test all variations easily in one test?
    # Parametrize doesn't work great because we can't easily swap the param name being used
    message = 'The include and exclude flags are mutually exclusive. Only one can be used on each run.'
    with pytest.raises(ValueError) as error:
        github_archive = GithubArchive(
            users='justintime50',
            clone=True,
            include='mock-repo',
            exclude='another-mock-repo',
        )
        github_archive.initialize_project()

    mock_logger.assert_called_with(message)
    assert message == str(error.value)
Ejemplo n.º 24
0
def test_run_token_pull(mock_get_all_git_assets, mock_iterate_repos_to_archive,
                        mock_authed_user_in_users, mock_get_user):
    github_archive = GithubArchive(
        token='123',
        users='justintime50',
        pull=True,
    )

    github_archive.authenticated_username = '******'
    github_archive.run()

    mock_get_all_git_assets.assert_called_once()
    mock_iterate_repos_to_archive.assert_called_once_with(
        mock_get_all_git_assets(), PULL_OPERATION)
    assert github_archive.users == [
    ]  # Assert the authed user gets removed from list
Ejemplo n.º 25
0
def test_iterate_gists(mock_archive_gist, mock_github_instance,
                       mock_git_asset):
    gists = [mock_git_asset]
    GithubArchive(gists='mock_username', ).iterate_gists_to_archive(
        gists, CLONE_OPERATION)

    mock_archive_gist.assert_called()
Ejemplo n.º 26
0
def test_get_get_all_gists(mock_get_user, mock_get_gists,
                           mock_github_instance):
    gists = 'justintime50,user2'
    GithubArchive(gists=gists, ).get_all_git_assets(GIST_CONTEXT)

    mock_get_user.call_count == len(gists)
    mock_get_gists.call_count == len(gists)
Ejemplo n.º 27
0
def test_get_all_user_repos(mock_get_user, mock_get_repos,
                            mock_github_instance):
    users = 'justintime50,user2'
    GithubArchive(users=users, ).get_all_git_assets(USER_CONTEXT)

    mock_get_user.call_count == len(users)
    mock_get_repos.call_count == len(users)
Ejemplo n.º 28
0
def test_authenticated_user_in_users(mock_get_user):
    authenticated_user_in_users = GithubArchive(
        token='123',
        users='unauthenticated_user',
    ).authenticated_user_in_users()

    assert authenticated_user_in_users is False
Ejemplo n.º 29
0
def test_run_users_view(mock_get_all_git_assets, mock_view_repos):
    GithubArchive(
        users='justintime50',
        view=True,
    ).run()

    mock_get_all_git_assets.assert_called_once()
    mock_view_repos.assert_called_once()
Ejemplo n.º 30
0
def test_remove_failed_dirs_on_error(mock_logger, mock_chmod,
                                     mock_path_exists):
    """Tests that we remove failed dirs correctly when there's an error such as read-only `.git` folders on Windows."""
    with pytest.raises(OSError):
        GithubArchive().remove_failed_dirs('mock/path', ['mock_dir'])

    mock_logger.assert_called_once()
    mock_chmod.assert_called_once()