Ejemplo n.º 1
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.º 2
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.º 3
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.º 4
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.º 5
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.º 6
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.º 7
0
def test_initialize_project(mock_make_dirs, mock_dir_exist, mock_logger):
    GithubArchive(
        users='justintime50',
        clone=True,
    ).initialize_project()

    mock_logger.assert_called_once()
    assert mock_make_dirs.call_count == 2
Ejemplo n.º 8
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.º 9
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.º 10
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()
Ejemplo n.º 11
0
def test_iterate_repos_not_matching_authed_username(mock_archive_repo,
                                                    mock_github_instance,
                                                    mock_git_asset):
    repos = [mock_git_asset]
    GithubArchive(users='mock_username', ).iterate_repos_to_archive(
        repos, CLONE_OPERATION)

    mock_archive_repo.assert_called_once()
Ejemplo n.º 12
0
def test_run_orgs_view(mock_get_all_git_assets, mock_view_repos):
    GithubArchive(
        orgs='org1',
        view=True,
    ).run()

    mock_get_all_git_assets.assert_called_once()
    mock_view_repos.assert_called_once()
Ejemplo n.º 13
0
def test_run_orgs_pull(mock_get_all_git_assets, mock_iterate_repos_to_archive):
    GithubArchive(
        orgs='org1',
        pull=True,
    ).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)
Ejemplo n.º 14
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.º 15
0
def test_iterate_repos_exclude_list(mock_archive_repo, mock_github_instance,
                                    mock_git_asset):
    """Tests that we do not iterate repos that are on the exclude list."""
    repos = [mock_git_asset]
    GithubArchive(
        users='mock_username',
        exclude='mock-asset-name',
    ).iterate_repos_to_archive(repos, CLONE_OPERATION)

    mock_archive_repo.assert_not_called()
Ejemplo n.º 16
0
def test_run_gists_clone(mock_get_all_git_assets,
                         mock_iterate_gists_to_archive):
    GithubArchive(
        gists='org1',
        clone=True,
    ).run()

    mock_get_all_git_assets.assert_called_once()
    mock_iterate_gists_to_archive.assert_called_once_with(
        mock_get_all_git_assets(), CLONE_OPERATION)
Ejemplo n.º 17
0
def test_run_stars_pull(mock_get_all_git_assets,
                        mock_iterate_repos_to_archive):
    GithubArchive(
        stars='justintime50',
        pull=True,
    ).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)
Ejemplo n.º 18
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.º 19
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.º 20
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.º 21
0
def test_iterate_repos_matching_authed_username(mock_archive_repo,
                                                mock_github_instance,
                                                mock_git_asset):
    repos = [mock_git_asset]
    GithubArchive(
        token='123',
        users='mock_username',  # matches the username of the git asset
    ).iterate_repos_to_archive(repos, CLONE_OPERATION)

    mock_archive_repo.assert_called_once()
Ejemplo n.º 22
0
def test_run_users_clone(mock_get_all_git_assets,
                         mock_iterate_repos_to_archive):
    GithubArchive(
        users='justintime50',
        clone=True,
    ).run()

    mock_get_all_git_assets.assert_called_once()
    mock_iterate_repos_to_archive.assert_called_once_with(
        mock_get_all_git_assets(), CLONE_OPERATION)
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_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.º 25
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.º 26
0
 def run(self):
     github_archive = GithubArchive(
         token=self.token,
         users=self.users,
         orgs=self.orgs,
         gists=self.gists,
         stars=self.stars,
         view=self.view,
         clone=self.clone,
         pull=self.pull,
         forks=self.forks,
         location=self.location,
         include=self.include,
         exclude=self.exclude,
         use_https=self.https,
         timeout=self.timeout,
         threads=self.threads,
         base_url=self.base_url,
         log_level=self.log_level,
     )
     github_archive.run()
Ejemplo n.º 27
0
def test_remove_failed_dirs(mock_logger, mock_remove_dir, mock_path_exists):
    """Tests that we remove failed dirs correctly."""
    GithubArchive().remove_failed_dirs('mock/path', ['mock_dir'])

    mock_logger.assert_called_once()
    mock_remove_dir.assert_called_once()
Ejemplo n.º 28
0
def test_get_all_org_repos(mock_get_org, mock_get_repos, mock_github_instance):
    orgs = 'org1,org2'
    GithubArchive(orgs=orgs, ).get_all_git_assets(ORG_CONTEXT)

    mock_get_org.call_count == len(orgs)
    mock_get_repos.call_count == len(orgs)
Ejemplo n.º 29
0
def test_view_repos(mock_logger, mock_git_asset):
    repos = [mock_git_asset]
    github_archive = GithubArchive()
    github_archive.view_repos(repos)

    mock_logger.assert_called_with('mock_username/mock-asset-name')
Ejemplo n.º 30
0
def test_view_gists(mock_logger, mock_git_asset):
    gists = [mock_git_asset]
    github_archive = GithubArchive()
    github_archive.view_gists(gists)

    mock_logger.assert_called_with('mock_username/123')