start centralizing intg test setup
we duplicate a lot of boilerplate code in integration tests involving the creation of an api client and the aggregation of external IDs. In some packages we've begun to add quality-of-life structs to aggregate these setup details. This change begins moving those structs to a singular package so that we can clear out the common setup boilerplate found elsewhere in the code.
This commit is contained in:
parent
c824a0b23e
commit
5dac78db7f
130
src/internal/tester/tsetup/m365.go
Normal file
130
src/internal/tester/tsetup/m365.go
Normal file
@ -0,0 +1,130 @@
|
||||
package tsetup
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/alcionai/clues"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/alcionai/corso/src/internal/common/ptr"
|
||||
"github.com/alcionai/corso/src/internal/m365/graph"
|
||||
"github.com/alcionai/corso/src/internal/m365/graph/mock"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/pkg/account"
|
||||
"github.com/alcionai/corso/src/pkg/control"
|
||||
"github.com/alcionai/corso/src/pkg/services/m365/api"
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Gockable client
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// GockClient produces a new exchange api client that can be
|
||||
// mocked using gock.
|
||||
func gockClient(creds account.M365Config) (api.Client, error) {
|
||||
s, err := mock.NewService(creds)
|
||||
if err != nil {
|
||||
return api.Client{}, err
|
||||
}
|
||||
|
||||
li, err := mock.NewService(creds, graph.NoTimeout())
|
||||
if err != nil {
|
||||
return api.Client{}, err
|
||||
}
|
||||
|
||||
return api.Client{
|
||||
Credentials: creds,
|
||||
Stable: s,
|
||||
LargeItem: li,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Suite Setup
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
type m365IDs struct {
|
||||
ID string
|
||||
Email string
|
||||
DriveID string
|
||||
DriveRootFolderID string
|
||||
TestContainerID string
|
||||
}
|
||||
|
||||
type M365 struct {
|
||||
AC api.Client
|
||||
GockAC api.Client
|
||||
User m365IDs
|
||||
Site m365IDs
|
||||
Group m365IDs
|
||||
NonTeamGroup m365IDs // group which does not have an associated team
|
||||
}
|
||||
|
||||
func NewM365IntegrationTester(t *testing.T) M365 {
|
||||
mit := M365{}
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
graph.InitializeConcurrencyLimiter(ctx, true, 4)
|
||||
|
||||
a := tconfig.NewM365Account(t)
|
||||
creds, err := a.M365Config()
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
mit.AC, err = api.NewClient(creds, control.DefaultOptions())
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
mit.GockAC, err = gockClient(creds)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
// user drive
|
||||
|
||||
mit.User.ID = tconfig.M365UserID(t)
|
||||
|
||||
userDrive, err := mit.AC.Users().GetDefaultDrive(ctx, mit.User.ID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
mit.User.DriveID = ptr.Val(userDrive.GetId())
|
||||
|
||||
userDriveRootFolder, err := mit.AC.Drives().GetRootFolder(ctx, mit.User.DriveID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
mit.User.DriveRootFolderID = ptr.Val(userDriveRootFolder.GetId())
|
||||
|
||||
// site
|
||||
|
||||
mit.Site.ID = tconfig.M365SiteID(t)
|
||||
|
||||
siteDrive, err := mit.AC.Sites().GetDefaultDrive(ctx, mit.Site.ID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
mit.Site.DriveID = ptr.Val(siteDrive.GetId())
|
||||
|
||||
siteDriveRootFolder, err := mit.AC.Drives().GetRootFolder(ctx, mit.Site.DriveID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
mit.Site.DriveRootFolderID = ptr.Val(siteDriveRootFolder.GetId())
|
||||
|
||||
// groups/teams
|
||||
|
||||
// use of the TeamID is intentional here, so that we are assured
|
||||
// the group has full usage of the teams api.
|
||||
mit.Group.ID = tconfig.M365TeamID(t)
|
||||
mit.Group.Email = tconfig.M365TeamEmail(t)
|
||||
|
||||
mit.NonTeamGroup.ID = tconfig.M365GroupID(t)
|
||||
|
||||
channel, err := mit.AC.Channels().
|
||||
GetChannelByName(
|
||||
ctx,
|
||||
mit.Group.ID,
|
||||
"Test")
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
require.Equal(t, "Test", ptr.Val(channel.GetDisplayName()))
|
||||
|
||||
mit.Group.TestContainerID = ptr.Val(channel.GetId())
|
||||
|
||||
return mit
|
||||
}
|
||||
@ -9,13 +9,14 @@ import (
|
||||
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
"github.com/alcionai/corso/src/pkg/account"
|
||||
"github.com/alcionai/corso/src/pkg/control"
|
||||
)
|
||||
|
||||
type AccessAPIIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestAccessAPIIntgSuite(t *testing.T) {
|
||||
@ -27,7 +28,7 @@ func TestAccessAPIIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *AccessAPIIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *AccessAPIIntgSuite) TestGetToken() {
|
||||
@ -38,13 +39,13 @@ func (suite *AccessAPIIntgSuite) TestGetToken() {
|
||||
}{
|
||||
{
|
||||
name: "good",
|
||||
creds: func() account.M365Config { return suite.its.ac.Credentials },
|
||||
creds: func() account.M365Config { return suite.its.AC.Credentials },
|
||||
expectErr: require.NoError,
|
||||
},
|
||||
{
|
||||
name: "bad tenant ID",
|
||||
creds: func() account.M365Config {
|
||||
creds := suite.its.ac.Credentials
|
||||
creds := suite.its.AC.Credentials
|
||||
creds.AzureTenantID = "ZIM"
|
||||
|
||||
return creds
|
||||
@ -54,7 +55,7 @@ func (suite *AccessAPIIntgSuite) TestGetToken() {
|
||||
{
|
||||
name: "missing tenant ID",
|
||||
creds: func() account.M365Config {
|
||||
creds := suite.its.ac.Credentials
|
||||
creds := suite.its.AC.Credentials
|
||||
creds.AzureTenantID = ""
|
||||
|
||||
return creds
|
||||
@ -64,7 +65,7 @@ func (suite *AccessAPIIntgSuite) TestGetToken() {
|
||||
{
|
||||
name: "bad client ID",
|
||||
creds: func() account.M365Config {
|
||||
creds := suite.its.ac.Credentials
|
||||
creds := suite.its.AC.Credentials
|
||||
creds.AzureClientID = "GIR"
|
||||
|
||||
return creds
|
||||
@ -74,7 +75,7 @@ func (suite *AccessAPIIntgSuite) TestGetToken() {
|
||||
{
|
||||
name: "missing client ID",
|
||||
creds: func() account.M365Config {
|
||||
creds := suite.its.ac.Credentials
|
||||
creds := suite.its.AC.Credentials
|
||||
creds.AzureClientID = ""
|
||||
|
||||
return creds
|
||||
@ -84,7 +85,7 @@ func (suite *AccessAPIIntgSuite) TestGetToken() {
|
||||
{
|
||||
name: "bad client secret",
|
||||
creds: func() account.M365Config {
|
||||
creds := suite.its.ac.Credentials
|
||||
creds := suite.its.AC.Credentials
|
||||
creds.AzureClientSecret = "MY TALLEST"
|
||||
|
||||
return creds
|
||||
@ -94,7 +95,7 @@ func (suite *AccessAPIIntgSuite) TestGetToken() {
|
||||
{
|
||||
name: "missing client secret",
|
||||
creds: func() account.M365Config {
|
||||
creds := suite.its.ac.Credentials
|
||||
creds := suite.its.AC.Credentials
|
||||
creds.AzureClientSecret = ""
|
||||
|
||||
return creds
|
||||
@ -109,7 +110,7 @@ func (suite *AccessAPIIntgSuite) TestGetToken() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
ac, err := NewClient(suite.its.ac.Credentials, control.DefaultOptions())
|
||||
ac, err := NewClient(suite.its.AC.Credentials, control.DefaultOptions())
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
ac.Credentials = test.creds()
|
||||
|
||||
@ -14,11 +14,12 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/common/str"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
)
|
||||
|
||||
type ChannelsPagerIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestChannelPagerIntgSuite(t *testing.T) {
|
||||
@ -30,19 +31,19 @@ func TestChannelPagerIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *ChannelsPagerIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *ChannelsPagerIntgSuite) TestEnumerateChannels() {
|
||||
var (
|
||||
t = suite.T()
|
||||
ac = suite.its.ac.Channels()
|
||||
ac = suite.its.AC.Channels()
|
||||
)
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
chans, err := ac.GetChannels(ctx, suite.its.group.id)
|
||||
chans, err := ac.GetChannels(ctx, suite.its.Group.ID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
require.NotEmpty(t, chans)
|
||||
}
|
||||
@ -50,7 +51,7 @@ func (suite *ChannelsPagerIntgSuite) TestEnumerateChannels() {
|
||||
func (suite *ChannelsPagerIntgSuite) TestEnumerateChannelMessages() {
|
||||
var (
|
||||
t = suite.T()
|
||||
ac = suite.its.ac.Channels()
|
||||
ac = suite.its.AC.Channels()
|
||||
)
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
@ -58,8 +59,8 @@ func (suite *ChannelsPagerIntgSuite) TestEnumerateChannelMessages() {
|
||||
|
||||
addedIDs, _, _, du, err := ac.GetChannelMessageIDs(
|
||||
ctx,
|
||||
suite.its.group.id,
|
||||
suite.its.group.testContainerID,
|
||||
suite.its.Group.ID,
|
||||
suite.its.Group.TestContainerID,
|
||||
"",
|
||||
true)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
@ -69,8 +70,8 @@ func (suite *ChannelsPagerIntgSuite) TestEnumerateChannelMessages() {
|
||||
|
||||
addedIDs, _, deletedIDs, du, err := ac.GetChannelMessageIDs(
|
||||
ctx,
|
||||
suite.its.group.id,
|
||||
suite.its.group.testContainerID,
|
||||
suite.its.Group.ID,
|
||||
suite.its.Group.TestContainerID,
|
||||
du.URL,
|
||||
true)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
@ -83,9 +84,9 @@ func (suite *ChannelsPagerIntgSuite) TestEnumerateChannelMessages() {
|
||||
suite.Run(id+"-replies", func() {
|
||||
testEnumerateChannelMessageReplies(
|
||||
suite.T(),
|
||||
suite.its.ac.Channels(),
|
||||
suite.its.group.id,
|
||||
suite.its.group.testContainerID,
|
||||
suite.its.AC.Channels(),
|
||||
suite.its.Group.ID,
|
||||
suite.its.Group.TestContainerID,
|
||||
id)
|
||||
})
|
||||
}
|
||||
|
||||
@ -12,11 +12,12 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/common/ptr"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
)
|
||||
|
||||
type ContactsPagerIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestContactsPagerIntgSuite(t *testing.T) {
|
||||
@ -28,23 +29,23 @@ func TestContactsPagerIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *ContactsPagerIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *ContactsPagerIntgSuite) TestContacts_GetItemsInContainerByCollisionKey() {
|
||||
t := suite.T()
|
||||
ac := suite.its.ac.Contacts()
|
||||
ac := suite.its.AC.Contacts()
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
container, err := ac.GetContainerByID(ctx, suite.its.user.id, "contacts")
|
||||
container, err := ac.GetContainerByID(ctx, suite.its.User.ID, "contacts")
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
conts, err := ac.Stable.
|
||||
Client().
|
||||
Users().
|
||||
ByUserId(suite.its.user.id).
|
||||
ByUserId(suite.its.User.ID).
|
||||
ContactFolders().
|
||||
ByContactFolderId(ptr.Val(container.GetId())).
|
||||
Contacts().
|
||||
@ -60,7 +61,7 @@ func (suite *ContactsPagerIntgSuite) TestContacts_GetItemsInContainerByCollision
|
||||
|
||||
expect := maps.Keys(expectM)
|
||||
|
||||
results, err := suite.its.ac.Contacts().GetItemsInContainerByCollisionKey(ctx, suite.its.user.id, "contacts")
|
||||
results, err := suite.its.AC.Contacts().GetItemsInContainerByCollisionKey(ctx, suite.its.User.ID, "contacts")
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
require.Less(t, 0, len(results), "requires at least one result")
|
||||
|
||||
@ -85,18 +86,18 @@ func (suite *ContactsPagerIntgSuite) TestContacts_GetItemsInContainerByCollision
|
||||
|
||||
func (suite *ContactsPagerIntgSuite) TestContacts_GetItemsIDsInContainer() {
|
||||
t := suite.T()
|
||||
ac := suite.its.ac.Contacts()
|
||||
ac := suite.its.AC.Contacts()
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
container, err := ac.GetContainerByID(ctx, suite.its.user.id, DefaultContacts)
|
||||
container, err := ac.GetContainerByID(ctx, suite.its.User.ID, DefaultContacts)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
msgs, err := ac.Stable.
|
||||
Client().
|
||||
Users().
|
||||
ByUserId(suite.its.user.id).
|
||||
ByUserId(suite.its.User.ID).
|
||||
ContactFolders().
|
||||
ByContactFolderId(ptr.Val(container.GetId())).
|
||||
Contacts().
|
||||
@ -110,8 +111,8 @@ func (suite *ContactsPagerIntgSuite) TestContacts_GetItemsIDsInContainer() {
|
||||
expect[ptr.Val(m.GetId())] = struct{}{}
|
||||
}
|
||||
|
||||
results, err := suite.its.ac.Contacts().
|
||||
GetItemIDsInContainer(ctx, suite.its.user.id, DefaultContacts)
|
||||
results, err := suite.its.AC.Contacts().
|
||||
GetItemIDsInContainer(ctx, suite.its.User.ID, DefaultContacts)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
require.Less(t, 0, len(results), "requires at least one result")
|
||||
require.Equal(t, len(expect), len(results), "must have same count of items")
|
||||
|
||||
@ -14,6 +14,7 @@ import (
|
||||
exchMock "github.com/alcionai/corso/src/internal/m365/service/exchange/mock"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||
"github.com/alcionai/corso/src/pkg/control/testdata"
|
||||
)
|
||||
@ -116,7 +117,7 @@ func (suite *ContactsAPIUnitSuite) TestBytesToContactable() {
|
||||
|
||||
type ContactsAPIIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestContactsAPIntgSuite(t *testing.T) {
|
||||
@ -128,7 +129,7 @@ func TestContactsAPIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *ContactsAPIIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *ContactsAPIIntgSuite) TestContacts_GetContainerByName() {
|
||||
@ -142,9 +143,9 @@ func (suite *ContactsAPIIntgSuite) TestContacts_GetContainerByName() {
|
||||
|
||||
rc := testdata.DefaultRestoreConfig("contacts_api")
|
||||
|
||||
cc, err := suite.its.ac.Contacts().CreateContainer(
|
||||
cc, err := suite.its.AC.Contacts().CreateContainer(
|
||||
ctx,
|
||||
suite.its.user.id,
|
||||
suite.its.User.ID,
|
||||
"",
|
||||
rc.Location)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
@ -169,9 +170,9 @@ func (suite *ContactsAPIIntgSuite) TestContacts_GetContainerByName() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
_, err := suite.its.ac.
|
||||
_, err := suite.its.AC.
|
||||
Contacts().
|
||||
GetContainerByName(ctx, suite.its.user.id, "", test.name)
|
||||
GetContainerByName(ctx, suite.its.User.ID, "", test.name)
|
||||
test.expectErr(t, err, clues.ToCore(err))
|
||||
})
|
||||
}
|
||||
|
||||
@ -12,11 +12,12 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/common/ptr"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
)
|
||||
|
||||
type DrivePagerIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestDrivePagerIntgSuite(t *testing.T) {
|
||||
@ -28,7 +29,7 @@ func TestDrivePagerIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *DrivePagerIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *DrivePagerIntgSuite) TestDrives_GetItemsInContainerByCollisionKey() {
|
||||
@ -39,13 +40,13 @@ func (suite *DrivePagerIntgSuite) TestDrives_GetItemsInContainerByCollisionKey()
|
||||
}{
|
||||
{
|
||||
name: "user drive",
|
||||
driveID: suite.its.user.driveID,
|
||||
rootFolderID: suite.its.user.driveRootFolderID,
|
||||
driveID: suite.its.User.DriveID,
|
||||
rootFolderID: suite.its.User.DriveRootFolderID,
|
||||
},
|
||||
{
|
||||
name: "site drive",
|
||||
driveID: suite.its.site.driveID,
|
||||
rootFolderID: suite.its.site.driveRootFolderID,
|
||||
driveID: suite.its.Site.DriveID,
|
||||
rootFolderID: suite.its.Site.DriveRootFolderID,
|
||||
},
|
||||
}
|
||||
for _, test := range table {
|
||||
@ -58,7 +59,7 @@ func (suite *DrivePagerIntgSuite) TestDrives_GetItemsInContainerByCollisionKey()
|
||||
t.Log("drive", test.driveID)
|
||||
t.Log("rootFolder", test.rootFolderID)
|
||||
|
||||
items, err := suite.its.ac.Stable.
|
||||
items, err := suite.its.AC.Stable.
|
||||
Client().
|
||||
Drives().
|
||||
ByDriveId(test.driveID).
|
||||
@ -75,9 +76,9 @@ func (suite *DrivePagerIntgSuite) TestDrives_GetItemsInContainerByCollisionKey()
|
||||
t,
|
||||
ims,
|
||||
"need at least one item to compare in user %s drive %s folder %s",
|
||||
suite.its.user.id, test.driveID, test.rootFolderID)
|
||||
suite.its.User.ID, test.driveID, test.rootFolderID)
|
||||
|
||||
results, err := suite.its.ac.
|
||||
results, err := suite.its.AC.
|
||||
Drives().
|
||||
GetItemsInContainerByCollisionKey(ctx, test.driveID, test.rootFolderID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
@ -113,13 +114,13 @@ func (suite *DrivePagerIntgSuite) TestDrives_GetItemIDsInContainer() {
|
||||
}{
|
||||
{
|
||||
name: "user drive",
|
||||
driveID: suite.its.user.driveID,
|
||||
rootFolderID: suite.its.user.driveRootFolderID,
|
||||
driveID: suite.its.User.DriveID,
|
||||
rootFolderID: suite.its.User.DriveRootFolderID,
|
||||
},
|
||||
{
|
||||
name: "site drive",
|
||||
driveID: suite.its.site.driveID,
|
||||
rootFolderID: suite.its.site.driveRootFolderID,
|
||||
driveID: suite.its.Site.DriveID,
|
||||
rootFolderID: suite.its.Site.DriveRootFolderID,
|
||||
},
|
||||
}
|
||||
for _, test := range table {
|
||||
@ -132,7 +133,7 @@ func (suite *DrivePagerIntgSuite) TestDrives_GetItemIDsInContainer() {
|
||||
t.Log("drive", test.driveID)
|
||||
t.Log("rootFolder", test.rootFolderID)
|
||||
|
||||
items, err := suite.its.ac.Stable.
|
||||
items, err := suite.its.AC.Stable.
|
||||
Client().
|
||||
Drives().
|
||||
ByDriveId(test.driveID).
|
||||
@ -149,7 +150,7 @@ func (suite *DrivePagerIntgSuite) TestDrives_GetItemIDsInContainer() {
|
||||
t,
|
||||
igv,
|
||||
"need at least one item to compare in user %s drive %s folder %s",
|
||||
suite.its.user.id, test.driveID, test.rootFolderID)
|
||||
suite.its.User.ID, test.driveID, test.rootFolderID)
|
||||
|
||||
for _, itm := range igv {
|
||||
expect[ptr.Val(itm.GetId())] = DriveItemIDType{
|
||||
@ -158,7 +159,7 @@ func (suite *DrivePagerIntgSuite) TestDrives_GetItemIDsInContainer() {
|
||||
}
|
||||
}
|
||||
|
||||
results, err := suite.its.ac.
|
||||
results, err := suite.its.AC.
|
||||
Drives().
|
||||
GetItemIDsInContainer(ctx, test.driveID, test.rootFolderID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
@ -188,11 +189,11 @@ func (suite *DrivePagerIntgSuite) TestEnumerateDriveItems() {
|
||||
items := []models.DriveItemable{}
|
||||
|
||||
pager := suite.its.
|
||||
ac.
|
||||
AC.
|
||||
Drives().
|
||||
EnumerateDriveItemsDelta(
|
||||
ctx,
|
||||
suite.its.user.driveID,
|
||||
suite.its.User.DriveID,
|
||||
"",
|
||||
CallConfig{
|
||||
Select: DefaultDriveItemProps(),
|
||||
|
||||
@ -16,17 +16,18 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/m365/graph"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
"github.com/alcionai/corso/src/pkg/control"
|
||||
"github.com/alcionai/corso/src/pkg/control/testdata"
|
||||
)
|
||||
|
||||
type DriveAPIIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func (suite *DriveAPIIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func TestDriveAPIs(t *testing.T) {
|
||||
@ -44,7 +45,7 @@ func (suite *DriveAPIIntgSuite) TestDrives_CreatePagerAndGetPage() {
|
||||
defer flush()
|
||||
|
||||
siteID := tconfig.M365SiteID(t)
|
||||
pager := suite.its.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))
|
||||
@ -58,13 +59,13 @@ func (suite *DriveAPIIntgSuite) TestDrives_PostItemInContainer() {
|
||||
defer flush()
|
||||
|
||||
rc := testdata.DefaultRestoreConfig("drive_api_post_item")
|
||||
acd := suite.its.ac.Drives()
|
||||
acd := suite.its.AC.Drives()
|
||||
|
||||
// generate a parent for the test data
|
||||
parent, err := acd.PostItemInContainer(
|
||||
ctx,
|
||||
suite.its.user.driveID,
|
||||
suite.its.user.driveRootFolderID,
|
||||
suite.its.User.DriveID,
|
||||
suite.its.User.DriveRootFolderID,
|
||||
NewDriveItem(rc.Location, true),
|
||||
control.Replace)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
@ -73,7 +74,7 @@ func (suite *DriveAPIIntgSuite) TestDrives_PostItemInContainer() {
|
||||
folder := NewDriveItem("collision", true)
|
||||
origFolder, err := acd.PostItemInContainer(
|
||||
ctx,
|
||||
suite.its.user.driveID,
|
||||
suite.its.User.DriveID,
|
||||
ptr.Val(parent.GetId()),
|
||||
folder,
|
||||
control.Copy)
|
||||
@ -83,7 +84,7 @@ func (suite *DriveAPIIntgSuite) TestDrives_PostItemInContainer() {
|
||||
file := NewDriveItem("collision.txt", false)
|
||||
origFile, err := acd.PostItemInContainer(
|
||||
ctx,
|
||||
suite.its.user.driveID,
|
||||
suite.its.User.DriveID,
|
||||
ptr.Val(parent.GetId()),
|
||||
file,
|
||||
control.Copy)
|
||||
@ -234,7 +235,7 @@ func (suite *DriveAPIIntgSuite) TestDrives_PostItemInContainer() {
|
||||
t := suite.T()
|
||||
i, err := acd.PostItemInContainer(
|
||||
ctx,
|
||||
suite.its.user.driveID,
|
||||
suite.its.User.DriveID,
|
||||
ptr.Val(parent.GetId()),
|
||||
test.postItem,
|
||||
test.onCollision)
|
||||
@ -255,15 +256,15 @@ func (suite *DriveAPIIntgSuite) TestDrives_PostItemInContainer_replaceFolderRegr
|
||||
|
||||
var (
|
||||
rc = testdata.DefaultRestoreConfig("drive_folder_replace_regression")
|
||||
acd = suite.its.ac.Drives()
|
||||
acd = suite.its.AC.Drives()
|
||||
files = make([]models.DriveItemable, 0, 5)
|
||||
)
|
||||
|
||||
// generate a folder for the test data
|
||||
folder, err := acd.PostItemInContainer(
|
||||
ctx,
|
||||
suite.its.user.driveID,
|
||||
suite.its.user.driveRootFolderID,
|
||||
suite.its.User.DriveID,
|
||||
suite.its.User.DriveRootFolderID,
|
||||
NewDriveItem(rc.Location, true),
|
||||
// skip instead of replace here to get
|
||||
// an ErrItemAlreadyExistsConflict, just in case.
|
||||
@ -275,7 +276,7 @@ func (suite *DriveAPIIntgSuite) TestDrives_PostItemInContainer_replaceFolderRegr
|
||||
file := NewDriveItem(fmt.Sprintf("collision_%d.txt", i), false)
|
||||
f, err := acd.PostItemInContainer(
|
||||
ctx,
|
||||
suite.its.user.driveID,
|
||||
suite.its.User.DriveID,
|
||||
ptr.Val(folder.GetId()),
|
||||
file,
|
||||
control.Copy)
|
||||
@ -286,7 +287,7 @@ func (suite *DriveAPIIntgSuite) TestDrives_PostItemInContainer_replaceFolderRegr
|
||||
|
||||
resultFolder, err := acd.PostItemInContainer(
|
||||
ctx,
|
||||
suite.its.user.driveID,
|
||||
suite.its.User.DriveID,
|
||||
ptr.Val(folder.GetParentReference().GetId()),
|
||||
NewDriveItem(rc.Location, true),
|
||||
control.Replace)
|
||||
@ -297,7 +298,7 @@ func (suite *DriveAPIIntgSuite) TestDrives_PostItemInContainer_replaceFolderRegr
|
||||
resultFileColl, err := acd.Stable.
|
||||
Client().
|
||||
Drives().
|
||||
ByDriveId(suite.its.user.driveID).
|
||||
ByDriveId(suite.its.User.DriveID).
|
||||
Items().
|
||||
ByDriveItemId(ptr.Val(resultFolder.GetId())).
|
||||
Children().
|
||||
|
||||
@ -12,11 +12,12 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/common/ptr"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
)
|
||||
|
||||
type EventsPagerIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestEventsPagerIntgSuite(t *testing.T) {
|
||||
@ -28,23 +29,23 @@ func TestEventsPagerIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *EventsPagerIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *EventsPagerIntgSuite) TestEvents_GetItemsInContainerByCollisionKey() {
|
||||
t := suite.T()
|
||||
ac := suite.its.ac.Events()
|
||||
ac := suite.its.AC.Events()
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
container, err := ac.GetContainerByID(ctx, suite.its.user.id, "calendar")
|
||||
container, err := ac.GetContainerByID(ctx, suite.its.User.ID, "calendar")
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
evts, err := ac.Stable.
|
||||
Client().
|
||||
Users().
|
||||
ByUserId(suite.its.user.id).
|
||||
ByUserId(suite.its.User.ID).
|
||||
Calendars().
|
||||
ByCalendarId(ptr.Val(container.GetId())).
|
||||
Events().
|
||||
@ -60,9 +61,9 @@ func (suite *EventsPagerIntgSuite) TestEvents_GetItemsInContainerByCollisionKey(
|
||||
|
||||
expect := maps.Keys(expectM)
|
||||
|
||||
results, err := suite.its.ac.
|
||||
results, err := suite.its.AC.
|
||||
Events().
|
||||
GetItemsInContainerByCollisionKey(ctx, suite.its.user.id, "calendar")
|
||||
GetItemsInContainerByCollisionKey(ctx, suite.its.User.ID, "calendar")
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
require.Less(t, 0, len(results), "requires at least one result")
|
||||
|
||||
|
||||
@ -16,6 +16,7 @@ import (
|
||||
exchMock "github.com/alcionai/corso/src/internal/m365/service/exchange/mock"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||
"github.com/alcionai/corso/src/pkg/control/testdata"
|
||||
)
|
||||
@ -219,7 +220,7 @@ func (suite *EventsAPIUnitSuite) TestBytesToEventable() {
|
||||
|
||||
type EventsAPIIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestEventsAPIIntgSuite(t *testing.T) {
|
||||
@ -231,7 +232,7 @@ func TestEventsAPIIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *EventsAPIIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *EventsAPIIntgSuite) TestEvents_RestoreLargeAttachment() {
|
||||
@ -243,7 +244,7 @@ func (suite *EventsAPIIntgSuite) TestEvents_RestoreLargeAttachment() {
|
||||
userID := tconfig.M365UserID(suite.T())
|
||||
|
||||
folderName := testdata.DefaultRestoreConfig("eventlargeattachmenttest").Location
|
||||
evts := suite.its.ac.Events()
|
||||
evts := suite.its.AC.Events()
|
||||
calendar, err := evts.CreateContainer(ctx, userID, "", folderName)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
@ -282,10 +283,10 @@ func (suite *EventsAPIIntgSuite) TestEvents_canFindNonStandardFolder() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
ac := suite.its.ac.Events()
|
||||
ac := suite.its.AC.Events()
|
||||
rc := testdata.DefaultRestoreConfig("api_calendar_discovery")
|
||||
|
||||
cal, err := ac.CreateContainer(ctx, suite.its.user.id, "", rc.Location)
|
||||
cal, err := ac.CreateContainer(ctx, suite.its.User.ID, "", rc.Location)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
var (
|
||||
@ -302,7 +303,7 @@ func (suite *EventsAPIIntgSuite) TestEvents_canFindNonStandardFolder() {
|
||||
|
||||
containers, err := ac.EnumerateContainers(
|
||||
ctx,
|
||||
suite.its.user.id,
|
||||
suite.its.User.ID,
|
||||
DefaultCalendar,
|
||||
false)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
@ -341,9 +342,9 @@ func (suite *EventsAPIIntgSuite) TestEvents_GetContainerByName() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
_, err := suite.its.ac.
|
||||
_, err := suite.its.AC.
|
||||
Events().
|
||||
GetContainerByName(ctx, suite.its.user.id, "", test.name)
|
||||
GetContainerByName(ctx, suite.its.User.ID, "", test.name)
|
||||
test.expectErr(t, err, clues.ToCore(err))
|
||||
})
|
||||
}
|
||||
@ -399,7 +400,7 @@ func (suite *EventsAPIIntgSuite) TestEvents_GetContainerByName_mocked() {
|
||||
Reply(200).
|
||||
JSON(test.results(t))
|
||||
|
||||
_, err := suite.its.gockAC.
|
||||
_, err := suite.its.GockAC.
|
||||
Events().
|
||||
GetContainerByName(ctx, "u", "", test.name)
|
||||
test.expectErr(t, err, clues.ToCore(err))
|
||||
|
||||
@ -13,6 +13,7 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/common/ptr"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
"github.com/alcionai/corso/src/pkg/fault"
|
||||
)
|
||||
|
||||
@ -76,7 +77,7 @@ func (suite *GroupUnitSuite) TestValidateGroup() {
|
||||
|
||||
type GroupsIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestGroupsIntgSuite(t *testing.T) {
|
||||
@ -88,7 +89,7 @@ func TestGroupsIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *GroupsIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *GroupsIntgSuite) TestGetAll() {
|
||||
@ -97,7 +98,7 @@ func (suite *GroupsIntgSuite) TestGetAll() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
groups, err := suite.its.ac.
|
||||
groups, err := suite.its.AC.
|
||||
Groups().
|
||||
GetAll(ctx, fault.New(true))
|
||||
require.NoError(t, err)
|
||||
@ -110,8 +111,8 @@ func (suite *GroupsIntgSuite) TestGetAllSites() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
channels, err := suite.its.ac.
|
||||
Channels().GetChannels(ctx, suite.its.group.id)
|
||||
channels, err := suite.its.AC.
|
||||
Channels().GetChannels(ctx, suite.its.Group.ID)
|
||||
require.NoError(t, err, "getting channels")
|
||||
require.NotZero(t, len(channels), "must have at least one channel")
|
||||
|
||||
@ -123,9 +124,9 @@ func (suite *GroupsIntgSuite) TestGetAllSites() {
|
||||
}
|
||||
}
|
||||
|
||||
sites, err := suite.its.ac.
|
||||
sites, err := suite.its.AC.
|
||||
Groups().
|
||||
GetAllSites(ctx, suite.its.group.id, fault.New(true))
|
||||
GetAllSites(ctx, suite.its.Group.ID, fault.New(true))
|
||||
require.NoError(t, err)
|
||||
require.NotZero(t, len(sites), "must have at least one site")
|
||||
require.Equal(t, siteCount, len(sites), "incorrect number of sites")
|
||||
@ -138,13 +139,13 @@ func (suite *GroupsIntgSuite) TestGetAllSitesNonTeam() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
group, err := suite.its.ac.Groups().GetByID(ctx, suite.its.nonTeamGroup.id, CallConfig{})
|
||||
group, err := suite.its.AC.Groups().GetByID(ctx, suite.its.NonTeamGroup.ID, CallConfig{})
|
||||
require.NoError(t, err)
|
||||
require.False(t, IsTeam(ctx, group), "group should not be a team for this test")
|
||||
|
||||
sites, err := suite.its.ac.
|
||||
sites, err := suite.its.AC.
|
||||
Groups().
|
||||
GetAllSites(ctx, suite.its.nonTeamGroup.id, fault.New(true))
|
||||
GetAllSites(ctx, suite.its.NonTeamGroup.ID, fault.New(true))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, len(sites), "incorrect number of sites")
|
||||
}
|
||||
@ -156,9 +157,9 @@ func (suite *GroupsIntgSuite) TestGroups_GetByID() {
|
||||
defer flush()
|
||||
|
||||
var (
|
||||
groupID = suite.its.group.id
|
||||
groupsEmail = suite.its.group.email
|
||||
groupsAPI = suite.its.ac.Groups()
|
||||
groupID = suite.its.Group.ID
|
||||
groupsEmail = suite.its.Group.Email
|
||||
groupsAPI = suite.its.AC.Groups()
|
||||
)
|
||||
|
||||
grp, err := groupsAPI.GetByID(ctx, groupID, CallConfig{})
|
||||
|
||||
@ -5,46 +5,13 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/alcionai/clues"
|
||||
"github.com/h2non/gock"
|
||||
"github.com/microsoft/kiota-abstractions-go/serialization"
|
||||
kjson "github.com/microsoft/kiota-serialization-json-go"
|
||||
"github.com/microsoftgraph/msgraph-sdk-go/models/odataerrors"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/alcionai/corso/src/internal/common/ptr"
|
||||
"github.com/alcionai/corso/src/internal/m365/graph"
|
||||
gmock "github.com/alcionai/corso/src/internal/m365/graph/mock"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/pkg/account"
|
||||
"github.com/alcionai/corso/src/pkg/control"
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Gockable client
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// GockClient produces a new exchange api client that can be
|
||||
// mocked using gock.
|
||||
func gockClient(creds account.M365Config) (Client, error) {
|
||||
s, err := gmock.NewService(creds)
|
||||
if err != nil {
|
||||
return Client{}, err
|
||||
}
|
||||
|
||||
li, err := gmock.NewService(creds, graph.NoTimeout())
|
||||
if err != nil {
|
||||
return Client{}, err
|
||||
}
|
||||
|
||||
return Client{
|
||||
Credentials: creds,
|
||||
Stable: s,
|
||||
LargeItem: li,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Intercepting calls with Gock
|
||||
// ---------------------------------------------------------------------------
|
||||
@ -94,92 +61,3 @@ func requireParseableToMap(t *testing.T, thing serialization.Parsable) map[strin
|
||||
|
||||
return out
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Suite Setup
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
type ids struct {
|
||||
id string
|
||||
email string
|
||||
driveID string
|
||||
driveRootFolderID string
|
||||
testContainerID string
|
||||
}
|
||||
|
||||
type intgTesterSetup struct {
|
||||
ac Client
|
||||
gockAC Client
|
||||
user ids
|
||||
site ids
|
||||
group ids
|
||||
nonTeamGroup ids // group which does not have an associated team
|
||||
}
|
||||
|
||||
func newIntegrationTesterSetup(t *testing.T) intgTesterSetup {
|
||||
its := intgTesterSetup{}
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
graph.InitializeConcurrencyLimiter(ctx, true, 4)
|
||||
|
||||
a := tconfig.NewM365Account(t)
|
||||
creds, err := a.M365Config()
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
its.ac, err = NewClient(creds, control.DefaultOptions())
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
its.gockAC, err = gockClient(creds)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
// user drive
|
||||
|
||||
its.user.id = tconfig.M365UserID(t)
|
||||
|
||||
userDrive, err := its.ac.Users().GetDefaultDrive(ctx, its.user.id)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
its.user.driveID = ptr.Val(userDrive.GetId())
|
||||
|
||||
userDriveRootFolder, err := its.ac.Drives().GetRootFolder(ctx, its.user.driveID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
its.user.driveRootFolderID = ptr.Val(userDriveRootFolder.GetId())
|
||||
|
||||
// site
|
||||
|
||||
its.site.id = tconfig.M365SiteID(t)
|
||||
|
||||
siteDrive, err := its.ac.Sites().GetDefaultDrive(ctx, its.site.id)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
its.site.driveID = ptr.Val(siteDrive.GetId())
|
||||
|
||||
siteDriveRootFolder, err := its.ac.Drives().GetRootFolder(ctx, its.site.driveID)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
its.site.driveRootFolderID = ptr.Val(siteDriveRootFolder.GetId())
|
||||
|
||||
// groups/teams
|
||||
|
||||
// use of the TeamID is intentional here, so that we are assured
|
||||
// the group has full usage of the teams api.
|
||||
its.group.id = tconfig.M365TeamID(t)
|
||||
its.group.email = tconfig.M365TeamEmail(t)
|
||||
|
||||
its.nonTeamGroup.id = tconfig.M365GroupID(t)
|
||||
|
||||
channel, err := its.ac.Channels().
|
||||
GetChannelByName(
|
||||
ctx,
|
||||
its.group.id,
|
||||
"Test")
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
require.Equal(t, "Test", ptr.Val(channel.GetDisplayName()))
|
||||
|
||||
its.group.testContainerID = ptr.Val(channel.GetId())
|
||||
|
||||
return its
|
||||
}
|
||||
|
||||
@ -12,16 +12,17 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/m365/graph"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
"github.com/alcionai/corso/src/pkg/control/testdata"
|
||||
)
|
||||
|
||||
type ListsAPIIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func (suite *ListsAPIIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func TestListsAPIIntgSuite(t *testing.T) {
|
||||
@ -39,9 +40,9 @@ func (suite *ListsAPIIntgSuite) TestLists_PostDrive() {
|
||||
defer flush()
|
||||
|
||||
var (
|
||||
acl = suite.its.ac.Lists()
|
||||
acl = suite.its.AC.Lists()
|
||||
driveName = testdata.DefaultRestoreConfig("list_api_post_drive").Location
|
||||
siteID = suite.its.site.id
|
||||
siteID = suite.its.Site.ID
|
||||
)
|
||||
|
||||
// first post, should have no errors
|
||||
|
||||
@ -13,11 +13,12 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/common/ptr"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
)
|
||||
|
||||
type MailPagerIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestMailPagerIntgSuite(t *testing.T) {
|
||||
@ -29,23 +30,23 @@ func TestMailPagerIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *MailPagerIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *MailPagerIntgSuite) TestMail_GetItemsInContainerByCollisionKey() {
|
||||
t := suite.T()
|
||||
ac := suite.its.ac.Mail()
|
||||
ac := suite.its.AC.Mail()
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
container, err := ac.GetContainerByID(ctx, suite.its.user.id, MailInbox)
|
||||
container, err := ac.GetContainerByID(ctx, suite.its.User.ID, MailInbox)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
msgs, err := ac.Stable.
|
||||
Client().
|
||||
Users().
|
||||
ByUserId(suite.its.user.id).
|
||||
ByUserId(suite.its.User.ID).
|
||||
MailFolders().
|
||||
ByMailFolderId(ptr.Val(container.GetId())).
|
||||
Messages().
|
||||
@ -61,7 +62,7 @@ func (suite *MailPagerIntgSuite) TestMail_GetItemsInContainerByCollisionKey() {
|
||||
|
||||
expect := maps.Keys(expectM)
|
||||
|
||||
results, err := suite.its.ac.Mail().GetItemsInContainerByCollisionKey(ctx, suite.its.user.id, MailInbox)
|
||||
results, err := suite.its.AC.Mail().GetItemsInContainerByCollisionKey(ctx, suite.its.User.ID, MailInbox)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
require.Less(t, 0, len(results), "requires at least one result")
|
||||
|
||||
@ -86,7 +87,7 @@ func (suite *MailPagerIntgSuite) TestMail_GetItemsInContainerByCollisionKey() {
|
||||
|
||||
func (suite *MailPagerIntgSuite) TestMail_GetItemsIDsInContainer() {
|
||||
t := suite.T()
|
||||
ac := suite.its.ac.Mail()
|
||||
ac := suite.its.AC.Mail()
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
@ -100,7 +101,7 @@ func (suite *MailPagerIntgSuite) TestMail_GetItemsIDsInContainer() {
|
||||
msgs, err := ac.Stable.
|
||||
Client().
|
||||
Users().
|
||||
ByUserId(suite.its.user.id).
|
||||
ByUserId(suite.its.User.ID).
|
||||
MailFolders().
|
||||
ByMailFolderId(MailInbox).
|
||||
Messages().
|
||||
@ -114,8 +115,8 @@ func (suite *MailPagerIntgSuite) TestMail_GetItemsIDsInContainer() {
|
||||
expect[ptr.Val(m.GetId())] = struct{}{}
|
||||
}
|
||||
|
||||
results, err := suite.its.ac.Mail().
|
||||
GetItemIDsInContainer(ctx, suite.its.user.id, MailInbox)
|
||||
results, err := suite.its.AC.Mail().
|
||||
GetItemIDsInContainer(ctx, suite.its.User.ID, MailInbox)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
require.Less(t, 0, len(results), "requires at least one result")
|
||||
require.Equal(t, len(expect), len(results), "must have same count of items")
|
||||
|
||||
@ -15,6 +15,7 @@ import (
|
||||
exchMock "github.com/alcionai/corso/src/internal/m365/service/exchange/mock"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||
"github.com/alcionai/corso/src/pkg/control/testdata"
|
||||
"github.com/alcionai/corso/src/pkg/fault"
|
||||
@ -187,7 +188,7 @@ func (suite *MailAPIUnitSuite) TestBytesToMessagable() {
|
||||
|
||||
type MailAPIIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
// We do end up mocking the actual request, but creating the rest
|
||||
@ -201,7 +202,7 @@ func TestMailAPIIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *MailAPIIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *MailAPIIntgSuite) TestHugeAttachmentListDownload() {
|
||||
@ -338,7 +339,7 @@ func (suite *MailAPIIntgSuite) TestHugeAttachmentListDownload() {
|
||||
defer gock.Off()
|
||||
test.setupf()
|
||||
|
||||
item, _, err := suite.its.gockAC.Mail().GetItem(
|
||||
item, _, err := suite.its.GockAC.Mail().GetItem(
|
||||
ctx,
|
||||
"user",
|
||||
mid,
|
||||
@ -378,7 +379,7 @@ func (suite *MailAPIIntgSuite) TestMail_RestoreLargeAttachment() {
|
||||
userID := tconfig.M365UserID(suite.T())
|
||||
|
||||
folderName := testdata.DefaultRestoreConfig("maillargeattachmenttest").Location
|
||||
msgs := suite.its.ac.Mail()
|
||||
msgs := suite.its.AC.Mail()
|
||||
mailfolder, err := msgs.CreateContainer(ctx, userID, MsgFolderRoot, folderName)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
@ -402,14 +403,14 @@ func (suite *MailAPIIntgSuite) TestMail_RestoreLargeAttachment() {
|
||||
func (suite *MailAPIIntgSuite) TestMail_GetContainerByName() {
|
||||
var (
|
||||
t = suite.T()
|
||||
acm = suite.its.ac.Mail()
|
||||
acm = suite.its.AC.Mail()
|
||||
rc = testdata.DefaultRestoreConfig("mail_get_container_by_name")
|
||||
)
|
||||
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
parent, err := acm.CreateContainer(ctx, suite.its.user.id, "msgfolderroot", rc.Location)
|
||||
parent, err := acm.CreateContainer(ctx, suite.its.User.ID, "msgfolderroot", rc.Location)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
table := []struct {
|
||||
@ -443,7 +444,7 @@ func (suite *MailAPIIntgSuite) TestMail_GetContainerByName() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
_, err := acm.GetContainerByName(ctx, suite.its.user.id, test.parentContainerID, test.name)
|
||||
_, err := acm.GetContainerByName(ctx, suite.its.User.ID, test.parentContainerID, test.name)
|
||||
test.expectErr(t, err, clues.ToCore(err))
|
||||
})
|
||||
}
|
||||
@ -455,10 +456,10 @@ func (suite *MailAPIIntgSuite) TestMail_GetContainerByName() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
child, err := acm.CreateContainer(ctx, suite.its.user.id, pid, rc.Location)
|
||||
child, err := acm.CreateContainer(ctx, suite.its.User.ID, pid, rc.Location)
|
||||
require.NoError(t, err, clues.ToCore(err))
|
||||
|
||||
result, err := acm.GetContainerByName(ctx, suite.its.user.id, pid, rc.Location)
|
||||
result, err := acm.GetContainerByName(ctx, suite.its.User.ID, pid, rc.Location)
|
||||
assert.NoError(t, err, clues.ToCore(err))
|
||||
assert.Equal(t, ptr.Val(child.GetId()), ptr.Val(result.GetId()))
|
||||
})
|
||||
@ -514,7 +515,7 @@ func (suite *MailAPIIntgSuite) TestMail_GetContainerByName_mocked() {
|
||||
Reply(200).
|
||||
JSON(test.results(t))
|
||||
|
||||
_, err := suite.its.gockAC.
|
||||
_, err := suite.its.GockAC.
|
||||
Mail().
|
||||
GetContainerByName(ctx, "u", "", test.name)
|
||||
test.expectErr(t, err, clues.ToCore(err))
|
||||
|
||||
@ -15,6 +15,7 @@ import (
|
||||
"github.com/alcionai/corso/src/internal/m365/graph"
|
||||
"github.com/alcionai/corso/src/internal/tester"
|
||||
"github.com/alcionai/corso/src/internal/tester/tconfig"
|
||||
"github.com/alcionai/corso/src/internal/tester/tsetup"
|
||||
"github.com/alcionai/corso/src/pkg/fault"
|
||||
)
|
||||
|
||||
@ -99,7 +100,7 @@ func (suite *SitesUnitSuite) TestValidateSite() {
|
||||
|
||||
type SitesIntgSuite struct {
|
||||
tester.Suite
|
||||
its intgTesterSetup
|
||||
its tsetup.M365
|
||||
}
|
||||
|
||||
func TestSitesIntgSuite(t *testing.T) {
|
||||
@ -111,7 +112,7 @@ func TestSitesIntgSuite(t *testing.T) {
|
||||
}
|
||||
|
||||
func (suite *SitesIntgSuite) SetupSuite() {
|
||||
suite.its = newIntegrationTesterSetup(suite.T())
|
||||
suite.its = tsetup.NewM365IntegrationTester(suite.T())
|
||||
}
|
||||
|
||||
func (suite *SitesIntgSuite) TestGetAll() {
|
||||
@ -120,7 +121,7 @@ func (suite *SitesIntgSuite) TestGetAll() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
sites, err := suite.its.ac.
|
||||
sites, err := suite.its.AC.
|
||||
Sites().
|
||||
GetAll(ctx, fault.New(true))
|
||||
require.NoError(t, err)
|
||||
@ -146,7 +147,7 @@ func (suite *SitesIntgSuite) TestSites_GetByID() {
|
||||
uuids = strings.Join(parts[1:], ",")
|
||||
}
|
||||
|
||||
sitesAPI := suite.its.ac.Sites()
|
||||
sitesAPI := suite.its.AC.Sites()
|
||||
|
||||
table := []struct {
|
||||
name string
|
||||
@ -249,7 +250,7 @@ func (suite *SitesIntgSuite) TestGetRoot() {
|
||||
ctx, flush := tester.NewContext(t)
|
||||
defer flush()
|
||||
|
||||
result, err := suite.its.ac.Sites().GetRoot(ctx, CallConfig{Expand: []string{"drive"}})
|
||||
result, err := suite.its.AC.Sites().GetRoot(ctx, CallConfig{Expand: []string{"drive"}})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, result, "must find the root site")
|
||||
require.NotEmpty(t, ptr.Val(result.GetId()), "must have an id")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user