Misc fixes for handling groups (#4195)
A bunch of places where we missed handling groups <!-- PR description--> --- #### 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. --> * #<issue> #### Test Plan <!-- How will this be tested prior to merging.--> - [ ] 💪 Manual - [x] ⚡ Unit test - [ ] 💚 E2E
This commit is contained in:
parent
f742318319
commit
eb8f3131f9
@ -10,7 +10,7 @@ func IsMetadataFile(p path.Path) bool {
|
||||
case path.OneDriveService:
|
||||
return metadata.HasMetaSuffix(p.Item())
|
||||
|
||||
case path.SharePointService:
|
||||
case path.SharePointService, path.GroupsService:
|
||||
return p.Category() == path.LibrariesCategory && metadata.HasMetaSuffix(p.Item())
|
||||
|
||||
default:
|
||||
|
||||
@ -73,6 +73,11 @@ var (
|
||||
category: path.PagesCategory,
|
||||
expected: assert.Falsef,
|
||||
},
|
||||
{
|
||||
service: path.GroupsService,
|
||||
category: path.LibrariesCategory,
|
||||
expected: assert.Truef,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@ -47,8 +47,8 @@ func (d *Details) add(
|
||||
// Use the item name and the path for the ShortRef. This ensures that renames
|
||||
// within a directory generate unique ShortRefs.
|
||||
if info.infoType() == OneDriveItem || info.infoType() == SharePointLibrary {
|
||||
if info.OneDrive == nil && info.SharePoint == nil {
|
||||
return entry, clues.New("item is not SharePoint or OneDrive type")
|
||||
if info.OneDrive == nil && info.SharePoint == nil && info.Groups == nil {
|
||||
return entry, clues.New("item is not Groups, SharePoint or OneDrive type")
|
||||
}
|
||||
|
||||
// clean metadata suffixes from item refs
|
||||
|
||||
@ -207,32 +207,51 @@ func exchangeEntry(t *testing.T, id string, size int, it ItemType) Entry {
|
||||
}
|
||||
}
|
||||
|
||||
func oneDriveishEntry(t *testing.T, id string, size int, it ItemType) Entry {
|
||||
service := path.OneDriveService
|
||||
category := path.FilesCategory
|
||||
info := ItemInfo{
|
||||
OneDrive: &OneDriveInfo{
|
||||
ItemName: "bar",
|
||||
DriveID: "drive-id",
|
||||
DriveName: "drive-name",
|
||||
Modified: time.Now(),
|
||||
ItemType: it,
|
||||
Size: int64(size),
|
||||
},
|
||||
}
|
||||
func oneDriveishEntry(t *testing.T, id string, size int, it ItemType, service path.ServiceType) Entry {
|
||||
var (
|
||||
category path.CategoryType
|
||||
info ItemInfo
|
||||
)
|
||||
|
||||
if it == SharePointLibrary {
|
||||
service = path.SharePointService
|
||||
switch it {
|
||||
case OneDriveItem:
|
||||
category = path.FilesCategory
|
||||
info = ItemInfo{
|
||||
OneDrive: &OneDriveInfo{
|
||||
ItemName: "bar",
|
||||
DriveID: "drive-id",
|
||||
DriveName: "drive-name",
|
||||
Modified: time.Now(),
|
||||
ItemType: it,
|
||||
Size: int64(size),
|
||||
},
|
||||
}
|
||||
case SharePointLibrary:
|
||||
category = path.LibrariesCategory
|
||||
|
||||
info.OneDrive = nil
|
||||
info.SharePoint = &SharePointInfo{
|
||||
ItemName: "bar",
|
||||
DriveID: "drive-id",
|
||||
DriveName: "drive-name",
|
||||
Modified: time.Now(),
|
||||
ItemType: it,
|
||||
Size: int64(size),
|
||||
switch service {
|
||||
case path.SharePointService:
|
||||
info = ItemInfo{
|
||||
SharePoint: &SharePointInfo{
|
||||
ItemName: "bar",
|
||||
DriveID: "drive-id",
|
||||
DriveName: "drive-name",
|
||||
Modified: time.Now(),
|
||||
ItemType: it,
|
||||
Size: int64(size),
|
||||
},
|
||||
}
|
||||
case path.GroupsService:
|
||||
info = ItemInfo{
|
||||
Groups: &GroupsInfo{
|
||||
ItemName: "bar",
|
||||
DriveID: "drive-id",
|
||||
DriveName: "drive-name",
|
||||
Modified: time.Now(),
|
||||
ItemType: it,
|
||||
Size: int64(size),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -277,21 +296,25 @@ func (suite *DetailsUnitSuite) TestDetailsAdd_NoLocationFolders() {
|
||||
},
|
||||
{
|
||||
name: "OneDrive File",
|
||||
entry: oneDriveishEntry(t, itemID, 42, OneDriveItem),
|
||||
entry: oneDriveishEntry(t, itemID, 42, OneDriveItem, path.OneDriveService),
|
||||
},
|
||||
{
|
||||
name: "SharePoint File",
|
||||
entry: oneDriveishEntry(t, itemID, 42, SharePointLibrary),
|
||||
entry: oneDriveishEntry(t, itemID, 42, SharePointLibrary, path.SharePointService),
|
||||
},
|
||||
{
|
||||
name: "Legacy SharePoint File",
|
||||
entry: func() Entry {
|
||||
res := oneDriveishEntry(t, itemID, 42, SharePointLibrary)
|
||||
res := oneDriveishEntry(t, itemID, 42, SharePointLibrary, path.SharePointService)
|
||||
res.SharePoint.ItemType = OneDriveItem
|
||||
|
||||
return res
|
||||
}(),
|
||||
},
|
||||
{
|
||||
name: "Group SharePoint File",
|
||||
entry: oneDriveishEntry(t, itemID, 42, SharePointLibrary, path.GroupsService),
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range table {
|
||||
@ -333,11 +356,11 @@ func (suite *DetailsUnitSuite) TestDetailsAdd_LocationFolders() {
|
||||
t := suite.T()
|
||||
|
||||
exchangeMail1 := exchangeEntry(t, "foo1", 42, ExchangeMail)
|
||||
oneDrive1 := oneDriveishEntry(t, "foo1", 42, OneDriveItem)
|
||||
sharePoint1 := oneDriveishEntry(t, "foo1", 42, SharePointLibrary)
|
||||
sharePointLegacy1 := oneDriveishEntry(t, "foo1", 42, SharePointLibrary)
|
||||
oneDrive1 := oneDriveishEntry(t, "foo1", 42, OneDriveItem, path.OneDriveService)
|
||||
sharePoint1 := oneDriveishEntry(t, "foo1", 42, SharePointLibrary, path.SharePointService)
|
||||
sharePointLegacy1 := oneDriveishEntry(t, "foo1", 42, SharePointLibrary, path.SharePointService)
|
||||
sharePointLegacy1.SharePoint.ItemType = OneDriveItem
|
||||
|
||||
group1 := oneDriveishEntry(t, "foo1", 42, SharePointLibrary, path.GroupsService)
|
||||
// Sleep for a little so we get a larger difference in mod times between the
|
||||
// earlier and later entries.
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
@ -611,6 +634,33 @@ func (suite *DetailsUnitSuite) TestDetailsAdd_LocationFolders() {
|
||||
res = append(res, e)
|
||||
}
|
||||
|
||||
return res
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "One Group SharePoint Item",
|
||||
entries: func() []Entry {
|
||||
e := group1
|
||||
ei := *group1.Groups
|
||||
e.Groups = &ei
|
||||
|
||||
return []Entry{e}
|
||||
},
|
||||
expectedDirs: func() []Entry {
|
||||
res := []Entry{}
|
||||
|
||||
for _, entry := range oneDriveishFolders {
|
||||
e := entry
|
||||
ei := *entry.Folder
|
||||
|
||||
e.Folder = &ei
|
||||
e.Folder.DataType = SharePointLibrary
|
||||
e.Folder.Size = group1.Groups.Size
|
||||
e.Folder.Modified = group1.Groups.Modified
|
||||
|
||||
res = append(res, e)
|
||||
}
|
||||
|
||||
return res
|
||||
},
|
||||
},
|
||||
|
||||
@ -17,7 +17,6 @@ func NewGroupsLocationIDer(
|
||||
driveID string,
|
||||
escapedFolders ...string,
|
||||
) (uniqueLoc, error) {
|
||||
// TODO(meain): path fixes
|
||||
if err := path.ValidateServiceAndCategory(path.GroupsService, category); err != nil {
|
||||
return uniqueLoc{}, clues.Wrap(err, "making groups LocationIDer")
|
||||
}
|
||||
@ -26,12 +25,12 @@ func NewGroupsLocationIDer(
|
||||
prefixElems := 1
|
||||
|
||||
if driveID != "" { // non sp paths don't have driveID
|
||||
pb.Append(driveID)
|
||||
pb = pb.Append(driveID)
|
||||
|
||||
prefixElems = 2
|
||||
}
|
||||
|
||||
pb.Append(escapedFolders...)
|
||||
pb = pb.Append(escapedFolders...)
|
||||
|
||||
return uniqueLoc{pb, prefixElems}, nil
|
||||
}
|
||||
@ -125,7 +124,6 @@ func (i *GroupsInfo) uniqueLocation(baseLoc *path.Builder) (*uniqueLoc, error) {
|
||||
}
|
||||
|
||||
func (i *GroupsInfo) updateFolder(f *FolderInfo) error {
|
||||
// TODO(meain): path updates if any
|
||||
if i.ItemType == SharePointLibrary {
|
||||
return updateFolderWithinDrive(SharePointLibrary, i.DriveName, i.DriveID, f)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user