treat / as root for restore of onedrive and sharepoint (#3328)
<!-- PR description--> passing '/' will select anything for backup details and restore for onedrive and sharepoint #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No #### Type of change <!--- Please check the type of change your PR introduces: ---> - [ ] 🌻 Feature - [x] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Supportability/Tests - [ ] 💻 CI/Deployment - [ ] 🧹 Tech Debt/Cleanup #### Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #https://github.com/alcionai/corso/issues/3252 #### Test Plan <!-- How will this be tested prior to merging.--> - [x] 💪 Manual - [x] ⚡ Unit test - [ ] 💚 E2E
This commit is contained in:
parent
f2f76d932d
commit
245d3ee089
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common/dttm"
|
"github.com/alcionai/corso/src/internal/common/dttm"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
|
"github.com/alcionai/corso/src/pkg/selectors"
|
||||||
)
|
)
|
||||||
|
|
||||||
// common flag vars (eg: FV)
|
// common flag vars (eg: FV)
|
||||||
@ -215,6 +216,11 @@ func trimFolderSlash(folders []string) []string {
|
|||||||
res := make([]string, 0, len(folders))
|
res := make([]string, 0, len(folders))
|
||||||
|
|
||||||
for _, p := range folders {
|
for _, p := range folders {
|
||||||
|
if p == string(path.PathSeparator) {
|
||||||
|
res = selectors.Any()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
// Use path package because it has logic to handle escaping already.
|
// Use path package because it has logic to handle escaping already.
|
||||||
res = append(res, path.TrimTrailingSlash(p))
|
res = append(res, path.TrimTrailingSlash(p))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/cli/utils"
|
"github.com/alcionai/corso/src/cli/utils"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
type OneDriveUtilsSuite struct {
|
type OneDriveUtilsSuite struct {
|
||||||
@ -26,6 +27,7 @@ func (suite *OneDriveUtilsSuite) TestIncludeOneDriveRestoreDataSelectors() {
|
|||||||
containsOnly = []string{"contains"}
|
containsOnly = []string{"contains"}
|
||||||
prefixOnly = []string{"/prefix"}
|
prefixOnly = []string{"/prefix"}
|
||||||
containsAndPrefix = []string{"contains", "/prefix"}
|
containsAndPrefix = []string{"contains", "/prefix"}
|
||||||
|
onlySlash = []string{string(path.PathSeparator)}
|
||||||
)
|
)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
@ -87,6 +89,15 @@ func (suite *OneDriveUtilsSuite) TestIncludeOneDriveRestoreDataSelectors() {
|
|||||||
},
|
},
|
||||||
expectIncludeLen: 2,
|
expectIncludeLen: 2,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "folder with just /",
|
||||||
|
opts: utils.OneDriveOpts{
|
||||||
|
Users: empty,
|
||||||
|
FileName: empty,
|
||||||
|
FolderPath: onlySlash,
|
||||||
|
},
|
||||||
|
expectIncludeLen: 1,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.Run(test.name, func() {
|
suite.Run(test.name, func() {
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/cli/utils"
|
"github.com/alcionai/corso/src/cli/utils"
|
||||||
"github.com/alcionai/corso/src/internal/common/dttm"
|
"github.com/alcionai/corso/src/internal/common/dttm"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
"github.com/alcionai/corso/src/pkg/selectors"
|
"github.com/alcionai/corso/src/pkg/selectors"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -30,6 +31,7 @@ func (suite *SharePointUtilsSuite) TestIncludeSharePointRestoreDataSelectors() {
|
|||||||
containsOnly = []string{"contains"}
|
containsOnly = []string{"contains"}
|
||||||
prefixOnly = []string{"/prefix"}
|
prefixOnly = []string{"/prefix"}
|
||||||
containsAndPrefix = []string{"contains", "/prefix"}
|
containsAndPrefix = []string{"contains", "/prefix"}
|
||||||
|
onlySlash = []string{string(path.PathSeparator)}
|
||||||
)
|
)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
@ -182,6 +184,13 @@ func (suite *SharePointUtilsSuite) TestIncludeSharePointRestoreDataSelectors() {
|
|||||||
},
|
},
|
||||||
expectIncludeLen: 2,
|
expectIncludeLen: 2,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "folder with just /",
|
||||||
|
opts: utils.SharePointOpts{
|
||||||
|
FolderPath: onlySlash,
|
||||||
|
},
|
||||||
|
expectIncludeLen: 1,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.Run(test.name, func() {
|
suite.Run(test.name, func() {
|
||||||
|
|||||||
14
src/cli/utils/testdata/opts.go
vendored
14
src/cli/utils/testdata/opts.go
vendored
@ -356,6 +356,13 @@ var (
|
|||||||
FolderPath: selectors.Any(),
|
FolderPath: selectors.Any(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "FilesWithSingleSlash",
|
||||||
|
Expected: testdata.OneDriveItems,
|
||||||
|
Opts: utils.OneDriveOpts{
|
||||||
|
FolderPath: []string{"/"},
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
Name: "FolderPrefixMatch",
|
Name: "FolderPrefixMatch",
|
||||||
Expected: testdata.OneDriveItems,
|
Expected: testdata.OneDriveItems,
|
||||||
@ -482,6 +489,13 @@ var (
|
|||||||
FolderPath: selectors.Any(),
|
FolderPath: selectors.Any(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "LibraryItemsWithSingleSlash",
|
||||||
|
Expected: testdata.SharePointLibraryItems,
|
||||||
|
Opts: utils.SharePointOpts{
|
||||||
|
FolderPath: []string{"/"},
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
Name: "FolderPrefixMatch",
|
Name: "FolderPrefixMatch",
|
||||||
Expected: testdata.SharePointLibraryItems,
|
Expected: testdata.SharePointLibraryItems,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user