minor refactoring before changes (#3638)
renaming structs so that they don't follow the interface naming conventions, updating and expanding the test suite setup for api. --- #### Does this PR need a docs update or release note? - [x] ⛔ No #### Type of change - [ ] 🧹 Tech Debt/Cleanup #### Issue(s) * #3562 #### Test Plan - [x] ⚡ Unit test - [x] 💚 E2E
This commit is contained in:
parent
4f9793a824
commit
f68fe90793
@ -2328,7 +2328,7 @@ func (suite *OneDriveCollectionsUnitSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
itemPagers := map[string]api.DriveItemEnumerator{}
|
itemPagers := map[string]api.DriveItemDeltaEnumerator{}
|
||||||
|
|
||||||
for driveID := range test.items {
|
for driveID := range test.items {
|
||||||
itemPagers[driveID] = &mockItemPager{
|
itemPagers[driveID] = &mockItemPager{
|
||||||
@ -2704,7 +2704,7 @@ func (suite *OneDriveCollectionsUnitSuite) TestAddURLCacheToDriveCollections() {
|
|||||||
ctx, flush := tester.NewContext(t)
|
ctx, flush := tester.NewContext(t)
|
||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
itemPagers := map[string]api.DriveItemEnumerator{}
|
itemPagers := map[string]api.DriveItemDeltaEnumerator{}
|
||||||
itemPagers[driveID] = &mockItemPager{}
|
itemPagers[driveID] = &mockItemPager{}
|
||||||
|
|
||||||
mbh := mock.DefaultOneDriveBH()
|
mbh := mock.DefaultOneDriveBH()
|
||||||
|
|||||||
@ -50,7 +50,7 @@ type BackupHandler interface {
|
|||||||
// ServiceCat returns the service and category used by this implementation.
|
// ServiceCat returns the service and category used by this implementation.
|
||||||
ServiceCat() (path.ServiceType, path.CategoryType)
|
ServiceCat() (path.ServiceType, path.CategoryType)
|
||||||
NewDrivePager(resourceOwner string, fields []string) api.DrivePager
|
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
|
// FormatDisplayPath creates a human-readable string to represent the
|
||||||
// provided path.
|
// provided path.
|
||||||
FormatDisplayPath(driveName string, parentPath *path.Builder) string
|
FormatDisplayPath(driveName string, parentPath *path.Builder) string
|
||||||
|
|||||||
@ -45,7 +45,7 @@ type itemCollector func(
|
|||||||
// provided `collector` method
|
// provided `collector` method
|
||||||
func collectItems(
|
func collectItems(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
pager api.DriveItemEnumerator,
|
pager api.DriveItemDeltaEnumerator,
|
||||||
driveID, driveName string,
|
driveID, driveName string,
|
||||||
collector itemCollector,
|
collector itemCollector,
|
||||||
oldPaths map[string]string,
|
oldPaths map[string]string,
|
||||||
|
|||||||
@ -70,8 +70,8 @@ func (h itemBackupHandler) NewDrivePager(
|
|||||||
func (h itemBackupHandler) NewItemPager(
|
func (h itemBackupHandler) NewItemPager(
|
||||||
driveID, link string,
|
driveID, link string,
|
||||||
fields []string,
|
fields []string,
|
||||||
) api.DriveItemEnumerator {
|
) api.DriveItemDeltaEnumerator {
|
||||||
return h.ac.NewItemPager(driveID, link, fields)
|
return h.ac.NewDriveItemDeltaPager(driveID, link, fields)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h itemBackupHandler) AugmentItemInfo(
|
func (h itemBackupHandler) AugmentItemInfo(
|
||||||
|
|||||||
@ -99,7 +99,7 @@ func (suite *ItemIntegrationSuite) TestItemReader_oneDrive() {
|
|||||||
|
|
||||||
ip := suite.service.ac.
|
ip := suite.service.ac.
|
||||||
Drives().
|
Drives().
|
||||||
NewItemPager(suite.userDriveID, "", api.DriveItemSelectDefault())
|
NewDriveItemDeltaPager(suite.userDriveID, "", api.DriveItemSelectDefault())
|
||||||
|
|
||||||
_, _, _, err := collectItems(
|
_, _, _, err := collectItems(
|
||||||
ctx,
|
ctx,
|
||||||
|
|||||||
@ -36,7 +36,7 @@ type BackupHandler struct {
|
|||||||
|
|
||||||
DrivePagerV api.DrivePager
|
DrivePagerV api.DrivePager
|
||||||
// driveID -> itemPager
|
// driveID -> itemPager
|
||||||
ItemPagerV map[string]api.DriveItemEnumerator
|
ItemPagerV map[string]api.DriveItemDeltaEnumerator
|
||||||
|
|
||||||
LocationIDFn locationIDer
|
LocationIDFn locationIDer
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ func (h BackupHandler) NewDrivePager(string, []string) api.DrivePager {
|
|||||||
return h.DrivePagerV
|
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]
|
return h.ItemPagerV[driveID]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -47,7 +47,7 @@ type urlCache struct {
|
|||||||
refreshMu sync.Mutex
|
refreshMu sync.Mutex
|
||||||
deltaQueryCount int
|
deltaQueryCount int
|
||||||
|
|
||||||
itemPager api.DriveItemEnumerator
|
itemPager api.DriveItemDeltaEnumerator
|
||||||
|
|
||||||
errs *fault.Bus
|
errs *fault.Bus
|
||||||
}
|
}
|
||||||
@ -56,7 +56,7 @@ type urlCache struct {
|
|||||||
func newURLCache(
|
func newURLCache(
|
||||||
driveID, prevDelta string,
|
driveID, prevDelta string,
|
||||||
refreshInterval time.Duration,
|
refreshInterval time.Duration,
|
||||||
itemPager api.DriveItemEnumerator,
|
itemPager api.DriveItemDeltaEnumerator,
|
||||||
errs *fault.Bus,
|
errs *fault.Bus,
|
||||||
) (*urlCache, error) {
|
) (*urlCache, error) {
|
||||||
err := validateCacheParams(
|
err := validateCacheParams(
|
||||||
@ -83,7 +83,7 @@ func newURLCache(
|
|||||||
func validateCacheParams(
|
func validateCacheParams(
|
||||||
driveID string,
|
driveID string,
|
||||||
refreshInterval time.Duration,
|
refreshInterval time.Duration,
|
||||||
itemPager api.DriveItemEnumerator,
|
itemPager api.DriveItemDeltaEnumerator,
|
||||||
) error {
|
) error {
|
||||||
if len(driveID) == 0 {
|
if len(driveID) == 0 {
|
||||||
return clues.New("drive id is empty")
|
return clues.New("drive id is empty")
|
||||||
|
|||||||
@ -69,7 +69,7 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() {
|
|||||||
ac = suite.ac.Drives()
|
ac = suite.ac.Drives()
|
||||||
driveID = suite.driveID
|
driveID = suite.driveID
|
||||||
newFolderName = testdata.DefaultRestoreConfig("folder").Location
|
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)
|
ctx, flush := tester.NewContext(t)
|
||||||
@ -108,7 +108,7 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() {
|
|||||||
// Get the previous delta to feed into url cache
|
// Get the previous delta to feed into url cache
|
||||||
prevDelta, _, _, err := collectItems(
|
prevDelta, _, _, err := collectItems(
|
||||||
ctx,
|
ctx,
|
||||||
suite.ac.Drives().NewItemPager(driveID, "", api.DriveItemSelectDefault()),
|
suite.ac.Drives().NewDriveItemDeltaPager(driveID, "", api.DriveItemSelectDefault()),
|
||||||
suite.driveID,
|
suite.driveID,
|
||||||
"drive-name",
|
"drive-name",
|
||||||
collectorFunc,
|
collectorFunc,
|
||||||
@ -506,7 +506,7 @@ func (suite *URLCacheUnitSuite) TestNewURLCache() {
|
|||||||
name string
|
name string
|
||||||
driveID string
|
driveID string
|
||||||
refreshInt time.Duration
|
refreshInt time.Duration
|
||||||
itemPager api.DriveItemEnumerator
|
itemPager api.DriveItemDeltaEnumerator
|
||||||
errors *fault.Bus
|
errors *fault.Bus
|
||||||
expectedErr require.ErrorAssertionFunc
|
expectedErr require.ErrorAssertionFunc
|
||||||
}{
|
}{
|
||||||
|
|||||||
@ -68,8 +68,8 @@ func (h libraryBackupHandler) NewDrivePager(
|
|||||||
func (h libraryBackupHandler) NewItemPager(
|
func (h libraryBackupHandler) NewItemPager(
|
||||||
driveID, link string,
|
driveID, link string,
|
||||||
fields []string,
|
fields []string,
|
||||||
) api.DriveItemEnumerator {
|
) api.DriveItemDeltaEnumerator {
|
||||||
return h.ac.NewItemPager(driveID, link, fields)
|
return h.ac.NewDriveItemDeltaPager(driveID, link, fields)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h libraryBackupHandler) AugmentItemInfo(
|
func (h libraryBackupHandler) AugmentItemInfo(
|
||||||
|
|||||||
@ -105,7 +105,7 @@ func (c Contacts) NewContactsPager(
|
|||||||
options := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{
|
options := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{
|
||||||
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
|
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
|
||||||
QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{
|
QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{
|
||||||
Top: ptr.To[int32](maxNonDeltaPageSize),
|
Top: ptr.To(maxNonDeltaPageSize),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ func (c Contacts) NewContactIDsPager(
|
|||||||
config := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{
|
config := &users.ItemContactFoldersItemContactsRequestBuilderGetRequestConfiguration{
|
||||||
QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{
|
QueryParameters: &users.ItemContactFoldersItemContactsRequestBuilderGetQueryParameters{
|
||||||
Select: idAnd(parentFolderID),
|
Select: idAnd(parentFolderID),
|
||||||
Top: ptr.To[int32](maxNonDeltaPageSize),
|
Top: ptr.To(maxNonDeltaPageSize),
|
||||||
},
|
},
|
||||||
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import (
|
|||||||
|
|
||||||
type ContactsPagerIntgSuite struct {
|
type ContactsPagerIntgSuite struct {
|
||||||
tester.Suite
|
tester.Suite
|
||||||
cts clientTesterSetup
|
its intgTesterSetup
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestContactsPagerIntgSuite(t *testing.T) {
|
func TestContactsPagerIntgSuite(t *testing.T) {
|
||||||
@ -27,23 +27,23 @@ func TestContactsPagerIntgSuite(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ContactsPagerIntgSuite) SetupSuite() {
|
func (suite *ContactsPagerIntgSuite) SetupSuite() {
|
||||||
suite.cts = newClientTesterSetup(suite.T())
|
suite.its = newIntegrationTesterSetup(suite.T())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ContactsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
func (suite *ContactsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
ac := suite.cts.ac.Contacts()
|
ac := suite.its.ac.Contacts()
|
||||||
|
|
||||||
ctx, flush := tester.NewContext(t)
|
ctx, flush := tester.NewContext(t)
|
||||||
defer flush()
|
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))
|
require.NoError(t, err, clues.ToCore(err))
|
||||||
|
|
||||||
conts, err := ac.Stable.
|
conts, err := ac.Stable.
|
||||||
Client().
|
Client().
|
||||||
Users().
|
Users().
|
||||||
ByUserId(suite.cts.userID).
|
ByUserId(suite.its.userID).
|
||||||
ContactFolders().
|
ContactFolders().
|
||||||
ByContactFolderId(ptr.Val(container.GetId())).
|
ByContactFolderId(ptr.Val(container.GetId())).
|
||||||
Contacts().
|
Contacts().
|
||||||
@ -57,7 +57,7 @@ func (suite *ContactsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
|||||||
expect = append(expect, api.ContactCollisionKey(c))
|
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.NoError(t, err, clues.ToCore(err))
|
||||||
require.Less(t, 0, len(results), "requires at least one result")
|
require.Less(t, 0, len(results), "requires at least one result")
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/microsoftgraph/msgraph-sdk-go/drives"
|
"github.com/microsoftgraph/msgraph-sdk-go/drives"
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"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/internal/m365/graph"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
)
|
)
|
||||||
@ -305,3 +306,13 @@ func (c Drives) DeleteItemPermission(
|
|||||||
|
|
||||||
return nil
|
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())
|
||||||
|
}
|
||||||
|
|||||||
@ -18,29 +18,29 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// item pager
|
// delta item pager
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
type DriveItemEnumerator interface {
|
type DriveItemDeltaEnumerator interface {
|
||||||
GetPage(context.Context) (DeltaPageLinker, error)
|
GetPage(context.Context) (DeltaPageLinker, error)
|
||||||
SetNext(nextLink string)
|
SetNext(nextLink string)
|
||||||
Reset()
|
Reset()
|
||||||
ValuesIn(DeltaPageLinker) ([]models.DriveItemable, error)
|
ValuesIn(DeltaPageLinker) ([]models.DriveItemable, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ DriveItemEnumerator = &DriveItemPager{}
|
var _ DriveItemDeltaEnumerator = &DriveItemDeltaPageCtrl{}
|
||||||
|
|
||||||
type DriveItemPager struct {
|
type DriveItemDeltaPageCtrl struct {
|
||||||
gs graph.Servicer
|
gs graph.Servicer
|
||||||
driveID string
|
driveID string
|
||||||
builder *drives.ItemItemsItemDeltaRequestBuilder
|
builder *drives.ItemItemsItemDeltaRequestBuilder
|
||||||
options *drives.ItemItemsItemDeltaRequestBuilderGetRequestConfiguration
|
options *drives.ItemItemsItemDeltaRequestBuilderGetRequestConfiguration
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c Drives) NewItemPager(
|
func (c Drives) NewDriveItemDeltaPager(
|
||||||
driveID, link string,
|
driveID, link string,
|
||||||
selectFields []string,
|
selectFields []string,
|
||||||
) *DriveItemPager {
|
) *DriveItemDeltaPageCtrl {
|
||||||
preferHeaderItems := []string{
|
preferHeaderItems := []string{
|
||||||
"deltashowremovedasdeleted",
|
"deltashowremovedasdeleted",
|
||||||
"deltatraversepermissiongaps",
|
"deltatraversepermissiongaps",
|
||||||
@ -56,7 +56,7 @@ func (c Drives) NewItemPager(
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
res := &DriveItemPager{
|
res := &DriveItemDeltaPageCtrl{
|
||||||
gs: c.Stable,
|
gs: c.Stable,
|
||||||
driveID: driveID,
|
driveID: driveID,
|
||||||
options: requestConfig,
|
options: requestConfig,
|
||||||
@ -64,7 +64,9 @@ func (c Drives) NewItemPager(
|
|||||||
Client().
|
Client().
|
||||||
Drives().
|
Drives().
|
||||||
ByDriveId(driveID).
|
ByDriveId(driveID).
|
||||||
Items().ByDriveItemId(onedrive.RootID).Delta(),
|
Items().
|
||||||
|
ByDriveItemId(onedrive.RootID).
|
||||||
|
Delta(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(link) > 0 {
|
if len(link) > 0 {
|
||||||
@ -74,7 +76,7 @@ func (c Drives) NewItemPager(
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *DriveItemPager) GetPage(ctx context.Context) (DeltaPageLinker, error) {
|
func (p *DriveItemDeltaPageCtrl) GetPage(ctx context.Context) (DeltaPageLinker, error) {
|
||||||
var (
|
var (
|
||||||
resp DeltaPageLinker
|
resp DeltaPageLinker
|
||||||
err error
|
err error
|
||||||
@ -88,11 +90,11 @@ func (p *DriveItemPager) GetPage(ctx context.Context) (DeltaPageLinker, error) {
|
|||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *DriveItemPager) SetNext(link string) {
|
func (p *DriveItemDeltaPageCtrl) SetNext(link string) {
|
||||||
p.builder = drives.NewItemItemsItemDeltaRequestBuilder(link, p.gs.Adapter())
|
p.builder = drives.NewItemItemsItemDeltaRequestBuilder(link, p.gs.Adapter())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *DriveItemPager) Reset() {
|
func (p *DriveItemDeltaPageCtrl) Reset() {
|
||||||
p.builder = p.gs.Client().
|
p.builder = p.gs.Client().
|
||||||
Drives().
|
Drives().
|
||||||
ByDriveId(p.driveID).
|
ByDriveId(p.driveID).
|
||||||
@ -101,12 +103,12 @@ func (p *DriveItemPager) Reset() {
|
|||||||
Delta()
|
Delta()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *DriveItemPager) ValuesIn(l DeltaPageLinker) ([]models.DriveItemable, error) {
|
func (p *DriveItemDeltaPageCtrl) ValuesIn(l DeltaPageLinker) ([]models.DriveItemable, error) {
|
||||||
return getValues[models.DriveItemable](l)
|
return getValues[models.DriveItemable](l)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// user pager
|
// user's drives pager
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
var _ DrivePager = &userDrivePager{}
|
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{}
|
var _ DrivePager = &siteDrivePager{}
|
||||||
|
|||||||
@ -12,44 +12,17 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/common/ptr"
|
"github.com/alcionai/corso/src/internal/common/ptr"
|
||||||
"github.com/alcionai/corso/src/internal/m365/graph"
|
"github.com/alcionai/corso/src/internal/m365/graph"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"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"
|
||||||
"github.com/alcionai/corso/src/pkg/control/testdata"
|
"github.com/alcionai/corso/src/pkg/control/testdata"
|
||||||
"github.com/alcionai/corso/src/pkg/services/m365/api"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type DriveAPISuite struct {
|
type DriveAPISuite struct {
|
||||||
tester.Suite
|
tester.Suite
|
||||||
creds account.M365Config
|
its intgTesterSetup
|
||||||
ac api.Client
|
|
||||||
driveID string
|
|
||||||
rootFolderID string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *DriveAPISuite) SetupSuite() {
|
func (suite *DriveAPISuite) SetupSuite() {
|
||||||
t := suite.T()
|
suite.its = newIntegrationTesterSetup(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())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDriveAPIs(t *testing.T) {
|
func TestDriveAPIs(t *testing.T) {
|
||||||
@ -67,7 +40,7 @@ func (suite *DriveAPISuite) TestDrives_CreatePagerAndGetPage() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
siteID := tester.M365SiteID(t)
|
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)
|
a, err := pager.GetPage(ctx)
|
||||||
assert.NoError(t, err, clues.ToCore(err))
|
assert.NoError(t, err, clues.ToCore(err))
|
||||||
@ -95,21 +68,22 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
rc := testdata.DefaultRestoreConfig("drive_api_post_item")
|
rc := testdata.DefaultRestoreConfig("drive_api_post_item")
|
||||||
|
acd := suite.its.ac.Drives()
|
||||||
|
|
||||||
// generate a parent for the test data
|
// generate a parent for the test data
|
||||||
parent, err := suite.ac.Drives().PostItemInContainer(
|
parent, err := acd.PostItemInContainer(
|
||||||
ctx,
|
ctx,
|
||||||
suite.driveID,
|
suite.its.userDriveID,
|
||||||
suite.rootFolderID,
|
suite.its.userDriveRootFolderID,
|
||||||
newItem(rc.Location, true),
|
newItem(rc.Location, true),
|
||||||
control.Replace)
|
control.Replace)
|
||||||
require.NoError(t, err, clues.ToCore(err))
|
require.NoError(t, err, clues.ToCore(err))
|
||||||
|
|
||||||
// generate a folder to use for collision testing
|
// generate a folder to use for collision testing
|
||||||
folder := newItem("collision", true)
|
folder := newItem("collision", true)
|
||||||
origFolder, err := suite.ac.Drives().PostItemInContainer(
|
origFolder, err := acd.PostItemInContainer(
|
||||||
ctx,
|
ctx,
|
||||||
suite.driveID,
|
suite.its.userDriveID,
|
||||||
ptr.Val(parent.GetId()),
|
ptr.Val(parent.GetId()),
|
||||||
folder,
|
folder,
|
||||||
control.Copy)
|
control.Copy)
|
||||||
@ -117,9 +91,9 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() {
|
|||||||
|
|
||||||
// generate an item to use for collision testing
|
// generate an item to use for collision testing
|
||||||
file := newItem("collision.txt", false)
|
file := newItem("collision.txt", false)
|
||||||
origFile, err := suite.ac.Drives().PostItemInContainer(
|
origFile, err := acd.PostItemInContainer(
|
||||||
ctx,
|
ctx,
|
||||||
suite.driveID,
|
suite.its.userDriveID,
|
||||||
ptr.Val(parent.GetId()),
|
ptr.Val(parent.GetId()),
|
||||||
file,
|
file,
|
||||||
control.Copy)
|
control.Copy)
|
||||||
@ -232,9 +206,9 @@ func (suite *DriveAPISuite) TestDrives_PostItemInContainer() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.Run(test.name, func() {
|
suite.Run(test.name, func() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
i, err := suite.ac.Drives().PostItemInContainer(
|
i, err := acd.PostItemInContainer(
|
||||||
ctx,
|
ctx,
|
||||||
suite.driveID,
|
suite.its.userDriveID,
|
||||||
ptr.Val(parent.GetId()),
|
ptr.Val(parent.GetId()),
|
||||||
test.postItem,
|
test.postItem,
|
||||||
test.onCollision)
|
test.onCollision)
|
||||||
|
|||||||
@ -113,7 +113,7 @@ func (c Events) NewEventsPager(
|
|||||||
options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{
|
options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{
|
||||||
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
|
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
|
||||||
QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{
|
QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{
|
||||||
Top: ptr.To[int32](maxNonDeltaPageSize),
|
Top: ptr.To(maxNonDeltaPageSize),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ func (c Events) NewEventIDsPager(
|
|||||||
options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{
|
options := &users.ItemCalendarsItemEventsRequestBuilderGetRequestConfiguration{
|
||||||
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
||||||
QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{
|
QueryParameters: &users.ItemCalendarsItemEventsRequestBuilderGetQueryParameters{
|
||||||
Top: ptr.To[int32](maxNonDeltaPageSize),
|
Top: ptr.To(maxNonDeltaPageSize),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ func (c Events) NewEventDeltaIDsPager(
|
|||||||
options := &users.ItemCalendarsItemEventsDeltaRequestBuilderGetRequestConfiguration{
|
options := &users.ItemCalendarsItemEventsDeltaRequestBuilderGetRequestConfiguration{
|
||||||
Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
||||||
QueryParameters: &users.ItemCalendarsItemEventsDeltaRequestBuilderGetQueryParameters{
|
QueryParameters: &users.ItemCalendarsItemEventsDeltaRequestBuilderGetQueryParameters{
|
||||||
Top: ptr.To[int32](maxDeltaPageSize),
|
Top: ptr.To(maxDeltaPageSize),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import (
|
|||||||
|
|
||||||
type EventsPagerIntgSuite struct {
|
type EventsPagerIntgSuite struct {
|
||||||
tester.Suite
|
tester.Suite
|
||||||
cts clientTesterSetup
|
its intgTesterSetup
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEventsPagerIntgSuite(t *testing.T) {
|
func TestEventsPagerIntgSuite(t *testing.T) {
|
||||||
@ -27,23 +27,23 @@ func TestEventsPagerIntgSuite(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *EventsPagerIntgSuite) SetupSuite() {
|
func (suite *EventsPagerIntgSuite) SetupSuite() {
|
||||||
suite.cts = newClientTesterSetup(suite.T())
|
suite.its = newIntegrationTesterSetup(suite.T())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *EventsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
func (suite *EventsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
ac := suite.cts.ac.Events()
|
ac := suite.its.ac.Events()
|
||||||
|
|
||||||
ctx, flush := tester.NewContext(t)
|
ctx, flush := tester.NewContext(t)
|
||||||
defer flush()
|
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))
|
require.NoError(t, err, clues.ToCore(err))
|
||||||
|
|
||||||
evts, err := ac.Stable.
|
evts, err := ac.Stable.
|
||||||
Client().
|
Client().
|
||||||
Users().
|
Users().
|
||||||
ByUserId(suite.cts.userID).
|
ByUserId(suite.its.userID).
|
||||||
Calendars().
|
Calendars().
|
||||||
ByCalendarId(ptr.Val(container.GetId())).
|
ByCalendarId(ptr.Val(container.GetId())).
|
||||||
Events().
|
Events().
|
||||||
@ -57,7 +57,7 @@ func (suite *EventsPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
|||||||
expect = append(expect, api.EventCollisionKey(e))
|
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.NoError(t, err, clues.ToCore(err))
|
||||||
require.Less(t, 0, len(results), "requires at least one result")
|
require.Less(t, 0, len(results), "requires at least one result")
|
||||||
|
|
||||||
|
|||||||
@ -6,17 +6,23 @@ import (
|
|||||||
"github.com/alcionai/clues"
|
"github.com/alcionai/clues"
|
||||||
"github.com/stretchr/testify/require"
|
"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/internal/tester"
|
||||||
"github.com/alcionai/corso/src/pkg/services/m365/api"
|
"github.com/alcionai/corso/src/pkg/services/m365/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
type clientTesterSetup struct {
|
type intgTesterSetup struct {
|
||||||
ac api.Client
|
ac api.Client
|
||||||
userID string
|
userID string
|
||||||
|
userDriveID string
|
||||||
|
userDriveRootFolderID string
|
||||||
|
siteID string
|
||||||
|
siteDriveID string
|
||||||
|
siteDriveRootFolderID string
|
||||||
}
|
}
|
||||||
|
|
||||||
func newClientTesterSetup(t *testing.T) clientTesterSetup {
|
func newIntegrationTesterSetup(t *testing.T) intgTesterSetup {
|
||||||
cts := clientTesterSetup{}
|
its := intgTesterSetup{}
|
||||||
|
|
||||||
ctx, flush := tester.NewContext(t)
|
ctx, flush := tester.NewContext(t)
|
||||||
defer flush()
|
defer flush()
|
||||||
@ -25,10 +31,32 @@ func newClientTesterSetup(t *testing.T) clientTesterSetup {
|
|||||||
creds, err := a.M365Config()
|
creds, err := a.M365Config()
|
||||||
require.NoError(t, err, clues.ToCore(err))
|
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))
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -136,7 +136,7 @@ func (c Mail) NewMailPager(
|
|||||||
options := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{
|
options := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{
|
||||||
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
|
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize)),
|
||||||
QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{
|
QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{
|
||||||
Top: ptr.To[int32](maxNonDeltaPageSize),
|
Top: ptr.To(maxNonDeltaPageSize),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ func (c Mail) NewMailIDsPager(
|
|||||||
config := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{
|
config := &users.ItemMailFoldersItemMessagesRequestBuilderGetRequestConfiguration{
|
||||||
QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{
|
QueryParameters: &users.ItemMailFoldersItemMessagesRequestBuilderGetQueryParameters{
|
||||||
Select: idAnd("isRead"),
|
Select: idAnd("isRead"),
|
||||||
Top: ptr.To[int32](maxNonDeltaPageSize),
|
Top: ptr.To(maxNonDeltaPageSize),
|
||||||
},
|
},
|
||||||
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
Headers: newPreferHeaders(preferPageSize(maxNonDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
||||||
}
|
}
|
||||||
@ -287,7 +287,7 @@ func (c Mail) NewMailDeltaIDsPager(
|
|||||||
config := &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetRequestConfiguration{
|
config := &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetRequestConfiguration{
|
||||||
QueryParameters: &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetQueryParameters{
|
QueryParameters: &users.ItemMailFoldersItemMessagesDeltaRequestBuilderGetQueryParameters{
|
||||||
Select: idAnd("isRead"),
|
Select: idAnd("isRead"),
|
||||||
Top: ptr.To[int32](maxDeltaPageSize),
|
Top: ptr.To(maxDeltaPageSize),
|
||||||
},
|
},
|
||||||
Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
Headers: newPreferHeaders(preferPageSize(maxDeltaPageSize), preferImmutableIDs(immutableIDs)),
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import (
|
|||||||
|
|
||||||
type MailPagerIntgSuite struct {
|
type MailPagerIntgSuite struct {
|
||||||
tester.Suite
|
tester.Suite
|
||||||
cts clientTesterSetup
|
its intgTesterSetup
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMailPagerIntgSuite(t *testing.T) {
|
func TestMailPagerIntgSuite(t *testing.T) {
|
||||||
@ -27,23 +27,23 @@ func TestMailPagerIntgSuite(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *MailPagerIntgSuite) SetupSuite() {
|
func (suite *MailPagerIntgSuite) SetupSuite() {
|
||||||
suite.cts = newClientTesterSetup(suite.T())
|
suite.its = newIntegrationTesterSetup(suite.T())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *MailPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
func (suite *MailPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
ac := suite.cts.ac.Mail()
|
ac := suite.its.ac.Mail()
|
||||||
|
|
||||||
ctx, flush := tester.NewContext(t)
|
ctx, flush := tester.NewContext(t)
|
||||||
defer flush()
|
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))
|
require.NoError(t, err, clues.ToCore(err))
|
||||||
|
|
||||||
msgs, err := ac.Stable.
|
msgs, err := ac.Stable.
|
||||||
Client().
|
Client().
|
||||||
Users().
|
Users().
|
||||||
ByUserId(suite.cts.userID).
|
ByUserId(suite.its.userID).
|
||||||
MailFolders().
|
MailFolders().
|
||||||
ByMailFolderId(ptr.Val(container.GetId())).
|
ByMailFolderId(ptr.Val(container.GetId())).
|
||||||
Messages().
|
Messages().
|
||||||
@ -57,7 +57,7 @@ func (suite *MailPagerIntgSuite) TestGetItemsInContainerByCollisionKey() {
|
|||||||
expect = append(expect, api.MailCollisionKey(m))
|
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.NoError(t, err, clues.ToCore(err))
|
||||||
require.Less(t, 0, len(results), "requires at least one result")
|
require.Less(t, 0, len(results), "requires at least one result")
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user