def test_paginated_list_uploads(foss: Fossology, upload: Upload,
                                test_file_path: str):
    if versiontuple(foss.version) < versiontuple("1.1.1"):
        # Upload pagination not available yet
        return
    # Add a second upload
    second_upload = foss.upload_file(
        foss.rootFolder,
        file=test_file_path,
        description="Test second upload via fossology-python lib",
        access_level=AccessLevel.PUBLIC,
    )
    time.sleep(3)
    uploads, _ = foss.list_uploads(page_size=1, page=1)
    assert len(uploads) == 1

    uploads, _ = foss.list_uploads(page_size=1, page=2)
    assert len(uploads) == 1

    uploads, _ = foss.list_uploads(page_size=2, page=1)
    assert len(uploads) == 2

    uploads, _ = foss.list_uploads(page_size=1, all_pages=True)
    num_known_uploads = 0
    for up in uploads:
        if up.description in (
                "Test upload via fossology-python lib",
                "Test second upload via fossology-python lib",
        ):
            num_known_uploads += 1
    assert num_known_uploads >= 2

    foss.delete_upload(second_upload)
def test_delete_unknown_upload_unknown_group(foss: Fossology):
    if versiontuple(foss.version) > versiontuple("1.0.16"):
        upload = Upload(
            foss.rootFolder,
            "Root Folder",
            secrets.randbelow(1000),
            "",
            "Non Upload",
            "2020-05-05",
            hash={
                "sha1": None,
                "md5": None,
                "sha256": None,
                "size": None
            },
        )
    else:
        upload = Upload(
            foss.rootFolder,
            "Root Folder",
            secrets.randbelow(1000),
            "",
            "Non Upload",
            "2020-05-05",
            filesize="1024",
            filesha1="597d209fd962f401866f12db9fa1f7301aee15a9",
        )
    with pytest.raises(FossologyApiError):
        foss.delete_upload(upload)

    with pytest.raises(AuthorizationError) as excinfo:
        foss.delete_upload(upload, group="test")
    assert f"Deleting upload {upload.id} for group test not authorized" in str(
        excinfo.value)
Example #3
0
def upload(foss: Fossology, test_file_path: str) -> Upload:
    test_upload = foss.upload_file(
        foss.rootFolder,
        file=test_file_path,
        description="Test upload via fossology-python lib",
        access_level=AccessLevel.PUBLIC,
    )
    time.sleep(3)
    yield test_upload
    foss.delete_upload(test_upload)
Example #4
0
def scanned_upload(foss: Fossology, test_file_path: str,
                   foss_schedule_agents: Dict) -> Upload:
    test_upload = foss.upload_file(
        foss.rootFolder,
        file=test_file_path,
        description="Test upload via fossology-python lib",
        access_level=AccessLevel.PUBLIC,
    )
    time.sleep(3)
    foss.schedule_jobs(foss.rootFolder, test_upload, foss_schedule_agents)
    yield test_upload
    foss.delete_upload(test_upload)
def test_upload_from_server(foss: Fossology):
    server = {
        "path": "/tmp/base-files-11",
        "name": "base-files-11",
    }
    server_upload = foss.upload_file(
        foss.rootFolder,
        server=server,
        description="Test upload from server via python lib",
        access_level=AccessLevel.PUBLIC,
    )
    assert server_upload.uploadname == server["name"]

    # Cleanup
    foss.delete_upload(server_upload)
Example #6
0
def test_delete_unknown_upload(foss: Fossology):
    upload = Upload(
        foss.rootFolder,
        "Root Folder",
        secrets.randbelow(1000),
        "",
        "Non Upload",
        "2020-05-05",
        {
            "sha1": None,
            "md5": None,
            "sha256": None,
            "size": None
        },
    )
    with pytest.raises(FossologyApiError):
        foss.delete_upload(upload)
def test_upload_from_vcs(foss: Fossology):
    vcs = {
        "vcsType": "git",
        "vcsUrl": "https://github.com/fossology/fossology-python",
        "vcsName": "fossology-python-github-master",
        "vcsUsername": "",
        "vcsPassword": "",
    }
    vcs_upload = foss.upload_file(
        foss.rootFolder,
        vcs=vcs,
        description="Test upload from github repository via python lib",
        access_level=AccessLevel.PUBLIC,
    )
    assert vcs_upload.uploadname == vcs["vcsName"]
    search_result = foss.search(searchType=SearchTypes.DIRECTORIES, filename=".git",)
    assert not search_result
    foss.delete_upload(vcs_upload)
def test_upload_from_url(foss: Fossology):
    url = {
        "url": "https://github.com/fossology/fossology-python/archive/master.zip",
        "name": "fossology-python-master.zip",
        "accept": "zip",
        "reject": "",
        "maxRecursionDepth": "1",
    }
    url_upload = foss.upload_file(
        foss.rootFolder,
        url=url,
        description="Test upload from url via python lib",
        access_level=AccessLevel.PUBLIC,
    )
    assert url_upload.uploadname == url["name"]

    # Cleanup
    foss.delete_upload(url_upload)
def test_upload_ignore_scm(foss: Fossology):
    vcs = {
        "vcsType": "git",
        "vcsUrl": "https://github.com/fossology/fossology-python",
        "vcsName": "fossology-python-github-master",
        "vcsUsername": "",
        "vcsPassword": "",
    }
    vcs_upload = foss.upload_file(
        foss.rootFolder,
        vcs=vcs,
        description="Test upload with ignore_scm flag",
        ignore_scm=False,
        access_level=AccessLevel.PUBLIC,
    )
    assert vcs_upload.uploadname == vcs["vcsName"]
    # FIXME: shall be fixed in the next release
    # assert foss.search(
    #    searchType=SearchTypes.DIRECTORIES, filename=".git",
    # ) == $something

    # Cleanup
    foss.delete_upload(vcs_upload)
Example #10
0
def test_delete_upload_nogroup(foss: Fossology, upload: Upload):
    with pytest.raises(AuthorizationError) as excinfo:
        foss.delete_upload(upload, group="test")
    assert f"Deleting upload {upload.id} for group test not authorized" in str(
        excinfo.value)