GC: Restore: SharePoint: Library Folder Creation (#1960)
## Description Restore for `Libraries` to be housed within the main drive directory for the site drive. - Change to `onedrive` package to allow for the export of `CreateRestoreFolders()` a utility function for creating a directory structure. - Temporary test (`TestRestoreLocation()`) was added to ensure proper folder creation for SharePoint Libraries. <!-- Insert PR description--> ## Does this PR need a docs update or release note? - [x] ⛔ No ## Type of change <!--- Please check the type of change your PR introduces: ---> - [x] 🌻 Feature ## Issue(s) - related to #1938 ## Test Plan - [x] ⚡ Unit test
This commit is contained in:
parent
cb03d4b333
commit
c2eb796562
@ -61,7 +61,7 @@ func (suite *OneDriveSuite) TestCreateGetDeleteFolder() {
|
||||
}
|
||||
}()
|
||||
|
||||
folderID, err := createRestoreFolders(ctx, gs, driveID, folderElements)
|
||||
folderID, err := CreateRestoreFolders(ctx, gs, driveID, folderElements)
|
||||
require.NoError(t, err)
|
||||
|
||||
folderIDs = append(folderIDs, folderID)
|
||||
@ -69,7 +69,7 @@ func (suite *OneDriveSuite) TestCreateGetDeleteFolder() {
|
||||
folderName2 := "Corso_Folder_Test_" + common.FormatNow(common.SimpleTimeTesting)
|
||||
folderElements = append(folderElements, folderName2)
|
||||
|
||||
folderID, err = createRestoreFolders(ctx, gs, driveID, folderElements)
|
||||
folderID, err = CreateRestoreFolders(ctx, gs, driveID, folderElements)
|
||||
require.NoError(t, err)
|
||||
|
||||
folderIDs = append(folderIDs, folderID)
|
||||
|
||||
@ -102,7 +102,7 @@ func RestoreCollection(
|
||||
logger.Ctx(ctx).Debugf("Restore target for %s is %v", dc.FullPath(), restoreFolderElements)
|
||||
|
||||
// Create restore folders and get the folder ID of the folder the data stream will be restored in
|
||||
restoreFolderID, err := createRestoreFolders(ctx, service, drivePath.DriveID, restoreFolderElements)
|
||||
restoreFolderID, err := CreateRestoreFolders(ctx, service, drivePath.DriveID, restoreFolderElements)
|
||||
if err != nil {
|
||||
errUpdater(directory.String(), errors.Wrapf(err, "failed to create folders %v", restoreFolderElements))
|
||||
return metrics, false
|
||||
@ -159,7 +159,7 @@ func RestoreCollection(
|
||||
|
||||
// createRestoreFolders creates the restore folder hieararchy in the specified drive and returns the folder ID
|
||||
// of the last folder entry in the hiearchy
|
||||
func createRestoreFolders(ctx context.Context, service graph.Servicer, driveID string, restoreFolders []string,
|
||||
func CreateRestoreFolders(ctx context.Context, service graph.Servicer, driveID string, restoreFolders []string,
|
||||
) (string, error) {
|
||||
driveRoot, err := service.Client().DrivesById(driveID).Root().Get(ctx, nil)
|
||||
if err != nil {
|
||||
|
||||
@ -10,8 +10,11 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
"github.com/alcionai/corso/src/internal/common"
|
||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||
"github.com/alcionai/corso/src/internal/connector/onedrive"
|
||||
"github.com/alcionai/corso/src/internal/data"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/pkg/path"
|
||||
)
|
||||
|
||||
@ -83,3 +86,36 @@ func (suite *SharePointCollectionSuite) TestSharePointListCollection() {
|
||||
require.NotNil(t, shareInfo.Info().SharePoint)
|
||||
assert.Equal(t, testName, shareInfo.Info().SharePoint.ItemName)
|
||||
}
|
||||
|
||||
// TestRestoreLocation temporary test for greater restore operation
|
||||
// TODO delete after full functionality tested in GraphConnector
|
||||
func (suite *SharePointCollectionSuite) TestRestoreLocation() {
|
||||
ctx, flush := tester.NewContext()
|
||||
defer flush()
|
||||
|
||||
t := suite.T()
|
||||
a := tester.NewM365Account(t)
|
||||
account, err := a.M365Config()
|
||||
require.NoError(t, err)
|
||||
|
||||
service, err := createTestService(account)
|
||||
require.NoError(t, err)
|
||||
|
||||
rootFolder := "General_" + common.FormatNow(common.SimpleTimeTesting)
|
||||
siteID := tester.M365SiteID(t)
|
||||
|
||||
folderID, err := createRestoreFolders(ctx, service, siteID, []string{rootFolder})
|
||||
assert.NoError(t, err)
|
||||
t.Log("FolderID: " + folderID)
|
||||
|
||||
_, err = createRestoreFolders(ctx, service, siteID, []string{rootFolder, "Tsao"})
|
||||
assert.NoError(t, err)
|
||||
|
||||
// CleanUp
|
||||
siteDrive, err := service.Client().SitesById(siteID).Drive().Get(ctx, nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
driveID := *siteDrive.GetId()
|
||||
err = onedrive.DeleteItem(ctx, service, driveID, folderID)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
@ -68,3 +68,20 @@ func RestoreCollections(
|
||||
dest.ContainerName),
|
||||
nil
|
||||
}
|
||||
|
||||
// createRestoreFolders creates the restore folder hieararchy in the specified drive and returns the folder ID
|
||||
// of the last folder entry given in the hiearchy
|
||||
func createRestoreFolders(ctx context.Context, service graph.Servicer, siteID string, restoreFolders []string,
|
||||
) (string, error) {
|
||||
// Get Main Drive for Site, Documents
|
||||
mainDrive, err := service.Client().SitesById(siteID).Drive().Get(ctx, nil)
|
||||
if err != nil {
|
||||
return "", errors.Wrapf(
|
||||
err,
|
||||
"failed to get site drive root. details: %s",
|
||||
support.ConnectorStackErrorTrace(err),
|
||||
)
|
||||
}
|
||||
|
||||
return onedrive.CreateRestoreFolders(ctx, service, *mainDrive.GetId(), restoreFolders)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user