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)
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
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
def move_folder(foss: Fossology) -> Folder: folder = foss.create_folder(foss.rootFolder, "MoveUploadTest", "Test move upload function") yield folder foss.delete_folder(folder)
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)