diff --git a/src/internal/m365/onedrive/collections_test.go b/src/internal/m365/onedrive/collections_test.go index 93f76e147..e7cc68849 100644 --- a/src/internal/m365/onedrive/collections_test.go +++ b/src/internal/m365/onedrive/collections_test.go @@ -2328,7 +2328,7 @@ func (suite *OneDriveCollectionsUnitSuite) TestGet() { }, } - itemPagers := map[string]api.DriveItemEnumerator{} + itemPagers := map[string]api.DriveItemDeltaEnumerator{} for driveID := range test.items { itemPagers[driveID] = &mockItemPager{ @@ -2704,7 +2704,7 @@ func (suite *OneDriveCollectionsUnitSuite) TestAddURLCacheToDriveCollections() { ctx, flush := tester.NewContext(t) defer flush() - itemPagers := map[string]api.DriveItemEnumerator{} + itemPagers := map[string]api.DriveItemDeltaEnumerator{} itemPagers[driveID] = &mockItemPager{} mbh := mock.DefaultOneDriveBH() diff --git a/src/internal/m365/onedrive/handlers.go b/src/internal/m365/onedrive/handlers.go index 3090703d9..e55db3759 100644 --- a/src/internal/m365/onedrive/handlers.go +++ b/src/internal/m365/onedrive/handlers.go @@ -50,7 +50,7 @@ type BackupHandler interface { // ServiceCat returns the service and category used by this implementation. ServiceCat() (path.ServiceType, path.CategoryType) NewDrivePager(resourceOwner string, fields []string) api.DrivePager - NewItemPager(driveID, link string, fields []string) api.DriveItemEnumerator + NewItemPager(driveID, link string, fields []string) api.DriveItemDeltaEnumerator // FormatDisplayPath creates a human-readable string to represent the // provided path. FormatDisplayPath(driveName string, parentPath *path.Builder) string diff --git a/src/internal/m365/onedrive/item_collector.go b/src/internal/m365/onedrive/item_collector.go index c1df2c539..3bc23bacd 100644 --- a/src/internal/m365/onedrive/item_collector.go +++ b/src/internal/m365/onedrive/item_collector.go @@ -45,7 +45,7 @@ type itemCollector func( // provided `collector` method func collectItems( ctx context.Context, - pager api.DriveItemEnumerator, + pager api.DriveItemDeltaEnumerator, driveID, driveName string, collector itemCollector, oldPaths map[string]string, diff --git a/src/internal/m365/onedrive/item_handler.go b/src/internal/m365/onedrive/item_handler.go index a23e07c61..c440d4082 100644 --- a/src/internal/m365/onedrive/item_handler.go +++ b/src/internal/m365/onedrive/item_handler.go @@ -70,8 +70,8 @@ func (h itemBackupHandler) NewDrivePager( func (h itemBackupHandler) NewItemPager( driveID, link string, fields []string, -) api.DriveItemEnumerator { - return h.ac.NewItemPager(driveID, link, fields) +) api.DriveItemDeltaEnumerator { + return h.ac.NewDriveItemDeltaPager(driveID, link, fields) } func (h itemBackupHandler) AugmentItemInfo( diff --git a/src/internal/m365/onedrive/item_test.go b/src/internal/m365/onedrive/item_test.go index 44b3005db..c579cb27a 100644 --- a/src/internal/m365/onedrive/item_test.go +++ b/src/internal/m365/onedrive/item_test.go @@ -99,7 +99,7 @@ func (suite *ItemIntegrationSuite) TestItemReader_oneDrive() { ip := suite.service.ac. Drives(). - NewItemPager(suite.userDriveID, "", api.DriveItemSelectDefault()) + NewDriveItemDeltaPager(suite.userDriveID, "", api.DriveItemSelectDefault()) _, _, _, err := collectItems( ctx, diff --git a/src/internal/m365/onedrive/mock/handlers.go b/src/internal/m365/onedrive/mock/handlers.go index 83da2dee9..b8d328213 100644 --- a/src/internal/m365/onedrive/mock/handlers.go +++ b/src/internal/m365/onedrive/mock/handlers.go @@ -36,7 +36,7 @@ type BackupHandler struct { DrivePagerV api.DrivePager // driveID -> itemPager - ItemPagerV map[string]api.DriveItemEnumerator + ItemPagerV map[string]api.DriveItemDeltaEnumerator LocationIDFn locationIDer @@ -101,7 +101,7 @@ func (h BackupHandler) NewDrivePager(string, []string) api.DrivePager { return h.DrivePagerV } -func (h BackupHandler) NewItemPager(driveID string, _ string, _ []string) api.DriveItemEnumerator { +func (h BackupHandler) NewItemPager(driveID string, _ string, _ []string) api.DriveItemDeltaEnumerator { return h.ItemPagerV[driveID] } diff --git a/src/internal/m365/onedrive/url_cache.go b/src/internal/m365/onedrive/url_cache.go index 1c7f2d93c..ebd67d8b1 100644 --- a/src/internal/m365/onedrive/url_cache.go +++ b/src/internal/m365/onedrive/url_cache.go @@ -47,7 +47,7 @@ type urlCache struct { refreshMu sync.Mutex deltaQueryCount int - itemPager api.DriveItemEnumerator + itemPager api.DriveItemDeltaEnumerator errs *fault.Bus } @@ -56,7 +56,7 @@ type urlCache struct { func newURLCache( driveID, prevDelta string, refreshInterval time.Duration, - itemPager api.DriveItemEnumerator, + itemPager api.DriveItemDeltaEnumerator, errs *fault.Bus, ) (*urlCache, error) { err := validateCacheParams( @@ -83,7 +83,7 @@ func newURLCache( func validateCacheParams( driveID string, refreshInterval time.Duration, - itemPager api.DriveItemEnumerator, + itemPager api.DriveItemDeltaEnumerator, ) error { if len(driveID) == 0 { return clues.New("drive id is empty") diff --git a/src/internal/m365/onedrive/url_cache_test.go b/src/internal/m365/onedrive/url_cache_test.go index 4b2e4e96a..afa896caf 100644 --- a/src/internal/m365/onedrive/url_cache_test.go +++ b/src/internal/m365/onedrive/url_cache_test.go @@ -69,7 +69,7 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() { ac = suite.ac.Drives() driveID = suite.driveID newFolderName = testdata.DefaultRestoreConfig("folder").Location - driveItemPager = suite.ac.Drives().NewItemPager(driveID, "", api.DriveItemSelectDefault()) + driveItemPager = suite.ac.Drives().NewDriveItemDeltaPager(driveID, "", api.DriveItemSelectDefault()) ) ctx, flush := tester.NewContext(t) @@ -108,7 +108,7 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() { // Get the previous delta to feed into url cache prevDelta, _, _, err := collectItems( ctx, - suite.ac.Drives().NewItemPager(driveID, "", api.DriveItemSelectDefault()), + suite.ac.Drives().NewDriveItemDeltaPager(driveID, "", api.DriveItemSelectDefault()), suite.driveID, "drive-name", collectorFunc, @@ -506,7 +506,7 @@ func (suite *URLCacheUnitSuite) TestNewURLCache() { name string driveID string refreshInt time.Duration - itemPager api.DriveItemEnumerator + itemPager api.DriveItemDeltaEnumerator errors *fault.Bus expectedErr require.ErrorAssertionFunc }{ diff --git a/src/internal/m365/sharepoint/library_handler.go b/src/internal/m365/sharepoint/library_handler.go index a51621f7b..481dc367a 100644 --- a/src/internal/m365/sharepoint/library_handler.go +++ b/src/internal/m365/sharepoint/library_handler.go @@ -68,8 +68,8 @@ func (h libraryBackupHandler) NewDrivePager( func (h libraryBackupHandler) NewItemPager( driveID, link string, fields []string, -) api.DriveItemEnumerator { - return h.ac.NewItemPager(driveID, link, fields) +) api.DriveItemDeltaEnumerator { + return h.ac.NewDriveItemDeltaPager(driveID, link, fields) } func (h libraryBackupHandler) AugmentItemInfo( diff --git a/src/pkg/services/m365/api/contacts_pager.go b/src/pkg/services/m365/api/contacts_pager.go index e2082af7c..3ab5eb47f 100644 --- a/src/pkg/services/m365/api/contacts_pager.go +++ b/src/pkg/services/m365/api/contacts_pager.go @@ -105,7 +105,7 @@ func (c Contacts) NewContactsPager( options := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{ Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)), QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{ - Top: ptr.To[int32](maxNonDeltaPageSize), + Top: ptr.To(maxNonDeltaPageSize), }, } @@ -181,7 +181,7 @@ func (c Contacts) NewContactIDsPager( config := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{ QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{ Select: idAnd(parentFolderID), - Top: ptr.To[int32](maxNonDeltaPageSize), + Top: ptr.To(maxNonDeltaPageSize), }, Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)), } diff --git a/src/pkg/services/m365/api/contacts_pager_test.go b/src/pkg/services/m365/api/contacts_pager_test.go index d29be16c9..a61209636 100644 --- a/src/pkg/services/m365/api/contacts_pager_test.go +++ b/src/pkg/services/m365/api/contacts_pager_test.go @@ -15,7 +15,7 @@ import ( type ContactsPagerIntgSuite struct { tester.Suite - cts clientTesterSetup + its intgTesterSetup } func TestContactsPagerIntgSuite(t *testing.T) { @@ -27,23 +27,23 @@ func TestContactsPagerIntgSuite(t *testing.T) { } func (suite *ContactsPagerIntgSuite) SetupSuite() { - suite.cts = newClientTesterSetup(suite.T()) + suite.its = newIntegrationTesterSetup(suite.T()) } func (suite *ContactsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { t := suite.T() - ac := suite.cts.ac.Contacts() + ac := suite.its.ac.Contacts() ctx, flush := tester.NewContext(t) defer flush() - container, err := ac.GetContainerByID(ctx, suite.cts.userID, "contacts") + container, err := ac.GetContainerByID(ctx, suite.its.userID, "contacts") require.NoError(t, err, clues.ToCore(err)) conts, err := ac.Stable. Client(). Users(). - ByUserId(suite.cts.userID). + ByUserId(suite.its.userID). ContactFolders(). ByContactFolderId(ptr.Val(container.GetId())). Contacts(). @@ -57,7 +57,7 @@ func (suite *ContactsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { expect = append(expect, api.ContactCollisionKey(c)) } - results, err := ac.GetItemsInContainerByCollisionKey(ctx, suite.cts.userID, "contacts") + results, err := suite.its.ac.Contacts().GetItemsInContainerByCollisionKey(ctx, suite.its.userID, "contacts") require.NoError(t, err, clues.ToCore(err)) require.Less(t, 0, len(results), "requires at least one result") diff --git a/src/pkg/services/m365/api/drive.go b/src/pkg/services/m365/api/drive.go index d1dd93fc3..c5fbfbe63 100644 --- a/src/pkg/services/m365/api/drive.go +++ b/src/pkg/services/m365/api/drive.go @@ -8,6 +8,7 @@ import ( "github.com/microsoftgraph/msgraph-sdk-go/drives" "github.com/microsoftgraph/msgraph-sdk-go/models" + "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/m365/graph" "github.com/alcionai/corso/src/pkg/control" ) @@ -305,3 +306,13 @@ func (c Drives) DeleteItemPermission( return nil } + +// DriveItemCollisionKeyy constructs a key from the item name. +// collision keys are used to identify duplicate item conflicts for handling advanced restoration config. +func DriveItemCollisionKey(item models.DriveItemable) string { + if item == nil { + return "" + } + + return ptr.Val(item.GetName()) +} diff --git a/src/pkg/services/m365/api/drive_pager.go b/src/pkg/services/m365/api/drive_pager.go index 7d06be397..697dbe8d2 100644 --- a/src/pkg/services/m365/api/drive_pager.go +++ b/src/pkg/services/m365/api/drive_pager.go @@ -18,29 +18,29 @@ import ( ) // --------------------------------------------------------------------------- -// item pager +// delta item pager // --------------------------------------------------------------------------- -type DriveItemEnumerator interface { +type DriveItemDeltaEnumerator interface { GetPage(context.Context) (DeltaPageLinker, error) SetNext(nextLink string) Reset() ValuesIn(DeltaPageLinker) ([]models.DriveItemable, error) } -var _ DriveItemEnumerator = &DriveItemPager{} +var _ DriveItemDeltaEnumerator = &DriveItemDeltaPageCtrl{} -type DriveItemPager struct { +type DriveItemDeltaPageCtrl struct { gs graph.Servicer driveID string builder *drives.ItemItemsItemDeltaRequestBuilder options *drives.ItemItemsItemDeltaRequestBuilderGetRequestConfiguration } -func (c Drives) NewItemPager( +func (c Drives) NewDriveItemDeltaPager( driveID, link string, selectFields []string, -) *DriveItemPager { +) *DriveItemDeltaPageCtrl { preferHeaderItems := []string{ "deltashowremovedasdeleted", "deltatraversepermissiongaps", @@ -56,7 +56,7 @@ func (c Drives) NewItemPager( }, } - res := &DriveItemPager{ + res := &DriveItemDeltaPageCtrl{ gs: c.Stable, driveID: driveID, options: requestConfig, @@ -64,7 +64,9 @@ func (c Drives) NewItemPager( Client(). Drives(). ByDriveId(driveID). - Items().ByDriveItemId(onedrive.RootID).Delta(), + Items(). + ByDriveItemId(onedrive.RootID). + Delta(), } if len(link) > 0 { @@ -74,7 +76,7 @@ func (c Drives) NewItemPager( return res } -func (p *DriveItemPager) GetPage(ctx context.Context) (DeltaPageLinker, error) { +func (p *DriveItemDeltaPageCtrl) GetPage(ctx context.Context) (DeltaPageLinker, error) { var ( resp DeltaPageLinker err error @@ -88,11 +90,11 @@ func (p *DriveItemPager) GetPage(ctx context.Context) (DeltaPageLinker, error) { return resp, nil } -func (p *DriveItemPager) SetNext(link string) { +func (p *DriveItemDeltaPageCtrl) SetNext(link string) { p.builder = drives.NewItemItemsItemDeltaRequestBuilder(link, p.gs.Adapter()) } -func (p *DriveItemPager) Reset() { +func (p *DriveItemDeltaPageCtrl) Reset() { p.builder = p.gs.Client(). Drives(). ByDriveId(p.driveID). @@ -101,12 +103,12 @@ func (p *DriveItemPager) Reset() { Delta() } -func (p *DriveItemPager) ValuesIn(l DeltaPageLinker) ([]models.DriveItemable, error) { +func (p *DriveItemDeltaPageCtrl) ValuesIn(l DeltaPageLinker) ([]models.DriveItemable, error) { return getValues[models.DriveItemable](l) } // --------------------------------------------------------------------------- -// user pager +// user's drives pager // --------------------------------------------------------------------------- var _ DrivePager = &userDrivePager{} @@ -196,7 +198,7 @@ func (p *userDrivePager) ValuesIn(l PageLinker) ([]models.Driveable, error) { } // --------------------------------------------------------------------------- -// site pager +// site's libraries pager // --------------------------------------------------------------------------- var _ DrivePager = &siteDrivePager{} diff --git a/src/pkg/services/m365/api/drive_test.go b/src/pkg/services/m365/api/drive_test.go index 12329427c..397d997c1 100644 --- a/src/pkg/services/m365/api/drive_test.go +++ b/src/pkg/services/m365/api/drive_test.go @@ -12,44 +12,17 @@ import ( "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/m365/graph" "github.com/alcionai/corso/src/internal/tester" - "github.com/alcionai/corso/src/pkg/account" "github.com/alcionai/corso/src/pkg/control" "github.com/alcionai/corso/src/pkg/control/testdata" - "github.com/alcionai/corso/src/pkg/services/m365/api" ) type DriveAPISuite struct { tester.Suite - creds account.M365Config - ac api.Client - driveID string - rootFolderID string + its intgTesterSetup } func (suite *DriveAPISuite) SetupSuite() { - t := suite.T() - - ctx, flush := tester.NewContext(t) - defer flush() - - userID := tester.M365UserID(t) - a := tester.NewM365Account(t) - creds, err := a.M365Config() - require.NoError(t, err, clues.ToCore(err)) - - suite.creds = creds - suite.ac, err = api.NewClient(creds) - require.NoError(t, err, clues.ToCore(err)) - - drive, err := suite.ac.Users().GetDefaultDrive(ctx, userID) - require.NoError(t, err, clues.ToCore(err)) - - suite.driveID = ptr.Val(drive.GetId()) - - rootFolder, err := suite.ac.Drives().GetRootFolder(ctx, suite.driveID) - require.NoError(t, err, clues.ToCore(err)) - - suite.rootFolderID = ptr.Val(rootFolder.GetId()) + suite.its = newIntegrationTesterSetup(suite.T()) } func TestDriveAPIs(t *testing.T) { @@ -67,7 +40,7 @@ func (suite *DriveAPISuite) TestDrives_CreatePagerAndGetPage() { defer flush() siteID := tester.M365SiteID(t) - pager := suite.ac.Drives().NewSiteDrivePager(siteID, []string{"name"}) + pager := suite.its.ac.Drives().NewSiteDrivePager(siteID, []string{"name"}) a, err := pager.GetPage(ctx) assert.NoError(t, err, clues.ToCore(err)) @@ -95,21 +68,22 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() { defer flush() rc := testdata.DefaultRestoreConfig("drive_api_post_item") + acd := suite.its.ac.Drives() // generate a parent for the test data - parent, err := suite.ac.Drives().PostItemInContainer( + parent, err := acd.PostItemInContainer( ctx, - suite.driveID, - suite.rootFolderID, + suite.its.userDriveID, + suite.its.userDriveRootFolderID, newItem(rc.Location, true), control.Replace) require.NoError(t, err, clues.ToCore(err)) // generate a folder to use for collision testing folder := newItem("collision", true) - origFolder, err := suite.ac.Drives().PostItemInContainer( + origFolder, err := acd.PostItemInContainer( ctx, - suite.driveID, + suite.its.userDriveID, ptr.Val(parent.GetId()), folder, control.Copy) @@ -117,9 +91,9 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() { // generate an item to use for collision testing file := newItem("collision.txt", false) - origFile, err := suite.ac.Drives().PostItemInContainer( + origFile, err := acd.PostItemInContainer( ctx, - suite.driveID, + suite.its.userDriveID, ptr.Val(parent.GetId()), file, control.Copy) @@ -232,9 +206,9 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() { for _, test := range table { suite.Run(test.name, func() { t := suite.T() - i, err := suite.ac.Drives().PostItemInContainer( + i, err := acd.PostItemInContainer( ctx, - suite.driveID, + suite.its.userDriveID, ptr.Val(parent.GetId()), test.postItem, test.onCollision) diff --git a/src/pkg/services/m365/api/events_pager.go b/src/pkg/services/m365/api/events_pager.go index 782a26fc6..8a4169275 100644 --- a/src/pkg/services/m365/api/events_pager.go +++ b/src/pkg/services/m365/api/events_pager.go @@ -113,7 +113,7 @@ func (c Events) NewEventsPager( options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{ Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)), QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{ - Top: ptr.To[int32](maxNonDeltaPageSize), + Top: ptr.To(maxNonDeltaPageSize), }, } @@ -189,7 +189,7 @@ func (c Events) NewEventIDsPager( options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{ Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)), QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{ - Top: ptr.To[int32](maxNonDeltaPageSize), + Top: ptr.To(maxNonDeltaPageSize), }, } @@ -246,7 +246,7 @@ func (c Events) NewEventDeltaIDsPager( options := &users.ItemCalendarsItemEventsDeltaRequestBuilderGetRequestConfiguration{ Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)), QueryParameters: &users.ItemCalendarsItemEventsDeltaRequestBuilderGetQueryParameters{ - Top: ptr.To[int32](maxDeltaPageSize), + Top: ptr.To(maxDeltaPageSize), }, } diff --git a/src/pkg/services/m365/api/events_pager_test.go b/src/pkg/services/m365/api/events_pager_test.go index e95f933d8..477e91620 100644 --- a/src/pkg/services/m365/api/events_pager_test.go +++ b/src/pkg/services/m365/api/events_pager_test.go @@ -15,7 +15,7 @@ import ( type EventsPagerIntgSuite struct { tester.Suite - cts clientTesterSetup + its intgTesterSetup } func TestEventsPagerIntgSuite(t *testing.T) { @@ -27,23 +27,23 @@ func TestEventsPagerIntgSuite(t *testing.T) { } func (suite *EventsPagerIntgSuite) SetupSuite() { - suite.cts = newClientTesterSetup(suite.T()) + suite.its = newIntegrationTesterSetup(suite.T()) } func (suite *EventsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { t := suite.T() - ac := suite.cts.ac.Events() + ac := suite.its.ac.Events() ctx, flush := tester.NewContext(t) defer flush() - container, err := ac.GetContainerByID(ctx, suite.cts.userID, "calendar") + container, err := ac.GetContainerByID(ctx, suite.its.userID, "calendar") require.NoError(t, err, clues.ToCore(err)) evts, err := ac.Stable. Client(). Users(). - ByUserId(suite.cts.userID). + ByUserId(suite.its.userID). Calendars(). ByCalendarId(ptr.Val(container.GetId())). Events(). @@ -57,7 +57,7 @@ func (suite *EventsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { expect = append(expect, api.EventCollisionKey(e)) } - results, err := ac.GetItemsInContainerByCollisionKey(ctx, suite.cts.userID, "calendar") + results, err := suite.its.ac.Events().GetItemsInContainerByCollisionKey(ctx, suite.its.userID, "calendar") require.NoError(t, err, clues.ToCore(err)) require.Less(t, 0, len(results), "requires at least one result") diff --git a/src/pkg/services/m365/api/helper_test.go b/src/pkg/services/m365/api/helper_test.go index 0d82db8be..87db90526 100644 --- a/src/pkg/services/m365/api/helper_test.go +++ b/src/pkg/services/m365/api/helper_test.go @@ -6,17 +6,23 @@ import ( "github.com/alcionai/clues" "github.com/stretchr/testify/require" + "github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/tester" "github.com/alcionai/corso/src/pkg/services/m365/api" ) -type clientTesterSetup struct { - ac api.Client - userID string +type intgTesterSetup struct { + ac api.Client + userID string + userDriveID string + userDriveRootFolderID string + siteID string + siteDriveID string + siteDriveRootFolderID string } -func newClientTesterSetup(t *testing.T) clientTesterSetup { - cts := clientTesterSetup{} +func newIntegrationTesterSetup(t *testing.T) intgTesterSetup { + its := intgTesterSetup{} ctx, flush := tester.NewContext(t) defer flush() @@ -25,10 +31,32 @@ func newClientTesterSetup(t *testing.T) clientTesterSetup { creds, err := a.M365Config() require.NoError(t, err, clues.ToCore(err)) - cts.ac, err = api.NewClient(creds) + its.ac, err = api.NewClient(creds) require.NoError(t, err, clues.ToCore(err)) - cts.userID = tester.GetM365UserID(ctx) + its.userID = tester.M365UserID(t) - return cts + userDrive, err := its.ac.Users().GetDefaultDrive(ctx, its.userID) + require.NoError(t, err, clues.ToCore(err)) + + its.userDriveID = ptr.Val(userDrive.GetId()) + + userDriveRootFolder, err := its.ac.Drives().GetRootFolder(ctx, its.userDriveID) + require.NoError(t, err, clues.ToCore(err)) + + its.userDriveRootFolderID = ptr.Val(userDriveRootFolder.GetId()) + + its.siteID = tester.M365SiteID(t) + + siteDrive, err := its.ac.Sites().GetDefaultDrive(ctx, its.siteID) + require.NoError(t, err, clues.ToCore(err)) + + its.siteDriveID = ptr.Val(siteDrive.GetId()) + + siteDriveRootFolder, err := its.ac.Drives().GetRootFolder(ctx, its.siteDriveID) + require.NoError(t, err, clues.ToCore(err)) + + its.siteDriveRootFolderID = ptr.Val(siteDriveRootFolder.GetId()) + + return its } diff --git a/src/pkg/services/m365/api/mail_pager.go b/src/pkg/services/m365/api/mail_pager.go index 075d02cad..673db7b17 100644 --- a/src/pkg/services/m365/api/mail_pager.go +++ b/src/pkg/services/m365/api/mail_pager.go @@ -136,7 +136,7 @@ func (c Mail) NewMailPager( options := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{ Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)), QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{ - Top: ptr.To[int32](maxNonDeltaPageSize), + Top: ptr.To(maxNonDeltaPageSize), }, } @@ -190,7 +190,7 @@ func (c Mail) NewMailIDsPager( config := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{ QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{ Select: idAnd("isRead"), - Top: ptr.To[int32](maxNonDeltaPageSize), + Top: ptr.To(maxNonDeltaPageSize), }, Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)), } @@ -287,7 +287,7 @@ func (c Mail) NewMailDeltaIDsPager( config := &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetRequestConfiguration{ QueryParameters: &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetQueryParameters{ Select: idAnd("isRead"), - Top: ptr.To[int32](maxDeltaPageSize), + Top: ptr.To(maxDeltaPageSize), }, Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)), } diff --git a/src/pkg/services/m365/api/mail_pager_test.go b/src/pkg/services/m365/api/mail_pager_test.go index 0fde70163..11028cfff 100644 --- a/src/pkg/services/m365/api/mail_pager_test.go +++ b/src/pkg/services/m365/api/mail_pager_test.go @@ -15,7 +15,7 @@ import ( type MailPagerIntgSuite struct { tester.Suite - cts clientTesterSetup + its intgTesterSetup } func TestMailPagerIntgSuite(t *testing.T) { @@ -27,23 +27,23 @@ func TestMailPagerIntgSuite(t *testing.T) { } func (suite *MailPagerIntgSuite) SetupSuite() { - suite.cts = newClientTesterSetup(suite.T()) + suite.its = newIntegrationTesterSetup(suite.T()) } func (suite *MailPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { t := suite.T() - ac := suite.cts.ac.Mail() + ac := suite.its.ac.Mail() ctx, flush := tester.NewContext(t) defer flush() - container, err := ac.GetContainerByID(ctx, suite.cts.userID, "inbox") + container, err := ac.GetContainerByID(ctx, suite.its.userID, "inbox") require.NoError(t, err, clues.ToCore(err)) msgs, err := ac.Stable. Client(). Users(). - ByUserId(suite.cts.userID). + ByUserId(suite.its.userID). MailFolders(). ByMailFolderId(ptr.Val(container.GetId())). Messages(). @@ -57,7 +57,7 @@ func (suite *MailPagerIntgSuite) TestGetItemsInContainerByCollisionKey() { expect = append(expect, api.MailCollisionKey(m)) } - results, err := ac.GetItemsInContainerByCollisionKey(ctx, suite.cts.userID, "inbox") + results, err := suite.its.ac.Mail().GetItemsInContainerByCollisionKey(ctx, suite.its.userID, "inbox") require.NoError(t, err, clues.ToCore(err)) require.Less(t, 0, len(results), "requires at least one result")