def test_create_folder_nogroup(foss: Fossology):
    name = "FossPythonTest"
    desc = "Created via the Fossology Python API"
    with pytest.raises(AuthorizationError) as excinfo:
        foss.create_folder(foss.rootFolder, name, description=desc, group="test")
    assert "Folder creation for group test in folder 1 not authorized" in str(
        excinfo.value
    )
def test_create_folder_returns_200_but_folder_does_not_exists(
    foss_server: str, foss: Fossology
):
    responses.add(responses.POST, f"{foss_server}/api/v1/folders", status=200)
    with pytest.raises(FossologyApiError) as excinfo:
        foss.create_folder(foss.rootFolder, "NoFolder")
    assert (
        f"Folder 'NoFolder' exists but was not found under the folder {foss.rootFolder.name} ({foss.rootFolder.id})"
        in str(excinfo.value)
    )
def test_move_folder(foss: Fossology):
    move_copy_folder = foss.create_folder(
        foss.rootFolder, "MoveCopyTest", "Test move() and copy() functions"
    )
    test_folder = foss.create_folder(
        foss.rootFolder, "TestFolder", "Folder to be moved and copied via API"
    )
    test_folder = foss.move_folder(test_folder, move_copy_folder)
    assert test_folder.parent == move_copy_folder.id

    # Cleanup
    foss.delete_folder(move_copy_folder)
def test_create_folder_same_name_different_case(foss: Fossology):
    name = "FossTest"
    desc = "Created via the Fossology Python API"
    test_folder = foss.create_folder(foss.rootFolder, name, description=desc)
    assert test_folder.name == name
    assert test_folder.description == desc

    # Recreate folder with a different name to test API response 200
    same_folder = foss.create_folder(foss.rootFolder, "fOSStEST", description=desc)
    assert test_folder == same_folder

    # Cleanup
    foss.delete_folder(test_folder)
def test_create_folder(foss: Fossology):
    name = "FossPythonTest"
    desc = "Created via the Fossology Python API"
    test_folder = foss.create_folder(foss.rootFolder, name, description=desc)
    assert test_folder.name == name
    assert test_folder.description == desc

    # Recreate folder to test API response 200
    test_folder = foss.create_folder(foss.rootFolder, name, description=desc)
    assert test_folder.name == name

    # Cleanup
    foss.delete_folder(test_folder)
Beispiel #6
0
def test_delete_folder(foss: Fossology):
    folder = foss.create_folder(foss.rootFolder, "ToBeDeleted",
                                "Test folder deletion via API")
    foss.delete_folder(folder)
    time.sleep(3)
    with pytest.raises(FossologyApiError) as excinfo:
        foss.detail_folder(folder)
    assert f"Error while getting details for folder ToBeDeleted ({folder.id})" in str(
        excinfo.value)
def test_copy_upload(foss: Fossology, upload: Upload):
    copy_upload_folder = foss.create_folder(foss.rootFolder,
                                            "CopyUploadFolder")
    foss.copy_upload(upload, copy_upload_folder)
    copied_upload = foss.detail_upload(upload.id)
    assert copied_upload
    # Upload should be visible twice but it isn't
    # Bug or Feature?
    # Cleanup
    foss.delete_folder(copy_upload_folder)
def test_copy_folder(foss: Fossology):
    move_copy_folder = foss.create_folder(
        foss.rootFolder, "MoveCopyTest", "Test move() and copy() functions"
    )
    test_folder = foss.create_folder(
        foss.rootFolder, "TestFolder", "Folder to be moved and copied via API"
    )
    folder_copy = foss.copy_folder(test_folder, move_copy_folder)
    folder_list = foss.list_folders()
    folder_copy = [
        folder
        for folder in folder_list
        if folder.parent == foss.rootFolder.id and folder.name == "TestFolder"
    ]
    assert folder_copy

    # Cleanup
    foss.delete_folder(move_copy_folder)
    foss.delete_folder(folder_copy[0])
def test_update_folder(foss: Fossology):
    name = "FossPythonFolderUpdate"
    desc = "Created via the Fossology Python API"
    update_folder = foss.create_folder(foss.rootFolder, name, desc)

    name = "NewFolderName"
    desc = "Updated via the Fossology Python API"
    update_folder = foss.update_folder(update_folder, name=name, description=desc)
    assert update_folder.name == name
    assert update_folder.description == desc

    # Cleanup
    foss.delete_folder(update_folder)
def test_get_uploads(foss: Fossology, upload_folder: Folder, test_file_path: str):
    name = "FossPythonTestUploadsSubfolder"
    desc = "Created via the Fossology Python API"
    upload_subfolder = foss.create_folder(upload_folder, name, description=desc)
    foss.upload_file(
        upload_folder,
        file=test_file_path,
        description="Test upload from github repository via python lib",
    )
    foss.upload_file(
        upload_subfolder,
        file=test_file_path,
        description="Test upload from github repository via python lib",
    )
    # Folder listing is still unstable in version 1.0.16
    # Let's skip it since it has been fixed in newest versions
    if versiontuple(foss.version) > versiontuple("1.0.16"):
        assert len(foss.list_uploads(folder=upload_folder)) == 2
        assert len(foss.list_uploads(folder=upload_folder, recursive=False)) == 1
        assert len(foss.list_uploads(folder=upload_subfolder)) == 1
Beispiel #11
0
def test_get_uploads(foss: Fossology, upload_folder: Folder,
                     test_file_path: str):
    name = "FossPythonTestUploadsSubfolder"
    desc = "Created via the Fossology Python API"
    upload_subfolder = foss.create_folder(upload_folder,
                                          name,
                                          description=desc)
    foss.upload_file(
        upload_folder,
        file=test_file_path,
        description="Test upload from github repository via python lib",
    )
    foss.upload_file(
        upload_subfolder,
        file=test_file_path,
        description="Test upload from github repository via python lib",
    )
    assert len(foss.list_uploads(folder=upload_folder)) == 2
    assert len(foss.list_uploads(folder=upload_folder, recursive=False)) == 1
    assert len(foss.list_uploads(folder=upload_subfolder)) == 1
Beispiel #12
0
def move_folder(foss: Fossology) -> Folder:
    folder = foss.create_folder(foss.rootFolder, "MoveUploadTest",
                                "Test move upload function")
    yield folder
    foss.delete_folder(folder)
Beispiel #13
0
def upload_folder(foss: Fossology) -> Folder:
    name = "FossPythonTestUploads"
    desc = "Created via the Fossology Python API"
    folder = foss.create_folder(foss.rootFolder, name, description=desc)
    yield folder
    foss.delete_folder(folder)
def test_create_folder_error(foss_server: str, foss: Fossology):
    parent = Folder(secrets.randbelow(1000), "NonFolder", "", foss.rootFolder)
    responses.add(responses.POST, f"{foss_server}/api/v1/folders", status=404)
    with pytest.raises(FossologyApiError) as excinfo:
        foss.create_folder(parent, "TestFolderNoParent")
    assert "Unable to create folder TestFolderNoParent" in str(excinfo.value)
def test_create_folder_no_parent(foss: Fossology):
    parent = Folder(secrets.randbelow(1000), "Parent", "", 0)
    with pytest.raises(AuthorizationError) as excinfo:
        foss.create_folder(parent, "FossFolderNoParent")
    assert f"Folder creation in folder {parent.id} not authorized" in str(excinfo.value)