Wrap all assert/require error assertion funcs
Since structured error data from clues is not added to error message logging from assert and require, we're slicing out data that is valuable to debugging. This adds a package in tester which wraps the error assertion funcs so that structured error data is appended to all failure outputs.
This commit is contained in:
parent
4a882dec3b
commit
2eaeaf1f04
@ -18,6 +18,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/exchange"
|
"github.com/alcionai/corso/src/internal/connector/exchange"
|
||||||
"github.com/alcionai/corso/src/internal/operations"
|
"github.com/alcionai/corso/src/internal/operations"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -73,7 +74,7 @@ func (suite *NoBackupExchangeIntegrationSuite) SetupSuite() {
|
|||||||
suite.recorder = strings.Builder{}
|
suite.recorder = strings.Builder{}
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -88,7 +89,7 @@ func (suite *NoBackupExchangeIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
// init the repo first
|
// init the repo first
|
||||||
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *NoBackupExchangeIntegrationSuite) TestExchangeBackupListCmd_empty() {
|
func (suite *NoBackupExchangeIntegrationSuite) TestExchangeBackupListCmd_empty() {
|
||||||
@ -110,7 +111,7 @@ func (suite *NoBackupExchangeIntegrationSuite) TestExchangeBackupListCmd_empty()
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
result := suite.recorder.String()
|
result := suite.recorder.String()
|
||||||
|
|
||||||
@ -155,7 +156,7 @@ func (suite *BackupExchangeIntegrationSuite) SetupSuite() {
|
|||||||
suite.st = tester.NewPrefixedS3Storage(t)
|
suite.st = tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -170,7 +171,7 @@ func (suite *BackupExchangeIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
// init the repo first
|
// init the repo first
|
||||||
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *BackupExchangeIntegrationSuite) TestExchangeBackupCmd() {
|
func (suite *BackupExchangeIntegrationSuite) TestExchangeBackupCmd() {
|
||||||
@ -196,7 +197,7 @@ func (suite *BackupExchangeIntegrationSuite) TestExchangeBackupCmd() {
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
result := recorder.String()
|
result := recorder.String()
|
||||||
t.Log("backup results", result)
|
t.Log("backup results", result)
|
||||||
@ -243,7 +244,7 @@ func (suite *PreparedBackupExchangeIntegrationSuite) SetupSuite() {
|
|||||||
suite.recorder = strings.Builder{}
|
suite.recorder = strings.Builder{}
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -261,7 +262,7 @@ func (suite *PreparedBackupExchangeIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
// init the repo first
|
// init the repo first
|
||||||
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.backupOps = make(map[path.CategoryType]string)
|
suite.backupOps = make(map[path.CategoryType]string)
|
||||||
|
|
||||||
@ -287,17 +288,17 @@ func (suite *PreparedBackupExchangeIntegrationSuite) SetupSuite() {
|
|||||||
sel.Include(scopes)
|
sel.Include(scopes)
|
||||||
|
|
||||||
bop, err := suite.repo.NewBackup(ctx, sel.Selector)
|
bop, err := suite.repo.NewBackup(ctx, sel.Selector)
|
||||||
require.NoError(t, bop.Run(ctx))
|
aw.MustNoErr(t, bop.Run(ctx))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
bIDs := string(bop.Results.BackupID)
|
bIDs := string(bop.Results.BackupID)
|
||||||
|
|
||||||
// sanity check, ensure we can find the backup and its details immediately
|
// sanity check, ensure we can find the backup and its details immediately
|
||||||
b, err := suite.repo.Backup(ctx, bop.Results.BackupID)
|
b, err := suite.repo.Backup(ctx, bop.Results.BackupID)
|
||||||
require.NoError(t, err, "retrieving recent backup by ID")
|
aw.MustNoErr(t, err, "retrieving recent backup by ID")
|
||||||
require.Equal(t, bIDs, string(b.ID), "repo backup matches results id")
|
require.Equal(t, bIDs, string(b.ID), "repo backup matches results id")
|
||||||
_, b, errs := suite.repo.BackupDetails(ctx, bIDs)
|
_, b, errs := suite.repo.BackupDetails(ctx, bIDs)
|
||||||
require.NoError(t, errs.Failure(), "retrieving recent backup details by ID")
|
aw.MustNoErr(t, errs.Failure(), "retrieving recent backup details by ID")
|
||||||
require.Empty(t, errs.Recovered(), "retrieving recent backup details by ID")
|
require.Empty(t, errs.Recovered(), "retrieving recent backup details by ID")
|
||||||
require.Equal(t, bIDs, string(b.ID), "repo details matches results id")
|
require.Equal(t, bIDs, string(b.ID), "repo details matches results id")
|
||||||
|
|
||||||
@ -324,7 +325,7 @@ func (suite *PreparedBackupExchangeIntegrationSuite) TestExchangeListCmd() {
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
// compare the output
|
// compare the output
|
||||||
result := suite.recorder.String()
|
result := suite.recorder.String()
|
||||||
@ -355,7 +356,7 @@ func (suite *PreparedBackupExchangeIntegrationSuite) TestExchangeListCmd_singleI
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
// compare the output
|
// compare the output
|
||||||
result := suite.recorder.String()
|
result := suite.recorder.String()
|
||||||
@ -380,7 +381,7 @@ func (suite *PreparedBackupExchangeIntegrationSuite) TestExchangeListCmd_badID()
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -398,7 +399,7 @@ func (suite *PreparedBackupExchangeIntegrationSuite) TestExchangeDetailsCmd() {
|
|||||||
|
|
||||||
// fetch the details from the repo first
|
// fetch the details from the repo first
|
||||||
deets, _, errs := suite.repo.BackupDetails(ctx, string(bID))
|
deets, _, errs := suite.repo.BackupDetails(ctx, string(bID))
|
||||||
require.NoError(t, errs.Failure())
|
aw.MustNoErr(t, errs.Failure())
|
||||||
require.Empty(t, errs.Recovered())
|
require.Empty(t, errs.Recovered())
|
||||||
|
|
||||||
cmd := tester.StubRootCmd(
|
cmd := tester.StubRootCmd(
|
||||||
@ -412,7 +413,7 @@ func (suite *PreparedBackupExchangeIntegrationSuite) TestExchangeDetailsCmd() {
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
// compare the output
|
// compare the output
|
||||||
result := suite.recorder.String()
|
result := suite.recorder.String()
|
||||||
@ -473,7 +474,7 @@ func (suite *BackupDeleteExchangeIntegrationSuite) SetupSuite() {
|
|||||||
suite.st = tester.NewPrefixedS3Storage(t)
|
suite.st = tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -489,7 +490,7 @@ func (suite *BackupDeleteExchangeIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
// init the repo first
|
// init the repo first
|
||||||
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
m365UserID := tester.M365UserID(t)
|
m365UserID := tester.M365UserID(t)
|
||||||
users := []string{m365UserID}
|
users := []string{m365UserID}
|
||||||
@ -499,8 +500,8 @@ func (suite *BackupDeleteExchangeIntegrationSuite) SetupSuite() {
|
|||||||
sel.Include(sel.MailFolders([]string{exchange.DefaultMailFolder}, selectors.PrefixMatch()))
|
sel.Include(sel.MailFolders([]string{exchange.DefaultMailFolder}, selectors.PrefixMatch()))
|
||||||
|
|
||||||
suite.backupOp, err = suite.repo.NewBackup(ctx, sel.Selector)
|
suite.backupOp, err = suite.repo.NewBackup(ctx, sel.Selector)
|
||||||
require.NoError(t, suite.backupOp.Run(ctx))
|
aw.MustNoErr(t, suite.backupOp.Run(ctx))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *BackupDeleteExchangeIntegrationSuite) TestExchangeBackupDeleteCmd() {
|
func (suite *BackupDeleteExchangeIntegrationSuite) TestExchangeBackupDeleteCmd() {
|
||||||
@ -517,7 +518,7 @@ func (suite *BackupDeleteExchangeIntegrationSuite) TestExchangeBackupDeleteCmd()
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
// a follow-up details call should fail, due to the backup ID being deleted
|
// a follow-up details call should fail, due to the backup ID being deleted
|
||||||
cmd = tester.StubRootCmd(
|
cmd = tester.StubRootCmd(
|
||||||
@ -526,7 +527,7 @@ func (suite *BackupDeleteExchangeIntegrationSuite) TestExchangeBackupDeleteCmd()
|
|||||||
"--backup", string(suite.backupOp.Results.BackupID))
|
"--backup", string(suite.backupOp.Results.BackupID))
|
||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *BackupDeleteExchangeIntegrationSuite) TestExchangeBackupDeleteCmd_UnknownID() {
|
func (suite *BackupDeleteExchangeIntegrationSuite) TestExchangeBackupDeleteCmd_UnknownID() {
|
||||||
@ -543,5 +544,5 @@ func (suite *BackupDeleteExchangeIntegrationSuite) TestExchangeBackupDeleteCmd_U
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// unknown backupIDs should error since the modelStore can't find the backup
|
// unknown backupIDs should error since the modelStore can't find the backup
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/cli/utils"
|
"github.com/alcionai/corso/src/cli/utils"
|
||||||
"github.com/alcionai/corso/src/cli/utils/testdata"
|
"github.com/alcionai/corso/src/cli/utils/testdata"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ExchangeSuite struct {
|
type ExchangeSuite struct {
|
||||||
@ -74,23 +75,23 @@ func (suite *ExchangeSuite) TestValidateBackupCreateFlags() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "no users or data",
|
name: "no users or data",
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no users only data",
|
name: "no users only data",
|
||||||
data: []string{dataEmail},
|
data: []string{dataEmail},
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "unrecognized data category",
|
name: "unrecognized data category",
|
||||||
user: []string{"fnord"},
|
user: []string{"fnord"},
|
||||||
data: []string{"smurfs"},
|
data: []string{"smurfs"},
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "only users no data",
|
name: "only users no data",
|
||||||
user: []string{"fnord"},
|
user: []string{"fnord"},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -224,7 +225,7 @@ func (suite *ExchangeSuite) TestExchangeBackupDetailsSelectors() {
|
|||||||
test.BackupGetter,
|
test.BackupGetter,
|
||||||
"backup-ID",
|
"backup-ID",
|
||||||
test.Opts)
|
test.Opts)
|
||||||
assert.NoError(t, err, "failure")
|
aw.NoErr(t, err, "failure")
|
||||||
assert.ElementsMatch(t, test.Expected, output.Entries)
|
assert.ElementsMatch(t, test.Expected, output.Entries)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -241,7 +242,7 @@ func (suite *ExchangeSuite) TestExchangeBackupDetailsSelectorsBadFormats() {
|
|||||||
test.BackupGetter,
|
test.BackupGetter,
|
||||||
"backup-ID",
|
"backup-ID",
|
||||||
test.Opts)
|
test.Opts)
|
||||||
assert.Error(t, err, "failure")
|
aw.Err(t, err, "failure")
|
||||||
assert.Empty(t, output)
|
assert.Empty(t, output)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/cli"
|
"github.com/alcionai/corso/src/cli"
|
||||||
@ -17,6 +16,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/cli/utils"
|
"github.com/alcionai/corso/src/cli/utils"
|
||||||
"github.com/alcionai/corso/src/internal/operations"
|
"github.com/alcionai/corso/src/internal/operations"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/repository"
|
"github.com/alcionai/corso/src/pkg/repository"
|
||||||
@ -58,7 +58,7 @@ func (suite *NoBackupOneDriveIntegrationSuite) SetupSuite() {
|
|||||||
suite.st = tester.NewPrefixedS3Storage(t)
|
suite.st = tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -79,7 +79,7 @@ func (suite *NoBackupOneDriveIntegrationSuite) SetupSuite() {
|
|||||||
control.Options{
|
control.Options{
|
||||||
ToggleFeatures: control.Toggles{EnablePermissionsBackup: true},
|
ToggleFeatures: control.Toggles{EnablePermissionsBackup: true},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *NoBackupOneDriveIntegrationSuite) TestOneDriveBackupListCmd_empty() {
|
func (suite *NoBackupOneDriveIntegrationSuite) TestOneDriveBackupListCmd_empty() {
|
||||||
@ -101,7 +101,7 @@ func (suite *NoBackupOneDriveIntegrationSuite) TestOneDriveBackupListCmd_empty()
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
result := suite.recorder.String()
|
result := suite.recorder.String()
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ func (suite *BackupDeleteOneDriveIntegrationSuite) SetupSuite() {
|
|||||||
suite.st = tester.NewPrefixedS3Storage(t)
|
suite.st = tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -165,7 +165,7 @@ func (suite *BackupDeleteOneDriveIntegrationSuite) SetupSuite() {
|
|||||||
control.Options{
|
control.Options{
|
||||||
ToggleFeatures: control.Toggles{EnablePermissionsBackup: true},
|
ToggleFeatures: control.Toggles{EnablePermissionsBackup: true},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
m365UserID := tester.M365UserID(t)
|
m365UserID := tester.M365UserID(t)
|
||||||
users := []string{m365UserID}
|
users := []string{m365UserID}
|
||||||
@ -175,8 +175,8 @@ func (suite *BackupDeleteOneDriveIntegrationSuite) SetupSuite() {
|
|||||||
sel.Include(sel.Folders(selectors.Any()))
|
sel.Include(sel.Folders(selectors.Any()))
|
||||||
|
|
||||||
suite.backupOp, err = suite.repo.NewBackup(ctx, sel.Selector)
|
suite.backupOp, err = suite.repo.NewBackup(ctx, sel.Selector)
|
||||||
require.NoError(t, suite.backupOp.Run(ctx))
|
aw.MustNoErr(t, suite.backupOp.Run(ctx))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *BackupDeleteOneDriveIntegrationSuite) TestOneDriveBackupDeleteCmd() {
|
func (suite *BackupDeleteOneDriveIntegrationSuite) TestOneDriveBackupDeleteCmd() {
|
||||||
@ -198,7 +198,7 @@ func (suite *BackupDeleteOneDriveIntegrationSuite) TestOneDriveBackupDeleteCmd()
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
result := suite.recorder.String()
|
result := suite.recorder.String()
|
||||||
|
|
||||||
@ -211,7 +211,7 @@ func (suite *BackupDeleteOneDriveIntegrationSuite) TestOneDriveBackupDeleteCmd()
|
|||||||
"--backup", string(suite.backupOp.Results.BackupID))
|
"--backup", string(suite.backupOp.Results.BackupID))
|
||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *BackupDeleteOneDriveIntegrationSuite) TestOneDriveBackupDeleteCmd_unknownID() {
|
func (suite *BackupDeleteOneDriveIntegrationSuite) TestOneDriveBackupDeleteCmd_unknownID() {
|
||||||
@ -228,5 +228,5 @@ func (suite *BackupDeleteOneDriveIntegrationSuite) TestOneDriveBackupDeleteCmd_u
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// unknown backupIDs should error since the modelStore can't find the backup
|
// unknown backupIDs should error since the modelStore can't find the backup
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/cli/utils/testdata"
|
"github.com/alcionai/corso/src/cli/utils/testdata"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type OneDriveSuite struct {
|
type OneDriveSuite struct {
|
||||||
@ -73,12 +74,12 @@ func (suite *OneDriveSuite) TestValidateOneDriveBackupCreateFlags() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "no users",
|
name: "no users",
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "users",
|
name: "users",
|
||||||
user: []string{"fnord"},
|
user: []string{"fnord"},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -99,7 +100,7 @@ func (suite *OneDriveSuite) TestOneDriveBackupDetailsSelectors() {
|
|||||||
test.BackupGetter,
|
test.BackupGetter,
|
||||||
"backup-ID",
|
"backup-ID",
|
||||||
test.Opts)
|
test.Opts)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.ElementsMatch(t, test.Expected, output.Entries)
|
assert.ElementsMatch(t, test.Expected, output.Entries)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -116,7 +117,7 @@ func (suite *OneDriveSuite) TestOneDriveBackupDetailsSelectorsBadFormats() {
|
|||||||
test.BackupGetter,
|
test.BackupGetter,
|
||||||
"backup-ID",
|
"backup-ID",
|
||||||
test.Opts)
|
test.Opts)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
assert.Empty(t, output)
|
assert.Empty(t, output)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/cli"
|
"github.com/alcionai/corso/src/cli"
|
||||||
@ -17,6 +16,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/cli/utils"
|
"github.com/alcionai/corso/src/cli/utils"
|
||||||
"github.com/alcionai/corso/src/internal/operations"
|
"github.com/alcionai/corso/src/internal/operations"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/repository"
|
"github.com/alcionai/corso/src/pkg/repository"
|
||||||
@ -58,7 +58,7 @@ func (suite *NoBackupSharePointIntegrationSuite) SetupSuite() {
|
|||||||
suite.st = tester.NewPrefixedS3Storage(t)
|
suite.st = tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -73,7 +73,7 @@ func (suite *NoBackupSharePointIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
// init the repo first
|
// init the repo first
|
||||||
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *NoBackupSharePointIntegrationSuite) TestSharePointBackupListCmd_empty() {
|
func (suite *NoBackupSharePointIntegrationSuite) TestSharePointBackupListCmd_empty() {
|
||||||
@ -95,7 +95,7 @@ func (suite *NoBackupSharePointIntegrationSuite) TestSharePointBackupListCmd_emp
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
result := suite.recorder.String()
|
result := suite.recorder.String()
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ func (suite *BackupDeleteSharePointIntegrationSuite) SetupSuite() {
|
|||||||
suite.st = tester.NewPrefixedS3Storage(t)
|
suite.st = tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -149,7 +149,7 @@ func (suite *BackupDeleteSharePointIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
// init the repo first
|
// init the repo first
|
||||||
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
m365SiteID := tester.M365SiteID(t)
|
m365SiteID := tester.M365SiteID(t)
|
||||||
sites := []string{m365SiteID}
|
sites := []string{m365SiteID}
|
||||||
@ -159,8 +159,8 @@ func (suite *BackupDeleteSharePointIntegrationSuite) SetupSuite() {
|
|||||||
sel.Include(sel.Libraries(selectors.Any()))
|
sel.Include(sel.Libraries(selectors.Any()))
|
||||||
|
|
||||||
suite.backupOp, err = suite.repo.NewBackup(ctx, sel.Selector)
|
suite.backupOp, err = suite.repo.NewBackup(ctx, sel.Selector)
|
||||||
require.NoError(t, suite.backupOp.Run(ctx))
|
aw.MustNoErr(t, suite.backupOp.Run(ctx))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *BackupDeleteSharePointIntegrationSuite) TestSharePointBackupDeleteCmd() {
|
func (suite *BackupDeleteSharePointIntegrationSuite) TestSharePointBackupDeleteCmd() {
|
||||||
@ -182,7 +182,7 @@ func (suite *BackupDeleteSharePointIntegrationSuite) TestSharePointBackupDeleteC
|
|||||||
ctx = print.SetRootCmd(ctx, cmd)
|
ctx = print.SetRootCmd(ctx, cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
result := suite.recorder.String()
|
result := suite.recorder.String()
|
||||||
|
|
||||||
@ -197,7 +197,7 @@ func (suite *BackupDeleteSharePointIntegrationSuite) TestSharePointBackupDeleteC
|
|||||||
// "--backup", string(suite.backupOp.Results.BackupID))
|
// "--backup", string(suite.backupOp.Results.BackupID))
|
||||||
// cli.BuildCommandTree(cmd)
|
// cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// require.Error(t, cmd.ExecuteContext(ctx))
|
// aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
func (suite *BackupDeleteSharePointIntegrationSuite) TestSharePointBackupDeleteCmd_unknownID() {
|
func (suite *BackupDeleteSharePointIntegrationSuite) TestSharePointBackupDeleteCmd_unknownID() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
@ -213,5 +213,5 @@ func (suite *BackupDeleteSharePointIntegrationSuite) TestSharePointBackupDeleteC
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// unknown backupIDs should error since the modelStore can't find the backup
|
// unknown backupIDs should error since the modelStore can't find the backup
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/cli/utils/testdata"
|
"github.com/alcionai/corso/src/cli/utils/testdata"
|
||||||
"github.com/alcionai/corso/src/internal/connector"
|
"github.com/alcionai/corso/src/internal/connector"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/selectors"
|
"github.com/alcionai/corso/src/pkg/selectors"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -77,23 +78,23 @@ func (suite *SharePointSuite) TestValidateSharePointBackupCreateFlags() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "no sites or urls",
|
name: "no sites or urls",
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "sites",
|
name: "sites",
|
||||||
site: []string{"smarf"},
|
site: []string{"smarf"},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "urls",
|
name: "urls",
|
||||||
weburl: []string{"fnord"},
|
weburl: []string{"fnord"},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "both",
|
name: "both",
|
||||||
site: []string{"smarf"},
|
site: []string{"smarf"},
|
||||||
weburl: []string{"fnord"},
|
weburl: []string{"fnord"},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -196,7 +197,7 @@ func (suite *SharePointSuite) TestSharePointBackupCreateSelectors() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
sel, err := sharePointBackupCreateSelectors(ctx, test.site, test.weburl, test.data, gc)
|
sel, err := sharePointBackupCreateSelectors(ctx, test.site, test.weburl, test.data, gc)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.ElementsMatch(t, test.expect, sel.DiscreteResourceOwners())
|
assert.ElementsMatch(t, test.expect, sel.DiscreteResourceOwners())
|
||||||
})
|
})
|
||||||
@ -214,7 +215,7 @@ func (suite *SharePointSuite) TestSharePointBackupDetailsSelectors() {
|
|||||||
test.BackupGetter,
|
test.BackupGetter,
|
||||||
"backup-ID",
|
"backup-ID",
|
||||||
test.Opts)
|
test.Opts)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.ElementsMatch(t, test.Expected, output.Entries)
|
assert.ElementsMatch(t, test.Expected, output.Entries)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -231,7 +232,7 @@ func (suite *SharePointSuite) TestSharePointBackupDetailsSelectorsBadFormats() {
|
|||||||
test.BackupGetter,
|
test.BackupGetter,
|
||||||
"backup-ID",
|
"backup-ID",
|
||||||
test.Opts)
|
test.Opts)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
assert.Empty(t, output)
|
assert.Empty(t, output)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,10 +8,10 @@ import (
|
|||||||
|
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/credentials"
|
"github.com/alcionai/corso/src/pkg/credentials"
|
||||||
"github.com/alcionai/corso/src/pkg/storage"
|
"github.com/alcionai/corso/src/pkg/storage"
|
||||||
@ -53,20 +53,20 @@ func (suite *ConfigSuite) TestReadRepoConfigBasic() {
|
|||||||
testConfigData := fmt.Sprintf(configFileTemplate, b, tID)
|
testConfigData := fmt.Sprintf(configFileTemplate, b, tID)
|
||||||
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
||||||
err := os.WriteFile(testConfigFilePath, []byte(testConfigData), 0o700)
|
err := os.WriteFile(testConfigFilePath, []byte(testConfigData), 0o700)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
// Configure viper to read test config file
|
// Configure viper to read test config file
|
||||||
vpr.SetConfigFile(testConfigFilePath)
|
vpr.SetConfigFile(testConfigFilePath)
|
||||||
|
|
||||||
// Read and validate config
|
// Read and validate config
|
||||||
require.NoError(t, vpr.ReadInConfig(), "reading repo config")
|
aw.MustNoErr(t, vpr.ReadInConfig(), "reading repo config")
|
||||||
|
|
||||||
s3Cfg, err := s3ConfigsFromViper(vpr)
|
s3Cfg, err := s3ConfigsFromViper(vpr)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, b, s3Cfg.Bucket)
|
assert.Equal(t, b, s3Cfg.Bucket)
|
||||||
|
|
||||||
m365, err := m365ConfigsFromViper(vpr)
|
m365, err := m365ConfigsFromViper(vpr)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, tID, m365.AzureTenantID)
|
assert.Equal(t, tID, m365.AzureTenantID)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,22 +83,22 @@ func (suite *ConfigSuite) TestWriteReadConfig() {
|
|||||||
|
|
||||||
// Configure viper to read test config file
|
// Configure viper to read test config file
|
||||||
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
||||||
require.NoError(t, initWithViper(vpr, testConfigFilePath), "initializing repo config")
|
aw.MustNoErr(t, initWithViper(vpr, testConfigFilePath), "initializing repo config")
|
||||||
|
|
||||||
s3Cfg := storage.S3Config{Bucket: bkt, DoNotUseTLS: true, DoNotVerifyTLS: true}
|
s3Cfg := storage.S3Config{Bucket: bkt, DoNotUseTLS: true, DoNotVerifyTLS: true}
|
||||||
m365 := account.M365Config{AzureTenantID: tid}
|
m365 := account.M365Config{AzureTenantID: tid}
|
||||||
|
|
||||||
require.NoError(t, writeRepoConfigWithViper(vpr, s3Cfg, m365), "writing repo config")
|
aw.MustNoErr(t, writeRepoConfigWithViper(vpr, s3Cfg, m365), "writing repo config")
|
||||||
require.NoError(t, vpr.ReadInConfig(), "reading repo config")
|
aw.MustNoErr(t, vpr.ReadInConfig(), "reading repo config")
|
||||||
|
|
||||||
readS3Cfg, err := s3ConfigsFromViper(vpr)
|
readS3Cfg, err := s3ConfigsFromViper(vpr)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, readS3Cfg.Bucket, s3Cfg.Bucket)
|
assert.Equal(t, readS3Cfg.Bucket, s3Cfg.Bucket)
|
||||||
assert.Equal(t, readS3Cfg.DoNotUseTLS, s3Cfg.DoNotUseTLS)
|
assert.Equal(t, readS3Cfg.DoNotUseTLS, s3Cfg.DoNotUseTLS)
|
||||||
assert.Equal(t, readS3Cfg.DoNotVerifyTLS, s3Cfg.DoNotVerifyTLS)
|
assert.Equal(t, readS3Cfg.DoNotVerifyTLS, s3Cfg.DoNotVerifyTLS)
|
||||||
|
|
||||||
readM365, err := m365ConfigsFromViper(vpr)
|
readM365, err := m365ConfigsFromViper(vpr)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, readM365.AzureTenantID, m365.AzureTenantID)
|
assert.Equal(t, readM365.AzureTenantID, m365.AzureTenantID)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,13 +115,13 @@ func (suite *ConfigSuite) TestMustMatchConfig() {
|
|||||||
|
|
||||||
// Configure viper to read test config file
|
// Configure viper to read test config file
|
||||||
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
||||||
require.NoError(t, initWithViper(vpr, testConfigFilePath), "initializing repo config")
|
aw.MustNoErr(t, initWithViper(vpr, testConfigFilePath), "initializing repo config")
|
||||||
|
|
||||||
s3Cfg := storage.S3Config{Bucket: bkt}
|
s3Cfg := storage.S3Config{Bucket: bkt}
|
||||||
m365 := account.M365Config{AzureTenantID: tid}
|
m365 := account.M365Config{AzureTenantID: tid}
|
||||||
|
|
||||||
require.NoError(t, writeRepoConfigWithViper(vpr, s3Cfg, m365), "writing repo config")
|
aw.MustNoErr(t, writeRepoConfigWithViper(vpr, s3Cfg, m365), "writing repo config")
|
||||||
require.NoError(t, vpr.ReadInConfig(), "reading repo config")
|
aw.MustNoErr(t, vpr.ReadInConfig(), "reading repo config")
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
name string
|
name string
|
||||||
@ -134,7 +134,7 @@ func (suite *ConfigSuite) TestMustMatchConfig() {
|
|||||||
storage.Bucket: bkt,
|
storage.Bucket: bkt,
|
||||||
account.AzureTenantID: tid,
|
account.AzureTenantID: tid,
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "empty values",
|
name: "empty values",
|
||||||
@ -142,17 +142,17 @@ func (suite *ConfigSuite) TestMustMatchConfig() {
|
|||||||
storage.Bucket: "",
|
storage.Bucket: "",
|
||||||
account.AzureTenantID: "",
|
account.AzureTenantID: "",
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no overrides",
|
name: "no overrides",
|
||||||
input: map[string]string{},
|
input: map[string]string{},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "nil map",
|
name: "nil map",
|
||||||
input: nil,
|
input: nil,
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no recognized keys",
|
name: "no recognized keys",
|
||||||
@ -160,7 +160,7 @@ func (suite *ConfigSuite) TestMustMatchConfig() {
|
|||||||
"fnords": "smurfs",
|
"fnords": "smurfs",
|
||||||
"nonsense": "",
|
"nonsense": "",
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "mismatch",
|
name: "mismatch",
|
||||||
@ -168,7 +168,7 @@ func (suite *ConfigSuite) TestMustMatchConfig() {
|
|||||||
storage.Bucket: tid,
|
storage.Bucket: tid,
|
||||||
account.AzureTenantID: bkt,
|
account.AzureTenantID: bkt,
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -212,7 +212,7 @@ func (suite *ConfigIntegrationSuite) TestGetStorageAndAccount() {
|
|||||||
|
|
||||||
// Configure viper to read test config file
|
// Configure viper to read test config file
|
||||||
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
testConfigFilePath := filepath.Join(t.TempDir(), "corso.toml")
|
||||||
require.NoError(t, initWithViper(vpr, testConfigFilePath), "initializing repo config")
|
aw.MustNoErr(t, initWithViper(vpr, testConfigFilePath), "initializing repo config")
|
||||||
|
|
||||||
s3Cfg := storage.S3Config{
|
s3Cfg := storage.S3Config{
|
||||||
Bucket: bkt,
|
Bucket: bkt,
|
||||||
@ -223,14 +223,14 @@ func (suite *ConfigIntegrationSuite) TestGetStorageAndAccount() {
|
|||||||
}
|
}
|
||||||
m365 := account.M365Config{AzureTenantID: tid}
|
m365 := account.M365Config{AzureTenantID: tid}
|
||||||
|
|
||||||
require.NoError(t, writeRepoConfigWithViper(vpr, s3Cfg, m365), "writing repo config")
|
aw.MustNoErr(t, writeRepoConfigWithViper(vpr, s3Cfg, m365), "writing repo config")
|
||||||
require.NoError(t, vpr.ReadInConfig(), "reading repo config")
|
aw.MustNoErr(t, vpr.ReadInConfig(), "reading repo config")
|
||||||
|
|
||||||
st, ac, err := getStorageAndAccountWithViper(vpr, true, nil)
|
st, ac, err := getStorageAndAccountWithViper(vpr, true, nil)
|
||||||
require.NoError(t, err, "getting storage and account from config")
|
aw.MustNoErr(t, err, "getting storage and account from config")
|
||||||
|
|
||||||
readS3Cfg, err := st.S3Config()
|
readS3Cfg, err := st.S3Config()
|
||||||
require.NoError(t, err, "reading s3 config from storage")
|
aw.MustNoErr(t, err, "reading s3 config from storage")
|
||||||
assert.Equal(t, readS3Cfg.Bucket, s3Cfg.Bucket)
|
assert.Equal(t, readS3Cfg.Bucket, s3Cfg.Bucket)
|
||||||
assert.Equal(t, readS3Cfg.Endpoint, s3Cfg.Endpoint)
|
assert.Equal(t, readS3Cfg.Endpoint, s3Cfg.Endpoint)
|
||||||
assert.Equal(t, readS3Cfg.Prefix, s3Cfg.Prefix)
|
assert.Equal(t, readS3Cfg.Prefix, s3Cfg.Prefix)
|
||||||
@ -238,11 +238,11 @@ func (suite *ConfigIntegrationSuite) TestGetStorageAndAccount() {
|
|||||||
assert.Equal(t, readS3Cfg.DoNotVerifyTLS, s3Cfg.DoNotVerifyTLS)
|
assert.Equal(t, readS3Cfg.DoNotVerifyTLS, s3Cfg.DoNotVerifyTLS)
|
||||||
|
|
||||||
common, err := st.CommonConfig()
|
common, err := st.CommonConfig()
|
||||||
require.NoError(t, err, "reading common config from storage")
|
aw.MustNoErr(t, err, "reading common config from storage")
|
||||||
assert.Equal(t, common.CorsoPassphrase, os.Getenv(credentials.CorsoPassphrase))
|
assert.Equal(t, common.CorsoPassphrase, os.Getenv(credentials.CorsoPassphrase))
|
||||||
|
|
||||||
readM365, err := ac.M365Config()
|
readM365, err := ac.M365Config()
|
||||||
require.NoError(t, err, "reading m365 config from account")
|
aw.MustNoErr(t, err, "reading m365 config from account")
|
||||||
assert.Equal(t, readM365.AzureTenantID, m365.AzureTenantID)
|
assert.Equal(t, readM365.AzureTenantID, m365.AzureTenantID)
|
||||||
assert.Equal(t, readM365.AzureClientID, os.Getenv(credentials.AzureClientID))
|
assert.Equal(t, readM365.AzureClientID, os.Getenv(credentials.AzureClientID))
|
||||||
assert.Equal(t, readM365.AzureClientSecret, os.Getenv(credentials.AzureClientSecret))
|
assert.Equal(t, readM365.AzureClientSecret, os.Getenv(credentials.AzureClientSecret))
|
||||||
@ -273,10 +273,10 @@ func (suite *ConfigIntegrationSuite) TestGetStorageAndAccount_noFileOnlyOverride
|
|||||||
}
|
}
|
||||||
|
|
||||||
st, ac, err := getStorageAndAccountWithViper(vpr, false, overrides)
|
st, ac, err := getStorageAndAccountWithViper(vpr, false, overrides)
|
||||||
require.NoError(t, err, "getting storage and account from config")
|
aw.MustNoErr(t, err, "getting storage and account from config")
|
||||||
|
|
||||||
readS3Cfg, err := st.S3Config()
|
readS3Cfg, err := st.S3Config()
|
||||||
require.NoError(t, err, "reading s3 config from storage")
|
aw.MustNoErr(t, err, "reading s3 config from storage")
|
||||||
assert.Equal(t, readS3Cfg.Bucket, bkt)
|
assert.Equal(t, readS3Cfg.Bucket, bkt)
|
||||||
assert.Equal(t, readS3Cfg.Endpoint, end)
|
assert.Equal(t, readS3Cfg.Endpoint, end)
|
||||||
assert.Equal(t, readS3Cfg.Prefix, pfx)
|
assert.Equal(t, readS3Cfg.Prefix, pfx)
|
||||||
@ -284,11 +284,11 @@ func (suite *ConfigIntegrationSuite) TestGetStorageAndAccount_noFileOnlyOverride
|
|||||||
assert.True(t, readS3Cfg.DoNotVerifyTLS)
|
assert.True(t, readS3Cfg.DoNotVerifyTLS)
|
||||||
|
|
||||||
common, err := st.CommonConfig()
|
common, err := st.CommonConfig()
|
||||||
require.NoError(t, err, "reading common config from storage")
|
aw.MustNoErr(t, err, "reading common config from storage")
|
||||||
assert.Equal(t, common.CorsoPassphrase, os.Getenv(credentials.CorsoPassphrase))
|
assert.Equal(t, common.CorsoPassphrase, os.Getenv(credentials.CorsoPassphrase))
|
||||||
|
|
||||||
readM365, err := ac.M365Config()
|
readM365, err := ac.M365Config()
|
||||||
require.NoError(t, err, "reading m365 config from account")
|
aw.MustNoErr(t, err, "reading m365 config from account")
|
||||||
assert.Equal(t, readM365.AzureTenantID, m365.AzureTenantID)
|
assert.Equal(t, readM365.AzureTenantID, m365.AzureTenantID)
|
||||||
assert.Equal(t, readM365.AzureClientID, os.Getenv(credentials.AzureClientID))
|
assert.Equal(t, readM365.AzureClientID, os.Getenv(credentials.AzureClientID))
|
||||||
assert.Equal(t, readM365.AzureClientSecret, os.Getenv(credentials.AzureClientSecret))
|
assert.Equal(t, readM365.AzureClientSecret, os.Getenv(credentials.AzureClientSecret))
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
@ -24,7 +25,7 @@ func (suite *PrintUnitSuite) TestOnly() {
|
|||||||
// cannot use tester.NewContext() here: circular imports
|
// cannot use tester.NewContext() here: circular imports
|
||||||
//nolint:forbidigo
|
//nolint:forbidigo
|
||||||
ctx := SetRootCmd(context.Background(), c)
|
ctx := SetRootCmd(context.Background(), c)
|
||||||
assert.NoError(t, Only(ctx, nil))
|
aw.NoErr(t, Only(ctx, nil))
|
||||||
assert.True(t, c.SilenceUsage)
|
assert.True(t, c.SilenceUsage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,13 +3,12 @@ package repo_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/cli"
|
"github.com/alcionai/corso/src/cli"
|
||||||
"github.com/alcionai/corso/src/cli/config"
|
"github.com/alcionai/corso/src/cli/config"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/repository"
|
"github.com/alcionai/corso/src/pkg/repository"
|
||||||
@ -55,7 +54,7 @@ func (suite *S3IntegrationSuite) TestInitS3Cmd() {
|
|||||||
|
|
||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
cfg, err := st.S3Config()
|
cfg, err := st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
||||||
|
|
||||||
@ -69,12 +68,12 @@ func (suite *S3IntegrationSuite) TestInitS3Cmd() {
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
|
|
||||||
// a second initialization should result in an error
|
// a second initialization should result in an error
|
||||||
err = cmd.ExecuteContext(ctx)
|
err = cmd.ExecuteContext(ctx)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
assert.ErrorIs(t, err, repository.ErrorRepoAlreadyExists)
|
aw.ErrIs(t, err, repository.ErrorRepoAlreadyExists)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -87,7 +86,7 @@ func (suite *S3IntegrationSuite) TestInitMultipleTimes() {
|
|||||||
|
|
||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
cfg, err := st.S3Config()
|
cfg, err := st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
||||||
|
|
||||||
@ -104,7 +103,7 @@ func (suite *S3IntegrationSuite) TestInitMultipleTimes() {
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +115,7 @@ func (suite *S3IntegrationSuite) TestInitS3Cmd_missingBucket() {
|
|||||||
|
|
||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
cfg, err := st.S3Config()
|
cfg, err := st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
||||||
|
|
||||||
@ -129,7 +128,7 @@ func (suite *S3IntegrationSuite) TestInitS3Cmd_missingBucket() {
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *S3IntegrationSuite) TestConnectS3Cmd() {
|
func (suite *S3IntegrationSuite) TestConnectS3Cmd() {
|
||||||
@ -154,7 +153,7 @@ func (suite *S3IntegrationSuite) TestConnectS3Cmd() {
|
|||||||
|
|
||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
cfg, err := st.S3Config()
|
cfg, err := st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -167,7 +166,7 @@ func (suite *S3IntegrationSuite) TestConnectS3Cmd() {
|
|||||||
|
|
||||||
// init the repo first
|
// init the repo first
|
||||||
_, err = repository.Initialize(ctx, account.Account{}, st, control.Options{})
|
_, err = repository.Initialize(ctx, account.Account{}, st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
// then test it
|
// then test it
|
||||||
cmd := tester.StubRootCmd(
|
cmd := tester.StubRootCmd(
|
||||||
@ -179,7 +178,7 @@ func (suite *S3IntegrationSuite) TestConnectS3Cmd() {
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
assert.NoError(t, cmd.ExecuteContext(ctx))
|
aw.NoErr(t, cmd.ExecuteContext(ctx))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -192,7 +191,7 @@ func (suite *S3IntegrationSuite) TestConnectS3Cmd_BadBucket() {
|
|||||||
|
|
||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
cfg, err := st.S3Config()
|
cfg, err := st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
||||||
|
|
||||||
@ -206,7 +205,7 @@ func (suite *S3IntegrationSuite) TestConnectS3Cmd_BadBucket() {
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *S3IntegrationSuite) TestConnectS3Cmd_BadPrefix() {
|
func (suite *S3IntegrationSuite) TestConnectS3Cmd_BadPrefix() {
|
||||||
@ -217,7 +216,7 @@ func (suite *S3IntegrationSuite) TestConnectS3Cmd_BadPrefix() {
|
|||||||
|
|
||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
cfg, err := st.S3Config()
|
cfg, err := st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
vpr, configFP := tester.MakeTempTestConfigClone(t, nil)
|
||||||
|
|
||||||
@ -231,5 +230,5 @@ func (suite *S3IntegrationSuite) TestConnectS3Cmd_BadPrefix() {
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/exchange"
|
"github.com/alcionai/corso/src/internal/connector/exchange"
|
||||||
"github.com/alcionai/corso/src/internal/operations"
|
"github.com/alcionai/corso/src/internal/operations"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -64,7 +65,7 @@ func (suite *RestoreExchangeIntegrationSuite) SetupSuite() {
|
|||||||
suite.st = tester.NewPrefixedS3Storage(t)
|
suite.st = tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
cfg, err := suite.st.S3Config()
|
cfg, err := suite.st.S3Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
force := map[string]string{
|
force := map[string]string{
|
||||||
tester.TestCfgAccountProvider: "M365",
|
tester.TestCfgAccountProvider: "M365",
|
||||||
@ -78,7 +79,7 @@ func (suite *RestoreExchangeIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
// init the repo first
|
// init the repo first
|
||||||
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
suite.repo, err = repository.Initialize(ctx, suite.acct, suite.st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.backupOps = make(map[path.CategoryType]operations.BackupOperation)
|
suite.backupOps = make(map[path.CategoryType]operations.BackupOperation)
|
||||||
|
|
||||||
@ -102,17 +103,17 @@ func (suite *RestoreExchangeIntegrationSuite) SetupSuite() {
|
|||||||
sel.Include(scopes)
|
sel.Include(scopes)
|
||||||
|
|
||||||
bop, err := suite.repo.NewBackup(ctx, sel.Selector)
|
bop, err := suite.repo.NewBackup(ctx, sel.Selector)
|
||||||
require.NoError(t, bop.Run(ctx))
|
aw.MustNoErr(t, bop.Run(ctx))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.backupOps[set] = bop
|
suite.backupOps[set] = bop
|
||||||
|
|
||||||
// sanity check, ensure we can find the backup and its details immediately
|
// sanity check, ensure we can find the backup and its details immediately
|
||||||
_, err = suite.repo.Backup(ctx, bop.Results.BackupID)
|
_, err = suite.repo.Backup(ctx, bop.Results.BackupID)
|
||||||
require.NoError(t, err, "retrieving recent backup by ID")
|
aw.MustNoErr(t, err, "retrieving recent backup by ID")
|
||||||
|
|
||||||
_, _, errs := suite.repo.BackupDetails(ctx, string(bop.Results.BackupID))
|
_, _, errs := suite.repo.BackupDetails(ctx, string(bop.Results.BackupID))
|
||||||
require.NoError(t, errs.Failure(), "retrieving recent backup details by ID")
|
aw.MustNoErr(t, errs.Failure(), "retrieving recent backup details by ID")
|
||||||
require.Empty(t, errs.Recovered(), "retrieving recent backup details by ID")
|
require.Empty(t, errs.Recovered(), "retrieving recent backup details by ID")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,7 +133,7 @@ func (suite *RestoreExchangeIntegrationSuite) TestExchangeRestoreCmd() {
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.NoError(t, cmd.ExecuteContext(ctx))
|
aw.MustNoErr(t, cmd.ExecuteContext(ctx))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -165,7 +166,7 @@ func (suite *RestoreExchangeIntegrationSuite) TestExchangeRestoreCmd_badTimeFlag
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -196,7 +197,7 @@ func (suite *RestoreExchangeIntegrationSuite) TestExchangeRestoreCmd_badBoolFlag
|
|||||||
cli.BuildCommandTree(cmd)
|
cli.BuildCommandTree(cmd)
|
||||||
|
|
||||||
// run the command
|
// run the command
|
||||||
require.Error(t, cmd.ExecuteContext(ctx))
|
aw.MustErr(t, cmd.ExecuteContext(ctx))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/cli/utils"
|
"github.com/alcionai/corso/src/cli/utils"
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/selectors"
|
"github.com/alcionai/corso/src/pkg/selectors"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -30,23 +31,23 @@ func (suite *ExchangeUtilsSuite) TestValidateRestoreFlags() {
|
|||||||
name: "with backupid",
|
name: "with backupid",
|
||||||
backupID: "bid",
|
backupID: "bid",
|
||||||
opts: utils.ExchangeOpts{},
|
opts: utils.ExchangeOpts{},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "no backupid",
|
name: "no backupid",
|
||||||
opts: utils.ExchangeOpts{},
|
opts: utils.ExchangeOpts{},
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "valid time",
|
name: "valid time",
|
||||||
backupID: "bid",
|
backupID: "bid",
|
||||||
opts: utils.ExchangeOpts{EmailReceivedAfter: common.Now()},
|
opts: utils.ExchangeOpts{EmailReceivedAfter: common.Now()},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "invalid time",
|
name: "invalid time",
|
||||||
opts: utils.ExchangeOpts{EmailReceivedAfter: "fnords"},
|
opts: utils.ExchangeOpts{EmailReceivedAfter: "fnords"},
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/selectors"
|
"github.com/alcionai/corso/src/pkg/selectors"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -25,11 +26,11 @@ func (suite *CliUtilsSuite) TestRequireProps() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
props: map[string]string{"exists": "I have seen the fnords!"},
|
props: map[string]string{"exists": "I have seen the fnords!"},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
props: map[string]string{"not-exists": ""},
|
props: map[string]string{"not-exists": ""},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CommonConfigsSuite struct {
|
type CommonConfigsSuite struct {
|
||||||
@ -49,9 +50,9 @@ func (suite *CommonConfigsSuite) TestUnionConfigs_string() {
|
|||||||
bc stringConfig2
|
bc stringConfig2
|
||||||
errCheck assert.ErrorAssertionFunc
|
errCheck assert.ErrorAssertionFunc
|
||||||
}{
|
}{
|
||||||
{"no error", stringConfig{keyExpect, nil}, stringConfig2{keyExpect2, nil}, assert.NoError},
|
{"no error", stringConfig{keyExpect, nil}, stringConfig2{keyExpect2, nil}, aw.NoErr},
|
||||||
{"tc error", stringConfig{keyExpect, assert.AnError}, stringConfig2{keyExpect2, nil}, assert.Error},
|
{"tc error", stringConfig{keyExpect, assert.AnError}, stringConfig2{keyExpect2, nil}, aw.Err},
|
||||||
{"fc error", stringConfig{keyExpect, nil}, stringConfig2{keyExpect2, assert.AnError}, assert.Error},
|
{"fc error", stringConfig{keyExpect, nil}, stringConfig2{keyExpect2, assert.AnError}, aw.Err},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.Run(test.name, func() {
|
suite.Run(test.name, func() {
|
||||||
|
|||||||
@ -5,11 +5,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CommonTimeUnitSuite struct {
|
type CommonTimeUnitSuite struct {
|
||||||
@ -48,14 +48,14 @@ func (suite *CommonTimeUnitSuite) TestParseTime() {
|
|||||||
|
|
||||||
nowStr := now.Format(time.RFC3339Nano)
|
nowStr := now.Format(time.RFC3339Nano)
|
||||||
result, err := common.ParseTime(nowStr)
|
result, err := common.ParseTime(nowStr)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, now.UTC(), result)
|
assert.Equal(t, now.UTC(), result)
|
||||||
|
|
||||||
_, err = common.ParseTime("")
|
_, err = common.ParseTime("")
|
||||||
require.Error(t, err)
|
aw.MustErr(t, err)
|
||||||
|
|
||||||
_, err = common.ParseTime("flablabls")
|
_, err = common.ParseTime("flablabls")
|
||||||
require.Error(t, err)
|
aw.MustErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *CommonTimeUnitSuite) TestExtractTime() {
|
func (suite *CommonTimeUnitSuite) TestExtractTime() {
|
||||||
@ -68,14 +68,14 @@ func (suite *CommonTimeUnitSuite) TestExtractTime() {
|
|||||||
|
|
||||||
c, err := common.ParseTime(ts)
|
c, err := common.ParseTime(ts)
|
||||||
|
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
parseT := func(v string) time.Time {
|
parseT := func(v string) time.Time {
|
||||||
t, err := time.Parse(time.RFC3339, v)
|
t, err := time.Parse(time.RFC3339, v)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
@ -151,7 +151,7 @@ func (suite *CommonTimeUnitSuite) TestExtractTime() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
result, err := common.ExtractTime(test.input)
|
result, err := common.ExtractTime(test.input)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, test.expect, comparable(t, result, test.clippedFormat))
|
assert.Equal(t, test.expect, comparable(t, result, test.clippedFormat))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,13 +6,13 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/exchange"
|
"github.com/alcionai/corso/src/internal/connector/exchange"
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/sharepoint"
|
"github.com/alcionai/corso/src/internal/connector/sharepoint"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -108,7 +108,7 @@ func (suite *ConnectorDataCollectionIntegrationSuite) TestExchangeDataCollection
|
|||||||
connector.UpdateStatus,
|
connector.UpdateStatus,
|
||||||
control.Options{},
|
control.Options{},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Empty(t, excludes)
|
assert.Empty(t, excludes)
|
||||||
|
|
||||||
for range collections {
|
for range collections {
|
||||||
@ -124,7 +124,7 @@ func (suite *ConnectorDataCollectionIntegrationSuite) TestExchangeDataCollection
|
|||||||
for object := range col.Items(ctx, fault.New(true)) {
|
for object := range col.Items(ctx, fault.New(true)) {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
_, err := buf.ReadFrom(object.ToReader())
|
_, err := buf.ReadFrom(object.ToReader())
|
||||||
assert.NoError(t, err, "received a buf.Read error")
|
aw.NoErr(t, err, "received a buf.Read error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ func (suite *ConnectorDataCollectionIntegrationSuite) TestDataCollections_invali
|
|||||||
nil,
|
nil,
|
||||||
control.Options{},
|
control.Options{},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
assert.Empty(t, collections)
|
assert.Empty(t, collections)
|
||||||
assert.Empty(t, excludes)
|
assert.Empty(t, excludes)
|
||||||
})
|
})
|
||||||
@ -260,7 +260,7 @@ func (suite *ConnectorDataCollectionIntegrationSuite) TestSharePointDataCollecti
|
|||||||
connector,
|
connector,
|
||||||
control.Options{},
|
control.Options{},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
// Not expecting excludes as this isn't an incremental backup.
|
// Not expecting excludes as this isn't an incremental backup.
|
||||||
assert.Empty(t, excludes)
|
assert.Empty(t, excludes)
|
||||||
|
|
||||||
@ -276,7 +276,7 @@ func (suite *ConnectorDataCollectionIntegrationSuite) TestSharePointDataCollecti
|
|||||||
for object := range coll.Items(ctx, fault.New(true)) {
|
for object := range coll.Items(ctx, fault.New(true)) {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
_, err := buf.ReadFrom(object.ToReader())
|
_, err := buf.ReadFrom(object.ToReader())
|
||||||
assert.NoError(t, err, "reading item")
|
aw.NoErr(t, err, "reading item")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,7 +338,7 @@ func (suite *ConnectorCreateSharePointCollectionIntegrationSuite) TestCreateShar
|
|||||||
nil,
|
nil,
|
||||||
control.Options{},
|
control.Options{},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Len(t, cols, 1)
|
assert.Len(t, cols, 1)
|
||||||
// No excludes yet as this isn't an incremental backup.
|
// No excludes yet as this isn't an incremental backup.
|
||||||
assert.Empty(t, excludes)
|
assert.Empty(t, excludes)
|
||||||
@ -369,7 +369,7 @@ func (suite *ConnectorCreateSharePointCollectionIntegrationSuite) TestCreateShar
|
|||||||
nil,
|
nil,
|
||||||
control.Options{},
|
control.Options{},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Less(t, 0, len(cols))
|
assert.Less(t, 0, len(cols))
|
||||||
// No excludes yet as this isn't an incremental backup.
|
// No excludes yet as this isn't an incremental backup.
|
||||||
assert.Empty(t, excludes)
|
assert.Empty(t, excludes)
|
||||||
@ -381,7 +381,7 @@ func (suite *ConnectorCreateSharePointCollectionIntegrationSuite) TestCreateShar
|
|||||||
t.Log("File: " + item.UUID())
|
t.Log("File: " + item.UUID())
|
||||||
|
|
||||||
bs, err := io.ReadAll(item.ToReader())
|
bs, err := io.ReadAll(item.ToReader())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
t.Log(string(bs))
|
t.Log(string(bs))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph/betasdk/models"
|
"github.com/alcionai/corso/src/internal/connector/graph/betasdk/models"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type BetaUnitSuite struct {
|
type BetaUnitSuite struct {
|
||||||
@ -24,14 +25,14 @@ func (suite *BetaUnitSuite) TestBetaService_Adapter() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
a := tester.NewMockM365Account(t)
|
a := tester.NewMockM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
adpt, err := graph.CreateAdapter(
|
adpt, err := graph.CreateAdapter(
|
||||||
m365.AzureTenantID,
|
m365.AzureTenantID,
|
||||||
m365.AzureClientID,
|
m365.AzureClientID,
|
||||||
m365.AzureClientSecret,
|
m365.AzureClientSecret,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
service := NewBetaService(adpt)
|
service := NewBetaService(adpt)
|
||||||
require.NotNil(t, service)
|
require.NotNil(t, service)
|
||||||
@ -45,5 +46,5 @@ func (suite *BetaUnitSuite) TestBetaService_Adapter() {
|
|||||||
|
|
||||||
byteArray, err := service.Serialize(testPage)
|
byteArray, err := service.Serialize(testPage)
|
||||||
assert.NotEmpty(t, byteArray)
|
assert.NotEmpty(t, byteArray)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,13 +5,13 @@ import (
|
|||||||
|
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ func (suite *ExchangeServiceSuite) SetupSuite() {
|
|||||||
|
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.credentials = m365
|
suite.credentials = m365
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ func (suite *ExchangeServiceSuite) SetupSuite() {
|
|||||||
m365.AzureTenantID,
|
m365.AzureTenantID,
|
||||||
m365.AzureClientID,
|
m365.AzureClientID,
|
||||||
m365.AzureClientSecret)
|
m365.AzureClientSecret)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.gs = graph.NewService(adpt)
|
suite.gs = graph.NewService(adpt)
|
||||||
}
|
}
|
||||||
@ -59,22 +59,22 @@ func (suite *ExchangeServiceSuite) TestOptionsForCalendars() {
|
|||||||
{
|
{
|
||||||
name: "Empty Literal",
|
name: "Empty Literal",
|
||||||
params: []string{},
|
params: []string{},
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Invalid Parameter",
|
name: "Invalid Parameter",
|
||||||
params: []string{"status"},
|
params: []string{"status"},
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Invalid Parameters",
|
name: "Invalid Parameters",
|
||||||
params: []string{"status", "height", "month"},
|
params: []string{"status", "height", "month"},
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Valid Parameters",
|
name: "Valid Parameters",
|
||||||
params: []string{"changeKey", "events", "owner"},
|
params: []string{"changeKey", "events", "owner"},
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
@ -98,19 +98,19 @@ func (suite *ExchangeServiceSuite) TestOptionsForFolders() {
|
|||||||
{
|
{
|
||||||
name: "Valid Folder Option",
|
name: "Valid Folder Option",
|
||||||
params: []string{"parentFolderId"},
|
params: []string{"parentFolderId"},
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
expected: 2,
|
expected: 2,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Multiple Folder Options: Valid",
|
name: "Multiple Folder Options: Valid",
|
||||||
params: []string{"displayName", "isHidden"},
|
params: []string{"displayName", "isHidden"},
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
expected: 3,
|
expected: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Invalid Folder option param",
|
name: "Invalid Folder option param",
|
||||||
params: []string{"status"},
|
params: []string{"status"},
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
@ -135,19 +135,19 @@ func (suite *ExchangeServiceSuite) TestOptionsForContacts() {
|
|||||||
{
|
{
|
||||||
name: "Valid Contact Option",
|
name: "Valid Contact Option",
|
||||||
params: []string{"displayName"},
|
params: []string{"displayName"},
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
expected: 2,
|
expected: 2,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Multiple Contact Options: Valid",
|
name: "Multiple Contact Options: Valid",
|
||||||
params: []string{"displayName", "parentFolderId"},
|
params: []string{"displayName", "parentFolderId"},
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
expected: 3,
|
expected: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Invalid Contact Option param",
|
name: "Invalid Contact Option param",
|
||||||
params: []string{"status"},
|
params: []string{"status"},
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
@ -180,7 +180,7 @@ func (suite *ExchangeServiceSuite) TestHasAttachments() {
|
|||||||
"This is testing",
|
"This is testing",
|
||||||
)
|
)
|
||||||
message, err := support.CreateMessageFromBytes(byteArray)
|
message, err := support.CreateMessageFromBytes(byteArray)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
return message.GetBody()
|
return message.GetBody()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -190,7 +190,7 @@ func (suite *ExchangeServiceSuite) TestHasAttachments() {
|
|||||||
getBodyable: func(t *testing.T) models.ItemBodyable {
|
getBodyable: func(t *testing.T) models.ItemBodyable {
|
||||||
byteArray := mockconnector.GetMessageWithOneDriveAttachment("Test legacy")
|
byteArray := mockconnector.GetMessageWithOneDriveAttachment("Test legacy")
|
||||||
message, err := support.CreateMessageFromBytes(byteArray)
|
message, err := support.CreateMessageFromBytes(byteArray)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
return message.GetBody()
|
return message.GetBody()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -6,12 +6,12 @@ import (
|
|||||||
|
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ func (suite *EventsAPIUnitSuite) TestEventInfo() {
|
|||||||
event, err = support.CreateEventFromBytes(bytes)
|
event, err = support.CreateEventFromBytes(bytes)
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
return event, &details.ExchangeInfo{
|
return event, &details.ExchangeInfo{
|
||||||
ItemType: details.ExchangeEvent,
|
ItemType: details.ExchangeEvent,
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -78,7 +79,7 @@ var (
|
|||||||
displayName: &testName,
|
displayName: &testName,
|
||||||
parentID: &testParentID,
|
parentID: &testParentID,
|
||||||
},
|
},
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "NilDisplayName",
|
name: "NilDisplayName",
|
||||||
@ -87,7 +88,7 @@ var (
|
|||||||
displayName: nil,
|
displayName: nil,
|
||||||
parentID: &testParentID,
|
parentID: &testParentID,
|
||||||
},
|
},
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "EmptyID",
|
name: "EmptyID",
|
||||||
@ -96,7 +97,7 @@ var (
|
|||||||
displayName: &testName,
|
displayName: &testName,
|
||||||
parentID: &testParentID,
|
parentID: &testParentID,
|
||||||
},
|
},
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "EmptyDisplayName",
|
name: "EmptyDisplayName",
|
||||||
@ -105,7 +106,7 @@ var (
|
|||||||
displayName: &emptyString,
|
displayName: &emptyString,
|
||||||
parentID: &testParentID,
|
parentID: &testParentID,
|
||||||
},
|
},
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "AllValues",
|
name: "AllValues",
|
||||||
@ -114,7 +115,7 @@ var (
|
|||||||
displayName: &testName,
|
displayName: &testName,
|
||||||
parentID: &testParentID,
|
parentID: &testParentID,
|
||||||
},
|
},
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -136,7 +137,7 @@ func (suite *FolderCacheUnitSuite) TestCheckRequiredValues() {
|
|||||||
displayName: &testName,
|
displayName: &testName,
|
||||||
parentID: nil,
|
parentID: nil,
|
||||||
},
|
},
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "EmptyParentFolderID",
|
name: "EmptyParentFolderID",
|
||||||
@ -145,7 +146,7 @@ func (suite *FolderCacheUnitSuite) TestCheckRequiredValues() {
|
|||||||
displayName: &testName,
|
displayName: &testName,
|
||||||
parentID: &emptyString,
|
parentID: &emptyString,
|
||||||
},
|
},
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +175,7 @@ func (suite *FolderCacheUnitSuite) TestAddFolder() {
|
|||||||
},
|
},
|
||||||
nil,
|
nil,
|
||||||
nil),
|
nil),
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "NoParentPath",
|
name: "NoParentPath",
|
||||||
@ -186,7 +187,7 @@ func (suite *FolderCacheUnitSuite) TestAddFolder() {
|
|||||||
},
|
},
|
||||||
path.Builder{}.Append("foo"),
|
path.Builder{}.Append("foo"),
|
||||||
path.Builder{}.Append("loc")),
|
path.Builder{}.Append("loc")),
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "NoName",
|
name: "NoName",
|
||||||
@ -198,7 +199,7 @@ func (suite *FolderCacheUnitSuite) TestAddFolder() {
|
|||||||
},
|
},
|
||||||
path.Builder{}.Append("foo"),
|
path.Builder{}.Append("foo"),
|
||||||
path.Builder{}.Append("loc")),
|
path.Builder{}.Append("loc")),
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "NoID",
|
name: "NoID",
|
||||||
@ -210,7 +211,7 @@ func (suite *FolderCacheUnitSuite) TestAddFolder() {
|
|||||||
},
|
},
|
||||||
path.Builder{}.Append("foo"),
|
path.Builder{}.Append("foo"),
|
||||||
path.Builder{}.Append("loc")),
|
path.Builder{}.Append("loc")),
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "NoPath",
|
name: "NoPath",
|
||||||
@ -222,7 +223,7 @@ func (suite *FolderCacheUnitSuite) TestAddFolder() {
|
|||||||
},
|
},
|
||||||
nil,
|
nil,
|
||||||
nil),
|
nil),
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,12 +342,12 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestDepthLimit() {
|
|||||||
{
|
{
|
||||||
name: "AtLimit",
|
name: "AtLimit",
|
||||||
numContainers: maxIterations,
|
numContainers: maxIterations,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "OverLimit",
|
name: "OverLimit",
|
||||||
numContainers: maxIterations + 1,
|
numContainers: maxIterations + 1,
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -365,7 +366,7 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestPopulatePaths() {
|
|||||||
|
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
require.NoError(t, suite.fc.populatePaths(ctx, false))
|
aw.MustNoErr(t, suite.fc.populatePaths(ctx, false))
|
||||||
|
|
||||||
items := suite.fc.Items()
|
items := suite.fc.Items()
|
||||||
gotPaths := make([]string, 0, len(items))
|
gotPaths := make([]string, 0, len(items))
|
||||||
@ -389,7 +390,7 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestLookupCachedFolderNoPathsCached
|
|||||||
for _, c := range suite.allContainers {
|
for _, c := range suite.allContainers {
|
||||||
suite.T().Run(*c.GetDisplayName(), func(t *testing.T) {
|
suite.T().Run(*c.GetDisplayName(), func(t *testing.T) {
|
||||||
p, l, err := suite.fc.IDToPath(ctx, c.id, false)
|
p, l, err := suite.fc.IDToPath(ctx, c.id, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, c.expectedPath, p.String())
|
assert.Equal(t, c.expectedPath, p.String())
|
||||||
assert.Equal(t, c.expectedLocation, l.String())
|
assert.Equal(t, c.expectedLocation, l.String())
|
||||||
})
|
})
|
||||||
@ -403,7 +404,7 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestLookupCachedFolderNoPathsCached
|
|||||||
for _, c := range suite.containersWithID {
|
for _, c := range suite.containersWithID {
|
||||||
suite.T().Run(*c.GetDisplayName(), func(t *testing.T) {
|
suite.T().Run(*c.GetDisplayName(), func(t *testing.T) {
|
||||||
p, l, err := suite.fcWithID.IDToPath(ctx, c.id, true)
|
p, l, err := suite.fcWithID.IDToPath(ctx, c.id, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, c.expectedPath, p.String())
|
assert.Equal(t, c.expectedPath, p.String())
|
||||||
assert.Equal(t, c.expectedLocation, l.String())
|
assert.Equal(t, c.expectedLocation, l.String())
|
||||||
})
|
})
|
||||||
@ -418,14 +419,14 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestLookupCachedFolderCachesPaths()
|
|||||||
c := suite.allContainers[len(suite.allContainers)-1]
|
c := suite.allContainers[len(suite.allContainers)-1]
|
||||||
|
|
||||||
p, l, err := suite.fc.IDToPath(ctx, c.id, false)
|
p, l, err := suite.fc.IDToPath(ctx, c.id, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, c.expectedPath, p.String())
|
assert.Equal(t, c.expectedPath, p.String())
|
||||||
assert.Equal(t, c.expectedLocation, l.String())
|
assert.Equal(t, c.expectedLocation, l.String())
|
||||||
|
|
||||||
c.parentID = "foo"
|
c.parentID = "foo"
|
||||||
|
|
||||||
p, l, err = suite.fc.IDToPath(ctx, c.id, false)
|
p, l, err = suite.fc.IDToPath(ctx, c.id, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, c.expectedPath, p.String())
|
assert.Equal(t, c.expectedPath, p.String())
|
||||||
assert.Equal(t, c.expectedLocation, l.String())
|
assert.Equal(t, c.expectedLocation, l.String())
|
||||||
}
|
}
|
||||||
@ -438,14 +439,14 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestLookupCachedFolderCachesPaths_u
|
|||||||
c := suite.containersWithID[len(suite.containersWithID)-1]
|
c := suite.containersWithID[len(suite.containersWithID)-1]
|
||||||
|
|
||||||
p, l, err := suite.fcWithID.IDToPath(ctx, c.id, true)
|
p, l, err := suite.fcWithID.IDToPath(ctx, c.id, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, c.expectedPath, p.String())
|
assert.Equal(t, c.expectedPath, p.String())
|
||||||
assert.Equal(t, c.expectedLocation, l.String())
|
assert.Equal(t, c.expectedLocation, l.String())
|
||||||
|
|
||||||
c.parentID = "foo"
|
c.parentID = "foo"
|
||||||
|
|
||||||
p, l, err = suite.fcWithID.IDToPath(ctx, c.id, true)
|
p, l, err = suite.fcWithID.IDToPath(ctx, c.id, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, c.expectedPath, p.String())
|
assert.Equal(t, c.expectedPath, p.String())
|
||||||
assert.Equal(t, c.expectedLocation, l.String())
|
assert.Equal(t, c.expectedLocation, l.String())
|
||||||
}
|
}
|
||||||
@ -461,7 +462,7 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestLookupCachedFolderErrorsParentN
|
|||||||
delete(suite.fc.cache, almostLast.id)
|
delete(suite.fc.cache, almostLast.id)
|
||||||
|
|
||||||
_, _, err := suite.fc.IDToPath(ctx, last.id, false)
|
_, _, err := suite.fc.IDToPath(ctx, last.id, false)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ConfiguredFolderCacheUnitSuite) TestLookupCachedFolderErrorsNotFound() {
|
func (suite *ConfiguredFolderCacheUnitSuite) TestLookupCachedFolderErrorsNotFound() {
|
||||||
@ -471,7 +472,7 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestLookupCachedFolderErrorsNotFoun
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
_, _, err := suite.fc.IDToPath(ctx, "foo", false)
|
_, _, err := suite.fc.IDToPath(ctx, "foo", false)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ConfiguredFolderCacheUnitSuite) TestAddToCache() {
|
func (suite *ConfiguredFolderCacheUnitSuite) TestAddToCache() {
|
||||||
@ -490,12 +491,12 @@ func (suite *ConfiguredFolderCacheUnitSuite) TestAddToCache() {
|
|||||||
m.expectedLocation = stdpath.Join(last.expectedPath, m.displayName)
|
m.expectedLocation = stdpath.Join(last.expectedPath, m.displayName)
|
||||||
|
|
||||||
require.Empty(t, suite.fc.DestinationNameToID(dest), "destination not yet added to cache")
|
require.Empty(t, suite.fc.DestinationNameToID(dest), "destination not yet added to cache")
|
||||||
require.NoError(t, suite.fc.AddToCache(ctx, m, false))
|
aw.MustNoErr(t, suite.fc.AddToCache(ctx, m, false))
|
||||||
require.Empty(t, suite.fc.DestinationNameToID(dest),
|
require.Empty(t, suite.fc.DestinationNameToID(dest),
|
||||||
"destination id from cache, still empty, because this is not a calendar")
|
"destination id from cache, still empty, because this is not a calendar")
|
||||||
|
|
||||||
p, l, err := suite.fc.IDToPath(ctx, m.id, false)
|
p, l, err := suite.fc.IDToPath(ctx, m.id, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, m.expectedPath, p.String())
|
assert.Equal(t, m.expectedPath, p.String())
|
||||||
assert.Equal(t, m.expectedLocation, l.String())
|
assert.Equal(t, m.expectedLocation, l.String())
|
||||||
}
|
}
|
||||||
@ -525,7 +526,7 @@ func (suite *FolderCacheIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.credentials = m365
|
suite.credentials = m365
|
||||||
|
|
||||||
@ -533,11 +534,11 @@ func (suite *FolderCacheIntegrationSuite) SetupSuite() {
|
|||||||
m365.AzureTenantID,
|
m365.AzureTenantID,
|
||||||
m365.AzureClientID,
|
m365.AzureClientID,
|
||||||
m365.AzureClientSecret)
|
m365.AzureClientSecret)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.gs = graph.NewService(adpt)
|
suite.gs = graph.NewService(adpt)
|
||||||
|
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Testing to ensure that cache system works for in multiple different environments
|
// Testing to ensure that cache system works for in multiple different environments
|
||||||
@ -547,7 +548,7 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
|
|
||||||
a := tester.NewM365Account(suite.T())
|
a := tester.NewM365Account(suite.T())
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
user = tester.M365UserID(suite.T())
|
user = tester.M365UserID(suite.T())
|
||||||
@ -573,7 +574,7 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
user,
|
user,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return pth
|
return pth
|
||||||
},
|
},
|
||||||
@ -586,7 +587,7 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
user,
|
user,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return pth
|
return pth
|
||||||
},
|
},
|
||||||
@ -602,7 +603,7 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
user,
|
user,
|
||||||
path.ContactsCategory,
|
path.ContactsCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return aPath
|
return aPath
|
||||||
},
|
},
|
||||||
@ -614,7 +615,7 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
user,
|
user,
|
||||||
path.ContactsCategory,
|
path.ContactsCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return aPath
|
return aPath
|
||||||
},
|
},
|
||||||
@ -631,7 +632,7 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
user,
|
user,
|
||||||
path.EventsCategory,
|
path.EventsCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return aPath
|
return aPath
|
||||||
},
|
},
|
||||||
@ -643,7 +644,7 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
user,
|
user,
|
||||||
path.EventsCategory,
|
path.EventsCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return aPath
|
return aPath
|
||||||
},
|
},
|
||||||
@ -660,12 +661,12 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
folderName,
|
folderName,
|
||||||
directoryCaches,
|
directoryCaches,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
resolver := directoryCaches[test.category]
|
resolver := directoryCaches[test.category]
|
||||||
|
|
||||||
_, _, err = resolver.IDToPath(ctx, folderID, test.useIDForPath)
|
_, _, err = resolver.IDToPath(ctx, folderID, test.useIDForPath)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
parentContainer := folderName
|
parentContainer := folderName
|
||||||
if test.useIDForPath {
|
if test.useIDForPath {
|
||||||
@ -679,10 +680,10 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
parentContainer,
|
parentContainer,
|
||||||
directoryCaches,
|
directoryCaches,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
_, _, err = resolver.IDToPath(ctx, secondID, test.useIDForPath)
|
_, _, err = resolver.IDToPath(ctx, secondID, test.useIDForPath)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
p := stdpath.Join(test.folderPrefix, parentContainer)
|
p := stdpath.Join(test.folderPrefix, parentContainer)
|
||||||
_, ok := resolver.PathInCache(p)
|
_, ok := resolver.PathInCache(p)
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -50,7 +51,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
{graph.DeltaURLsFileName, "delta-link"},
|
{graph.DeltaURLsFileName, "delta-link"},
|
||||||
},
|
},
|
||||||
expect: map[string]DeltaPath{},
|
expect: map[string]DeltaPath{},
|
||||||
expectError: assert.NoError,
|
expectError: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "multiple delta urls",
|
name: "multiple delta urls",
|
||||||
@ -58,7 +59,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
{graph.DeltaURLsFileName, "delta-link"},
|
{graph.DeltaURLsFileName, "delta-link"},
|
||||||
{graph.DeltaURLsFileName, "delta-link-2"},
|
{graph.DeltaURLsFileName, "delta-link-2"},
|
||||||
},
|
},
|
||||||
expectError: assert.Error,
|
expectError: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "previous path only",
|
name: "previous path only",
|
||||||
@ -66,7 +67,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
{graph.PreviousPathFileName, "prev-path"},
|
{graph.PreviousPathFileName, "prev-path"},
|
||||||
},
|
},
|
||||||
expect: map[string]DeltaPath{},
|
expect: map[string]DeltaPath{},
|
||||||
expectError: assert.NoError,
|
expectError: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "multiple previous paths",
|
name: "multiple previous paths",
|
||||||
@ -74,7 +75,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
{graph.PreviousPathFileName, "prev-path"},
|
{graph.PreviousPathFileName, "prev-path"},
|
||||||
{graph.PreviousPathFileName, "prev-path-2"},
|
{graph.PreviousPathFileName, "prev-path-2"},
|
||||||
},
|
},
|
||||||
expectError: assert.Error,
|
expectError: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "delta urls and previous paths",
|
name: "delta urls and previous paths",
|
||||||
@ -88,7 +89,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
path: "prev-path",
|
path: "prev-path",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expectError: assert.NoError,
|
expectError: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "delta urls and empty previous paths",
|
name: "delta urls and empty previous paths",
|
||||||
@ -97,7 +98,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
{graph.PreviousPathFileName, ""},
|
{graph.PreviousPathFileName, ""},
|
||||||
},
|
},
|
||||||
expect: map[string]DeltaPath{},
|
expect: map[string]DeltaPath{},
|
||||||
expectError: assert.NoError,
|
expectError: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "empty delta urls and previous paths",
|
name: "empty delta urls and previous paths",
|
||||||
@ -106,7 +107,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
{graph.PreviousPathFileName, "prev-path"},
|
{graph.PreviousPathFileName, "prev-path"},
|
||||||
},
|
},
|
||||||
expect: map[string]DeltaPath{},
|
expect: map[string]DeltaPath{},
|
||||||
expectError: assert.NoError,
|
expectError: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "delta urls with special chars",
|
name: "delta urls with special chars",
|
||||||
@ -120,7 +121,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
path: "prev-path",
|
path: "prev-path",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expectError: assert.NoError,
|
expectError: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "delta urls with escaped chars",
|
name: "delta urls with escaped chars",
|
||||||
@ -134,7 +135,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
path: "prev-path",
|
path: "prev-path",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expectError: assert.NoError,
|
expectError: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "delta urls with newline char runes",
|
name: "delta urls with newline char runes",
|
||||||
@ -151,7 +152,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
path: "prev-path",
|
path: "prev-path",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expectError: assert.NoError,
|
expectError: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -174,7 +175,7 @@ func (suite *DataCollectionsUnitSuite) TestParseMetadataCollections() {
|
|||||||
entries,
|
entries,
|
||||||
func(cos *support.ConnectorOperationStatus) {},
|
func(cos *support.ConnectorOperationStatus) {},
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
cdps, err := parseMetadataCollections(ctx, []data.RestoreCollection{
|
cdps, err := parseMetadataCollections(ctx, []data.RestoreCollection{
|
||||||
data.NotFoundRestoreCollection{Collection: coll},
|
data.NotFoundRestoreCollection{Collection: coll},
|
||||||
@ -239,7 +240,7 @@ func (suite *DataCollectionsIntegrationSuite) TestMailFetch() {
|
|||||||
acct, err = tester.NewM365Account(suite.T()).M365Config()
|
acct, err = tester.NewM365Account(suite.T()).M365Config()
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@ -269,7 +270,7 @@ func (suite *DataCollectionsIntegrationSuite) TestMailFetch() {
|
|||||||
control.Options{},
|
control.Options{},
|
||||||
func(status *support.ConnectorOperationStatus) {},
|
func(status *support.ConnectorOperationStatus) {},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
for _, c := range collections {
|
for _, c := range collections {
|
||||||
if c.FullPath().Service() == path.ExchangeMetadataService {
|
if c.FullPath().Service() == path.ExchangeMetadataService {
|
||||||
@ -297,7 +298,7 @@ func (suite *DataCollectionsIntegrationSuite) TestDelta() {
|
|||||||
acct, err = tester.NewM365Account(suite.T()).M365Config()
|
acct, err = tester.NewM365Account(suite.T()).M365Config()
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@ -337,7 +338,7 @@ func (suite *DataCollectionsIntegrationSuite) TestDelta() {
|
|||||||
control.Options{},
|
control.Options{},
|
||||||
func(status *support.ConnectorOperationStatus) {},
|
func(status *support.ConnectorOperationStatus) {},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Less(t, 1, len(collections), "retrieved metadata and data collections")
|
assert.Less(t, 1, len(collections), "retrieved metadata and data collections")
|
||||||
|
|
||||||
var metadata data.BackupCollection
|
var metadata data.BackupCollection
|
||||||
@ -353,7 +354,7 @@ func (suite *DataCollectionsIntegrationSuite) TestDelta() {
|
|||||||
cdps, err := parseMetadataCollections(ctx, []data.RestoreCollection{
|
cdps, err := parseMetadataCollections(ctx, []data.RestoreCollection{
|
||||||
data.NotFoundRestoreCollection{Collection: metadata},
|
data.NotFoundRestoreCollection{Collection: metadata},
|
||||||
}, fault.New(true))
|
}, fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
dps := cdps[test.scope.Category().PathType()]
|
dps := cdps[test.scope.Category().PathType()]
|
||||||
|
|
||||||
@ -368,7 +369,7 @@ func (suite *DataCollectionsIntegrationSuite) TestDelta() {
|
|||||||
control.Options{},
|
control.Options{},
|
||||||
func(status *support.ConnectorOperationStatus) {},
|
func(status *support.ConnectorOperationStatus) {},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
// TODO(keepers): this isn't a very useful test at the moment. It needs to
|
// TODO(keepers): this isn't a very useful test at the moment. It needs to
|
||||||
// investigate the items in the original and delta collections to at least
|
// investigate the items in the original and delta collections to at least
|
||||||
@ -400,7 +401,7 @@ func (suite *DataCollectionsIntegrationSuite) TestMailSerializationRegression()
|
|||||||
)
|
)
|
||||||
|
|
||||||
acct, err := tester.NewM365Account(t).M365Config()
|
acct, err := tester.NewM365Account(t).M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
sel := selectors.NewExchangeBackup(users)
|
sel := selectors.NewExchangeBackup(users)
|
||||||
sel.Include(sel.MailFolders([]string{DefaultMailFolder}, selectors.PrefixMatch()))
|
sel.Include(sel.MailFolders([]string{DefaultMailFolder}, selectors.PrefixMatch()))
|
||||||
@ -414,7 +415,7 @@ func (suite *DataCollectionsIntegrationSuite) TestMailSerializationRegression()
|
|||||||
control.Options{},
|
control.Options{},
|
||||||
newStatusUpdater(t, &wg),
|
newStatusUpdater(t, &wg),
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
wg.Add(len(collections))
|
wg.Add(len(collections))
|
||||||
|
|
||||||
@ -428,7 +429,7 @@ func (suite *DataCollectionsIntegrationSuite) TestMailSerializationRegression()
|
|||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
|
|
||||||
read, err := buf.ReadFrom(stream.ToReader())
|
read, err := buf.ReadFrom(stream.ToReader())
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotZero(t, read)
|
assert.NotZero(t, read)
|
||||||
|
|
||||||
if isMetadata {
|
if isMetadata {
|
||||||
@ -437,7 +438,7 @@ func (suite *DataCollectionsIntegrationSuite) TestMailSerializationRegression()
|
|||||||
|
|
||||||
message, err := support.CreateMessageFromBytes(buf.Bytes())
|
message, err := support.CreateMessageFromBytes(buf.Bytes())
|
||||||
assert.NotNil(t, message)
|
assert.NotNil(t, message)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -453,7 +454,7 @@ func (suite *DataCollectionsIntegrationSuite) TestContactSerializationRegression
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
acct, err := tester.NewM365Account(suite.T()).M365Config()
|
acct, err := tester.NewM365Account(suite.T()).M365Config()
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
users := []string{suite.user}
|
users := []string{suite.user}
|
||||||
|
|
||||||
@ -482,7 +483,7 @@ func (suite *DataCollectionsIntegrationSuite) TestContactSerializationRegression
|
|||||||
control.Options{},
|
control.Options{},
|
||||||
newStatusUpdater(t, &wg),
|
newStatusUpdater(t, &wg),
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
wg.Add(len(edcs))
|
wg.Add(len(edcs))
|
||||||
|
|
||||||
@ -496,7 +497,7 @@ func (suite *DataCollectionsIntegrationSuite) TestContactSerializationRegression
|
|||||||
for stream := range edc.Items(ctx, fault.New(true)) {
|
for stream := range edc.Items(ctx, fault.New(true)) {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
read, err := buf.ReadFrom(stream.ToReader())
|
read, err := buf.ReadFrom(stream.ToReader())
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotZero(t, read)
|
assert.NotZero(t, read)
|
||||||
|
|
||||||
if isMetadata {
|
if isMetadata {
|
||||||
@ -505,7 +506,7 @@ func (suite *DataCollectionsIntegrationSuite) TestContactSerializationRegression
|
|||||||
|
|
||||||
contact, err := support.CreateContactFromBytes(buf.Bytes())
|
contact, err := support.CreateContactFromBytes(buf.Bytes())
|
||||||
assert.NotNil(t, contact)
|
assert.NotNil(t, contact)
|
||||||
assert.NoError(t, err, "error on converting contact bytes: "+buf.String())
|
aw.NoErr(t, err, "error on converting contact bytes: "+buf.String())
|
||||||
count++
|
count++
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,12 +530,12 @@ func (suite *DataCollectionsIntegrationSuite) TestEventsSerializationRegression(
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
acct, err := tester.NewM365Account(suite.T()).M365Config()
|
acct, err := tester.NewM365Account(suite.T()).M365Config()
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
users := []string{suite.user}
|
users := []string{suite.user}
|
||||||
|
|
||||||
ac, err := api.NewClient(acct)
|
ac, err := api.NewClient(acct)
|
||||||
require.NoError(suite.T(), err, "creating client")
|
aw.MustNoErr(suite.T(), err, "creating client")
|
||||||
|
|
||||||
var (
|
var (
|
||||||
calID string
|
calID string
|
||||||
@ -553,7 +554,7 @@ func (suite *DataCollectionsIntegrationSuite) TestEventsSerializationRegression(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(suite.T(), ac.Events().EnumerateContainers(ctx, suite.user, DefaultCalendar, fn, fault.New(true)))
|
aw.MustNoErr(suite.T(), ac.Events().EnumerateContainers(ctx, suite.user, DefaultCalendar, fn, fault.New(true)))
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name, expected string
|
name, expected string
|
||||||
@ -590,7 +591,7 @@ func (suite *DataCollectionsIntegrationSuite) TestEventsSerializationRegression(
|
|||||||
control.Options{},
|
control.Options{},
|
||||||
newStatusUpdater(t, &wg),
|
newStatusUpdater(t, &wg),
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.Len(t, collections, 2)
|
require.Len(t, collections, 2)
|
||||||
|
|
||||||
wg.Add(len(collections))
|
wg.Add(len(collections))
|
||||||
@ -609,7 +610,7 @@ func (suite *DataCollectionsIntegrationSuite) TestEventsSerializationRegression(
|
|||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
|
|
||||||
read, err := buf.ReadFrom(item.ToReader())
|
read, err := buf.ReadFrom(item.ToReader())
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotZero(t, read)
|
assert.NotZero(t, read)
|
||||||
|
|
||||||
if isMetadata {
|
if isMetadata {
|
||||||
@ -618,7 +619,7 @@ func (suite *DataCollectionsIntegrationSuite) TestEventsSerializationRegression(
|
|||||||
|
|
||||||
event, err := support.CreateEventFromBytes(buf.Bytes())
|
event, err := support.CreateEventFromBytes(buf.Bytes())
|
||||||
assert.NotNil(t, event)
|
assert.NotNil(t, event)
|
||||||
assert.NoError(t, err, "creating event from bytes: "+buf.String())
|
aw.NoErr(t, err, "creating event from bytes: "+buf.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,12 +7,12 @@ import (
|
|||||||
|
|
||||||
"github.com/microsoft/kiota-abstractions-go/serialization"
|
"github.com/microsoft/kiota-abstractions-go/serialization"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
@ -91,7 +91,7 @@ func (suite *ExchangeDataCollectionSuite) TestExchangeData_FullPath() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
edc := Collection{
|
edc := Collection{
|
||||||
user: user,
|
user: user,
|
||||||
@ -113,7 +113,7 @@ func (suite *ExchangeDataCollectionSuite) TestExchangeDataCollection_NewExchange
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
edc := Collection{
|
edc := Collection{
|
||||||
user: name,
|
user: name,
|
||||||
@ -127,15 +127,15 @@ func (suite *ExchangeDataCollectionSuite) TestNewCollection_state() {
|
|||||||
fooP, err := path.Builder{}.
|
fooP, err := path.Builder{}.
|
||||||
Append("foo").
|
Append("foo").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
barP, err := path.Builder{}.
|
barP, err := path.Builder{}.
|
||||||
Append("bar").
|
Append("bar").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
locP, err := path.Builder{}.
|
locP, err := path.Builder{}.
|
||||||
Append("human-readable").
|
Append("human-readable").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
name string
|
name string
|
||||||
@ -198,7 +198,7 @@ func (suite *ExchangeDataCollectionSuite) TestGetItemWithRetries() {
|
|||||||
name: "happy",
|
name: "happy",
|
||||||
items: &mockItemer{},
|
items: &mockItemer{},
|
||||||
expectErr: func(t *testing.T, err error) {
|
expectErr: func(t *testing.T, err error) {
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
},
|
},
|
||||||
expectGetCalls: 1,
|
expectGetCalls: 1,
|
||||||
},
|
},
|
||||||
@ -206,7 +206,7 @@ func (suite *ExchangeDataCollectionSuite) TestGetItemWithRetries() {
|
|||||||
name: "an error",
|
name: "an error",
|
||||||
items: &mockItemer{getErr: assert.AnError},
|
items: &mockItemer{getErr: assert.AnError},
|
||||||
expectErr: func(t *testing.T, err error) {
|
expectErr: func(t *testing.T, err error) {
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
},
|
},
|
||||||
expectGetCalls: 3,
|
expectGetCalls: 3,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -4,12 +4,12 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/exchange/api"
|
"github.com/alcionai/corso/src/internal/connector/exchange/api"
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
)
|
)
|
||||||
@ -36,7 +36,7 @@ func (suite *CacheResolverSuite) SetupSuite() {
|
|||||||
|
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.credentials = m365
|
suite.credentials = m365
|
||||||
}
|
}
|
||||||
@ -46,10 +46,10 @@ func (suite *CacheResolverSuite) TestPopulate() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
ac, err := api.NewClient(suite.credentials)
|
ac, err := api.NewClient(suite.credentials)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
cal, err := ac.Events().GetContainerByID(ctx, tester.M365UserID(suite.T()), DefaultCalendar)
|
cal, err := ac.Events().GetContainerByID(ctx, tester.M365UserID(suite.T()), DefaultCalendar)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
eventFunc := func(t *testing.T) graph.ContainerResolver {
|
eventFunc := func(t *testing.T) graph.ContainerResolver {
|
||||||
return &eventCalendarCache{
|
return &eventCalendarCache{
|
||||||
@ -120,7 +120,7 @@ func (suite *CacheResolverSuite) TestPopulate() {
|
|||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
resolver := test.resolverFunc(t)
|
resolver := test.resolverFunc(t)
|
||||||
require.NoError(t, resolver.Populate(ctx, fault.New(true), test.root, test.basePath))
|
aw.MustNoErr(t, resolver.Populate(ctx, fault.New(true), test.root, test.basePath))
|
||||||
|
|
||||||
_, isFound := resolver.PathInCache(test.folderInCache)
|
_, isFound := resolver.PathInCache(test.folderInCache)
|
||||||
test.canFind(t, isFound)
|
test.canFind(t, isFound)
|
||||||
|
|||||||
@ -4,13 +4,13 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ExchangeIteratorSuite struct {
|
type ExchangeIteratorSuite struct {
|
||||||
@ -31,7 +31,7 @@ func (suite *ExchangeIteratorSuite) TestDisplayable() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
bytes := mockconnector.GetMockContactBytes("Displayable")
|
bytes := mockconnector.GetMockContactBytes("Displayable")
|
||||||
contact, err := support.CreateContactFromBytes(bytes)
|
contact, err := support.CreateContactFromBytes(bytes)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
aDisplayable, ok := contact.(graph.Displayable)
|
aDisplayable, ok := contact.(graph.Displayable)
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
@ -43,7 +43,7 @@ func (suite *ExchangeIteratorSuite) TestDescendable() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
bytes := mockconnector.GetMockMessageBytes("Descendable")
|
bytes := mockconnector.GetMockMessageBytes("Descendable")
|
||||||
message, err := support.CreateMessageFromBytes(bytes)
|
message, err := support.CreateMessageFromBytes(bytes)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
aDescendable, ok := message.(graph.Descendable)
|
aDescendable, ok := message.(graph.Descendable)
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|||||||
@ -5,11 +5,11 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/exchange/api"
|
"github.com/alcionai/corso/src/internal/connector/exchange/api"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
)
|
)
|
||||||
@ -48,7 +48,7 @@ func (suite *MailFolderCacheIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.credentials = m365
|
suite.credentials = m365
|
||||||
}
|
}
|
||||||
@ -83,7 +83,7 @@ func (suite *MailFolderCacheIntegrationSuite) TestDeltaFetch() {
|
|||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
ac, err := api.NewClient(suite.credentials)
|
ac, err := api.NewClient(suite.credentials)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
acm := ac.Mail()
|
acm := ac.Mail()
|
||||||
|
|
||||||
@ -93,10 +93,10 @@ func (suite *MailFolderCacheIntegrationSuite) TestDeltaFetch() {
|
|||||||
getter: acm,
|
getter: acm,
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, mfc.Populate(ctx, fault.New(true), test.root, test.path...))
|
aw.MustNoErr(t, mfc.Populate(ctx, fault.New(true), test.root, test.path...))
|
||||||
|
|
||||||
p, l, err := mfc.IDToPath(ctx, testFolderID, true)
|
p, l, err := mfc.IDToPath(ctx, testFolderID, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
t.Logf("Path: %s\n", p.String())
|
t.Logf("Path: %s\n", p.String())
|
||||||
t.Logf("Location: %s\n", l.String())
|
t.Logf("Location: %s\n", l.String())
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
@ -14,6 +13,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
@ -42,18 +42,18 @@ func (suite *ExchangeRestoreSuite) SetupSuite() {
|
|||||||
|
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.credentials = m365
|
suite.credentials = m365
|
||||||
suite.ac, err = api.NewClient(m365)
|
suite.ac, err = api.NewClient(m365)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
adpt, err := graph.CreateAdapter(m365.AzureTenantID, m365.AzureClientID, m365.AzureClientSecret)
|
adpt, err := graph.CreateAdapter(m365.AzureTenantID, m365.AzureClientID, m365.AzureClientSecret)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.gs = graph.NewService(adpt)
|
suite.gs = graph.NewService(adpt)
|
||||||
|
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestRestoreContact ensures contact object can be created, placed into
|
// TestRestoreContact ensures contact object can be created, placed into
|
||||||
@ -70,14 +70,14 @@ func (suite *ExchangeRestoreSuite) TestRestoreContact() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
aFolder, err := suite.ac.Contacts().CreateContactFolder(ctx, userID, folderName)
|
aFolder, err := suite.ac.Contacts().CreateContactFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
folderID := *aFolder.GetId()
|
folderID := *aFolder.GetId()
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
// Remove the folder containing contact prior to exiting test
|
// Remove the folder containing contact prior to exiting test
|
||||||
err = suite.ac.Contacts().DeleteContainer(ctx, userID, folderID)
|
err = suite.ac.Contacts().DeleteContainer(ctx, userID, folderID)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
info, err := RestoreExchangeContact(
|
info, err := RestoreExchangeContact(
|
||||||
@ -87,7 +87,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreContact() {
|
|||||||
control.Copy,
|
control.Copy,
|
||||||
folderID,
|
folderID,
|
||||||
userID)
|
userID)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotNil(t, info, "contact item info")
|
assert.NotNil(t, info, "contact item info")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,14 +104,14 @@ func (suite *ExchangeRestoreSuite) TestRestoreEvent() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, name)
|
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, name)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
calendarID := *calendar.GetId()
|
calendarID := *calendar.GetId()
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
// Removes calendar containing events created during the test
|
// Removes calendar containing events created during the test
|
||||||
err = suite.ac.Events().DeleteContainer(ctx, userID, calendarID)
|
err = suite.ac.Events().DeleteContainer(ctx, userID, calendarID)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
info, err := RestoreExchangeEvent(ctx,
|
info, err := RestoreExchangeEvent(ctx,
|
||||||
@ -121,7 +121,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreEvent() {
|
|||||||
calendarID,
|
calendarID,
|
||||||
userID,
|
userID,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotNil(t, info, "event item info")
|
assert.NotNil(t, info, "event item info")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,10 +134,10 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
service, err := createService(m365)
|
service, err := createService(m365)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
deleters := map[path.CategoryType]containerDeleter{
|
deleters := map[path.CategoryType]containerDeleter{
|
||||||
path.EmailCategory: suite.ac.Mail(),
|
path.EmailCategory: suite.ac.Mail(),
|
||||||
@ -160,7 +160,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreMailObject: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreMailObject: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -172,7 +172,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreMailwithAttachment: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreMailwithAttachment: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -184,7 +184,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreEventItemAttachment: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreEventItemAttachment: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -196,7 +196,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreMailItemAttachment: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreMailItemAttachment: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -211,7 +211,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreMailBasicItemAttachment: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreMailBasicItemAttachment: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -226,7 +226,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "ItemMailAttachmentwAttachment " + common.FormatSimpleDateTime(now)
|
folderName := "ItemMailAttachmentwAttachment " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -241,7 +241,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "ItemMailAttachment_Contact " + common.FormatSimpleDateTime(now)
|
folderName := "ItemMailAttachment_Contact " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -253,7 +253,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreNestedEventItemAttachment: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreNestedEventItemAttachment: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -265,7 +265,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreMailwithLargeAttachment: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreMailwithLargeAttachment: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -277,7 +277,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreMailwithAttachments: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreMailwithAttachments: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -289,7 +289,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreMailwithReferenceAttachment: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreMailwithReferenceAttachment: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -302,7 +302,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
folderName := "TestRestoreContactObject: " + common.FormatSimpleDateTime(now)
|
folderName := "TestRestoreContactObject: " + common.FormatSimpleDateTime(now)
|
||||||
folder, err := suite.ac.Contacts().CreateContactFolder(ctx, userID, folderName)
|
folder, err := suite.ac.Contacts().CreateContactFolder(ctx, userID, folderName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *folder.GetId()
|
return *folder.GetId()
|
||||||
},
|
},
|
||||||
@ -314,7 +314,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
calendarName := "TestRestoreEventObject: " + common.FormatSimpleDateTime(now)
|
calendarName := "TestRestoreEventObject: " + common.FormatSimpleDateTime(now)
|
||||||
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, calendarName)
|
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, calendarName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *calendar.GetId()
|
return *calendar.GetId()
|
||||||
},
|
},
|
||||||
@ -326,7 +326,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination: func(t *testing.T, ctx context.Context) string {
|
destination: func(t *testing.T, ctx context.Context) string {
|
||||||
calendarName := "TestRestoreEventObject_" + common.FormatSimpleDateTime(now)
|
calendarName := "TestRestoreEventObject_" + common.FormatSimpleDateTime(now)
|
||||||
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, calendarName)
|
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, calendarName)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return *calendar.GetId()
|
return *calendar.GetId()
|
||||||
},
|
},
|
||||||
@ -348,10 +348,10 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
|
|||||||
destination,
|
destination,
|
||||||
userID,
|
userID,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotNil(t, info, "item info was not populated")
|
assert.NotNil(t, info, "item info was not populated")
|
||||||
assert.NotNil(t, deleters)
|
assert.NotNil(t, deleters)
|
||||||
assert.NoError(t, deleters[test.category].DeleteContainer(ctx, userID, destination))
|
aw.NoErr(t, deleters[test.category].DeleteContainer(ctx, userID, destination))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
@ -109,7 +110,7 @@ func TestServiceIteratorsSuite(t *testing.T) {
|
|||||||
func (suite *ServiceIteratorsSuite) SetupSuite() {
|
func (suite *ServiceIteratorsSuite) SetupSuite() {
|
||||||
a := tester.NewMockM365Account(suite.T())
|
a := tester.NewMockM365Account(suite.T())
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
suite.creds = m365
|
suite.creds = m365
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,7 +172,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
},
|
},
|
||||||
resolver: newMockResolver(container1),
|
resolver: newMockResolver(container1),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 1,
|
expectNewColls: 1,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
},
|
},
|
||||||
@ -183,7 +184,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
},
|
},
|
||||||
resolver: newMockResolver(container1, container2),
|
resolver: newMockResolver(container1, container2),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 2,
|
expectNewColls: 2,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
},
|
},
|
||||||
@ -195,7 +196,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
},
|
},
|
||||||
resolver: newMockResolver(container1, container2),
|
resolver: newMockResolver(container1, container2),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 2,
|
expectNewColls: 2,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
},
|
},
|
||||||
@ -207,7 +208,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
},
|
},
|
||||||
resolver: newMockResolver(container1, container2),
|
resolver: newMockResolver(container1, container2),
|
||||||
scope: selectors.NewExchangeBackup(nil).MailFolders(selectors.None())[0],
|
scope: selectors.NewExchangeBackup(nil).MailFolders(selectors.None())[0],
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 0,
|
expectNewColls: 0,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
},
|
},
|
||||||
@ -218,7 +219,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
},
|
},
|
||||||
resolver: newMockResolver(container1),
|
resolver: newMockResolver(container1),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 1,
|
expectNewColls: 1,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
expectDoNotMergeColls: 1,
|
expectDoNotMergeColls: 1,
|
||||||
@ -230,7 +231,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
},
|
},
|
||||||
resolver: newMockResolver(container1),
|
resolver: newMockResolver(container1),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 0,
|
expectNewColls: 0,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
},
|
},
|
||||||
@ -242,7 +243,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
},
|
},
|
||||||
resolver: newMockResolver(container1, container2),
|
resolver: newMockResolver(container1, container2),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 2,
|
expectNewColls: 2,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
expectDoNotMergeColls: 1,
|
expectDoNotMergeColls: 1,
|
||||||
@ -255,7 +256,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
},
|
},
|
||||||
resolver: newMockResolver(container1, container2),
|
resolver: newMockResolver(container1, container2),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 1,
|
expectNewColls: 1,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
},
|
},
|
||||||
@ -268,7 +269,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
resolver: newMockResolver(container1, container2),
|
resolver: newMockResolver(container1, container2),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
failFast: true,
|
failFast: true,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
expectNewColls: 2,
|
expectNewColls: 2,
|
||||||
expectMetadataColls: 1,
|
expectMetadataColls: 1,
|
||||||
expectDoNotMergeColls: 1,
|
expectDoNotMergeColls: 1,
|
||||||
@ -282,7 +283,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections() {
|
|||||||
resolver: newMockResolver(container1, container2),
|
resolver: newMockResolver(container1, container2),
|
||||||
scope: allScope,
|
scope: allScope,
|
||||||
failFast: true,
|
failFast: true,
|
||||||
expectErr: assert.Error,
|
expectErr: aw.Err,
|
||||||
expectNewColls: 0,
|
expectNewColls: 0,
|
||||||
expectMetadataColls: 0,
|
expectMetadataColls: 0,
|
||||||
},
|
},
|
||||||
@ -458,7 +459,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections_repea
|
|||||||
dps,
|
dps,
|
||||||
control.Options{FailFast: true},
|
control.Options{FailFast: true},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
// collection assertions
|
// collection assertions
|
||||||
|
|
||||||
@ -533,7 +534,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections_incre
|
|||||||
p, err := path.Builder{}.
|
p, err := path.Builder{}.
|
||||||
Append(at...).
|
Append(at...).
|
||||||
ToDataLayerExchangePathForCategory(tenantID, userID, cat, false)
|
ToDataLayerExchangePathForCategory(tenantID, userID, cat, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
@ -810,7 +811,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections_incre
|
|||||||
test.dps,
|
test.dps,
|
||||||
control.Options{},
|
control.Options{},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
metadatas := 0
|
metadatas := 0
|
||||||
for _, c := range collections {
|
for _, c := range collections {
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ func (suite *BetaClientSuite) SetupSuite() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.credentials = m365
|
suite.credentials = m365
|
||||||
}
|
}
|
||||||
@ -44,7 +45,7 @@ func (suite *BetaClientSuite) TestCreateBetaClient() {
|
|||||||
suite.credentials.AzureClientSecret,
|
suite.credentials.AzureClientSecret,
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
client := NewBetaClient(adpt)
|
client := NewBetaClient(adpt)
|
||||||
assert.NotNil(t, client)
|
assert.NotNil(t, client)
|
||||||
@ -64,7 +65,7 @@ func (suite *BetaClientSuite) TestBasicClientGetFunctionality() {
|
|||||||
suite.credentials.AzureClientSecret,
|
suite.credentials.AzureClientSecret,
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
client := NewBetaClient(adpt)
|
client := NewBetaClient(adpt)
|
||||||
require.NotNil(t, client)
|
require.NotNil(t, client)
|
||||||
|
|
||||||
@ -73,7 +74,7 @@ func (suite *BetaClientSuite) TestBasicClientGetFunctionality() {
|
|||||||
collection, err := client.SitesById(siteID).Pages().Get(ctx, nil)
|
collection, err := client.SitesById(siteID).Pages().Get(ctx, nil)
|
||||||
// Ensures that the client is able to receive data from beta
|
// Ensures that the client is able to receive data from beta
|
||||||
// Not Registered Error: content type application/json does not have a factory registered to be parsed
|
// Not Registered Error: content type application/json does not have a factory registered to be parsed
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
for _, page := range collection.GetValue() {
|
for _, page := range collection.GetValue() {
|
||||||
assert.NotNil(t, page, "betasdk call for page does not return value.")
|
assert.NotNil(t, page, "betasdk call for page does not return value.")
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
@ -35,7 +36,7 @@ func (suite *MetadataCollectionUnitSuite) TestFullPath() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
c := NewMetadataCollection(p, nil, nil)
|
c := NewMetadataCollection(p, nil, nil)
|
||||||
|
|
||||||
@ -78,7 +79,7 @@ func (suite *MetadataCollectionUnitSuite) TestItems() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
c := NewMetadataCollection(
|
c := NewMetadataCollection(
|
||||||
p,
|
p,
|
||||||
@ -96,7 +97,7 @@ func (suite *MetadataCollectionUnitSuite) TestItems() {
|
|||||||
gotNames = append(gotNames, s.UUID())
|
gotNames = append(gotNames, s.UUID())
|
||||||
|
|
||||||
buf, err := io.ReadAll(s.ToReader())
|
buf, err := io.ReadAll(s.ToReader())
|
||||||
if !assert.NoError(t, err) {
|
if !aw.NoErr(t, err) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +126,7 @@ func (suite *MetadataCollectionUnitSuite) TestMakeMetadataCollection() {
|
|||||||
cat: path.EmailCategory,
|
cat: path.EmailCategory,
|
||||||
metadata: NewMetadataEntry("", nil),
|
metadata: NewMetadataEntry("", nil),
|
||||||
collectionCheck: assert.Nil,
|
collectionCheck: assert.Nil,
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Tokens",
|
name: "Tokens",
|
||||||
@ -138,7 +139,7 @@ func (suite *MetadataCollectionUnitSuite) TestMakeMetadataCollection() {
|
|||||||
"hola": "mundo",
|
"hola": "mundo",
|
||||||
}),
|
}),
|
||||||
collectionCheck: assert.NotNil,
|
collectionCheck: assert.NotNil,
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "BadCategory",
|
name: "BadCategory",
|
||||||
@ -151,7 +152,7 @@ func (suite *MetadataCollectionUnitSuite) TestMakeMetadataCollection() {
|
|||||||
"hola": "mundo",
|
"hola": "mundo",
|
||||||
}),
|
}),
|
||||||
collectionCheck: assert.Nil,
|
collectionCheck: assert.Nil,
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,7 +188,7 @@ func (suite *MetadataCollectionUnitSuite) TestMakeMetadataCollection() {
|
|||||||
itemCount++
|
itemCount++
|
||||||
|
|
||||||
err := decoder.Decode(&gotMap)
|
err := decoder.Decode(&gotMap)
|
||||||
if !assert.NoError(t, err) {
|
if !aw.NoErr(t, err) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,10 +7,10 @@ import (
|
|||||||
|
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ func (suite *GraphUnitSuite) SetupSuite() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
a := tester.NewMockM365Account(t)
|
a := tester.NewMockM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.credentials = m365
|
suite.credentials = m365
|
||||||
}
|
}
|
||||||
@ -39,7 +39,7 @@ func (suite *GraphUnitSuite) TestCreateAdapter() {
|
|||||||
suite.credentials.AzureClientID,
|
suite.credentials.AzureClientID,
|
||||||
suite.credentials.AzureClientSecret)
|
suite.credentials.AzureClientSecret)
|
||||||
|
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotNil(t, adpt)
|
assert.NotNil(t, adpt)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ func (suite *GraphUnitSuite) TestSerializationEndPoint() {
|
|||||||
suite.credentials.AzureTenantID,
|
suite.credentials.AzureTenantID,
|
||||||
suite.credentials.AzureClientID,
|
suite.credentials.AzureClientID,
|
||||||
suite.credentials.AzureClientSecret)
|
suite.credentials.AzureClientSecret)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
serv := NewService(adpt)
|
serv := NewService(adpt)
|
||||||
email := models.NewMessage()
|
email := models.NewMessage()
|
||||||
@ -87,7 +87,7 @@ func (suite *GraphUnitSuite) TestSerializationEndPoint() {
|
|||||||
email.SetSubject(&subject)
|
email.SetSubject(&subject)
|
||||||
|
|
||||||
byteArray, err := serv.Serialize(email)
|
byteArray, err := serv.Serialize(email)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotNil(t, byteArray)
|
assert.NotNil(t, byteArray)
|
||||||
t.Log(string(byteArray))
|
t.Log(string(byteArray))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,12 +5,12 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/credentials"
|
"github.com/alcionai/corso/src/pkg/credentials"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
@ -53,7 +53,7 @@ func (suite *DisconnectedGraphConnectorSuite) TestBadConnection() {
|
|||||||
AzureTenantID: "data",
|
AzureTenantID: "data",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
return a
|
return a
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -139,14 +139,14 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "No scopes",
|
name: "No scopes",
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
getSelector: func(t *testing.T) selectors.Selector {
|
getSelector: func(t *testing.T) selectors.Selector {
|
||||||
return selectors.NewExchangeBackup(nil).Selector
|
return selectors.NewExchangeBackup(nil).Selector
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Valid Single User",
|
name: "Valid Single User",
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) selectors.Selector {
|
getSelector: func(t *testing.T) selectors.Selector {
|
||||||
sel := selectors.NewExchangeBackup([]string{"bobKelso@someHospital.org"})
|
sel := selectors.NewExchangeBackup([]string{"bobKelso@someHospital.org"})
|
||||||
sel.Include(sel.MailFolders(selectors.Any()))
|
sel.Include(sel.MailFolders(selectors.Any()))
|
||||||
@ -155,7 +155,7 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Partial invalid user",
|
name: "Partial invalid user",
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
getSelector: func(t *testing.T) selectors.Selector {
|
getSelector: func(t *testing.T) selectors.Selector {
|
||||||
sel := selectors.NewExchangeBackup([]string{"bobkelso@someHospital.org", "janitor@someHospital.org"})
|
sel := selectors.NewExchangeBackup([]string{"bobkelso@someHospital.org", "janitor@someHospital.org"})
|
||||||
sel.Include(sel.MailFolders(selectors.Any()))
|
sel.Include(sel.MailFolders(selectors.Any()))
|
||||||
@ -165,7 +165,7 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Invalid discrete owner",
|
name: "Invalid discrete owner",
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
getSelector: func(t *testing.T) selectors.Selector {
|
getSelector: func(t *testing.T) selectors.Selector {
|
||||||
sel := selectors.NewOneDriveBackup([]string{"janitor@someHospital.org"})
|
sel := selectors.NewOneDriveBackup([]string{"janitor@someHospital.org"})
|
||||||
sel.Include(sel.AllData())
|
sel.Include(sel.AllData())
|
||||||
@ -195,7 +195,7 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs_allServices
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "Valid User",
|
name: "Valid User",
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
excludes: func(t *testing.T) selectors.Selector {
|
excludes: func(t *testing.T) selectors.Selector {
|
||||||
sel := selectors.NewOneDriveBackup([]string{"elliotReid@someHospital.org", "foo@SomeCompany.org"})
|
sel := selectors.NewOneDriveBackup([]string{"elliotReid@someHospital.org", "foo@SomeCompany.org"})
|
||||||
sel.Exclude(sel.Folders(selectors.Any()))
|
sel.Exclude(sel.Folders(selectors.Any()))
|
||||||
@ -217,7 +217,7 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs_allServices
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Invalid User",
|
name: "Invalid User",
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
excludes: func(t *testing.T) selectors.Selector {
|
excludes: func(t *testing.T) selectors.Selector {
|
||||||
sel := selectors.NewOneDriveBackup([]string{"foo@SomeCompany.org"})
|
sel := selectors.NewOneDriveBackup([]string{"foo@SomeCompany.org"})
|
||||||
sel.Exclude(sel.Folders(selectors.Any()))
|
sel.Exclude(sel.Folders(selectors.Any()))
|
||||||
@ -236,7 +236,7 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs_allServices
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "valid sites",
|
name: "valid sites",
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
excludes: func(t *testing.T) selectors.Selector {
|
excludes: func(t *testing.T) selectors.Selector {
|
||||||
sel := selectors.NewSharePointBackup([]string{"abc.site.foo", "bar.site.baz"})
|
sel := selectors.NewSharePointBackup([]string{"abc.site.foo", "bar.site.baz"})
|
||||||
sel.DiscreteOwner = "abc.site.foo"
|
sel.DiscreteOwner = "abc.site.foo"
|
||||||
@ -258,7 +258,7 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs_allServices
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "invalid sites",
|
name: "invalid sites",
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
excludes: func(t *testing.T) selectors.Selector {
|
excludes: func(t *testing.T) selectors.Selector {
|
||||||
sel := selectors.NewSharePointBackup([]string{"fnords.smarfs.brawnhilda"})
|
sel := selectors.NewSharePointBackup([]string{"fnords.smarfs.brawnhilda"})
|
||||||
sel.Exclude(sel.AllData())
|
sel.Exclude(sel.AllData())
|
||||||
|
|||||||
@ -22,6 +22,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
@ -58,7 +59,7 @@ func mustToDataLayerPath(
|
|||||||
err = errors.Errorf("bad service type %s", service.String())
|
err = errors.Errorf("bad service type %s", service.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
@ -600,12 +601,12 @@ func compareExchangeEmail(
|
|||||||
item data.Stream,
|
item data.Stream,
|
||||||
) {
|
) {
|
||||||
itemData, err := io.ReadAll(item.ToReader())
|
itemData, err := io.ReadAll(item.ToReader())
|
||||||
if !assert.NoError(t, err, "reading collection item: %s", item.UUID()) {
|
if !aw.NoErr(t, err, "reading collection item: %s", item.UUID()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
itemMessage, err := support.CreateMessageFromBytes(itemData)
|
itemMessage, err := support.CreateMessageFromBytes(itemData)
|
||||||
if !assert.NoError(t, err, "deserializing backed up message") {
|
if !aw.NoErr(t, err, "deserializing backed up message") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -615,7 +616,7 @@ func compareExchangeEmail(
|
|||||||
}
|
}
|
||||||
|
|
||||||
expectedMessage, err := support.CreateMessageFromBytes(expectedBytes)
|
expectedMessage, err := support.CreateMessageFromBytes(expectedBytes)
|
||||||
assert.NoError(t, err, "deserializing source message")
|
aw.NoErr(t, err, "deserializing source message")
|
||||||
|
|
||||||
checkMessage(t, expectedMessage, itemMessage)
|
checkMessage(t, expectedMessage, itemMessage)
|
||||||
}
|
}
|
||||||
@ -626,12 +627,12 @@ func compareExchangeContact(
|
|||||||
item data.Stream,
|
item data.Stream,
|
||||||
) {
|
) {
|
||||||
itemData, err := io.ReadAll(item.ToReader())
|
itemData, err := io.ReadAll(item.ToReader())
|
||||||
if !assert.NoError(t, err, "reading collection item: %s", item.UUID()) {
|
if !aw.NoErr(t, err, "reading collection item: %s", item.UUID()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
itemContact, err := support.CreateContactFromBytes(itemData)
|
itemContact, err := support.CreateContactFromBytes(itemData)
|
||||||
if !assert.NoError(t, err, "deserializing backed up contact") {
|
if !aw.NoErr(t, err, "deserializing backed up contact") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -641,7 +642,7 @@ func compareExchangeContact(
|
|||||||
}
|
}
|
||||||
|
|
||||||
expectedContact, err := support.CreateContactFromBytes(expectedBytes)
|
expectedContact, err := support.CreateContactFromBytes(expectedBytes)
|
||||||
assert.NoError(t, err, "deserializing source contact")
|
aw.NoErr(t, err, "deserializing source contact")
|
||||||
|
|
||||||
checkContact(t, expectedContact, itemContact)
|
checkContact(t, expectedContact, itemContact)
|
||||||
}
|
}
|
||||||
@ -652,12 +653,12 @@ func compareExchangeEvent(
|
|||||||
item data.Stream,
|
item data.Stream,
|
||||||
) {
|
) {
|
||||||
itemData, err := io.ReadAll(item.ToReader())
|
itemData, err := io.ReadAll(item.ToReader())
|
||||||
if !assert.NoError(t, err, "reading collection item: %s", item.UUID()) {
|
if !aw.NoErr(t, err, "reading collection item: %s", item.UUID()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
itemEvent, err := support.CreateEventFromBytes(itemData)
|
itemEvent, err := support.CreateEventFromBytes(itemData)
|
||||||
if !assert.NoError(t, err, "deserializing backed up contact") {
|
if !aw.NoErr(t, err, "deserializing backed up contact") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -667,7 +668,7 @@ func compareExchangeEvent(
|
|||||||
}
|
}
|
||||||
|
|
||||||
expectedEvent, err := support.CreateEventFromBytes(expectedBytes)
|
expectedEvent, err := support.CreateEventFromBytes(expectedBytes)
|
||||||
assert.NoError(t, err, "deserializing source contact")
|
aw.NoErr(t, err, "deserializing source contact")
|
||||||
|
|
||||||
checkEvent(t, expectedEvent, itemEvent)
|
checkEvent(t, expectedEvent, itemEvent)
|
||||||
}
|
}
|
||||||
@ -715,7 +716,7 @@ func compareOneDriveItem(
|
|||||||
}
|
}
|
||||||
|
|
||||||
buf, err := io.ReadAll(item.ToReader())
|
buf, err := io.ReadAll(item.ToReader())
|
||||||
if !assert.NoError(t, err) {
|
if !aw.NoErr(t, err) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1108,7 +1109,7 @@ func loadConnector(ctx context.Context, t *testing.T, itemClient *http.Client, r
|
|||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
|
|
||||||
connector, err := NewGraphConnector(ctx, itemClient, a, r, fault.New(true))
|
connector, err := NewGraphConnector(ctx, itemClient, a, r, fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return connector
|
return connector
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/backup"
|
"github.com/alcionai/corso/src/pkg/backup"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
@ -125,7 +126,7 @@ func (suite *GraphConnectorUnitSuite) TestUnionSiteIDsAndWebURLs() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
result, err := gc.UnionSiteIDsAndWebURLs(ctx, test.ids, test.urls, fault.New(true))
|
result, err := gc.UnionSiteIDsAndWebURLs(ctx, test.ids, test.urls, fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.ElementsMatch(t, test.expect, result)
|
assert.ElementsMatch(t, test.expect, result)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -180,7 +181,7 @@ func (suite *GraphConnectorIntegrationSuite) TestSetTenantUsers() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
owners, err := api.NewClient(suite.connector.credentials)
|
owners, err := api.NewClient(suite.connector.credentials)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
newConnector.Owners = owners
|
newConnector.Owners = owners
|
||||||
suite.Empty(len(newConnector.Users))
|
suite.Empty(len(newConnector.Users))
|
||||||
@ -207,13 +208,13 @@ func (suite *GraphConnectorIntegrationSuite) TestSetTenantSites() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
service, err := newConnector.createService()
|
service, err := newConnector.createService()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
newConnector.Service = service
|
newConnector.Service = service
|
||||||
assert.Equal(t, 0, len(newConnector.Sites))
|
assert.Equal(t, 0, len(newConnector.Sites))
|
||||||
|
|
||||||
err = newConnector.setTenantSites(ctx, fault.New(true))
|
err = newConnector.setTenantSites(ctx, fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.Less(t, 0, len(newConnector.Sites))
|
assert.Less(t, 0, len(newConnector.Sites))
|
||||||
|
|
||||||
for _, site := range newConnector.Sites {
|
for _, site := range newConnector.Sites {
|
||||||
@ -246,7 +247,7 @@ func (suite *GraphConnectorIntegrationSuite) TestRestoreFailsBadService() {
|
|||||||
},
|
},
|
||||||
nil,
|
nil,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
assert.NotNil(t, deets)
|
assert.NotNil(t, deets)
|
||||||
|
|
||||||
status := suite.connector.AwaitStatus()
|
status := suite.connector.AwaitStatus()
|
||||||
@ -323,7 +324,7 @@ func (suite *GraphConnectorIntegrationSuite) TestEmptyCollections() {
|
|||||||
},
|
},
|
||||||
test.col,
|
test.col,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.NotNil(t, deets)
|
assert.NotNil(t, deets)
|
||||||
|
|
||||||
stats := suite.connector.AwaitStatus()
|
stats := suite.connector.AwaitStatus()
|
||||||
@ -351,7 +352,7 @@ func mustGetDefaultDriveID(
|
|||||||
err = graph.Wrap(ctx, err, "retrieving drive")
|
err = graph.Wrap(ctx, err, "retrieving drive")
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
id := ptr.Val(d.GetId())
|
id := ptr.Val(d.GetId())
|
||||||
require.NotEmpty(t, id)
|
require.NotEmpty(t, id)
|
||||||
@ -421,7 +422,7 @@ func runRestore(
|
|||||||
config.opts,
|
config.opts,
|
||||||
collections,
|
collections,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.NotNil(t, deets)
|
assert.NotNil(t, deets)
|
||||||
|
|
||||||
status := restoreGC.AwaitStatus()
|
status := restoreGC.AwaitStatus()
|
||||||
@ -478,7 +479,7 @@ func runBackupAndCompare(
|
|||||||
ToggleFeatures: control.Toggles{EnablePermissionsBackup: true},
|
ToggleFeatures: control.Toggles{EnablePermissionsBackup: true},
|
||||||
},
|
},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
// No excludes yet because this isn't an incremental backup.
|
// No excludes yet because this isn't an incremental backup.
|
||||||
assert.Empty(t, excludes)
|
assert.Empty(t, excludes)
|
||||||
|
|
||||||
@ -952,7 +953,7 @@ func (suite *GraphConnectorIntegrationSuite) TestMultiFolderBackupDifferentNames
|
|||||||
},
|
},
|
||||||
collections,
|
collections,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotNil(t, deets)
|
require.NotNil(t, deets)
|
||||||
|
|
||||||
status := restoreGC.AwaitStatus()
|
status := restoreGC.AwaitStatus()
|
||||||
@ -981,7 +982,7 @@ func (suite *GraphConnectorIntegrationSuite) TestMultiFolderBackupDifferentNames
|
|||||||
ToggleFeatures: control.Toggles{EnablePermissionsBackup: true},
|
ToggleFeatures: control.Toggles{EnablePermissionsBackup: true},
|
||||||
},
|
},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
// No excludes yet because this isn't an incremental backup.
|
// No excludes yet because this isn't an incremental backup.
|
||||||
assert.Empty(t, excludes)
|
assert.Empty(t, excludes)
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -35,7 +36,7 @@ func (suite *MockExchangeCollectionSuite) TestMockExchangeCollection() {
|
|||||||
|
|
||||||
for item := range mdc.Items(ctx, fault.New(true)) {
|
for item := range mdc.Items(ctx, fault.New(true)) {
|
||||||
_, err := io.ReadAll(item.ToReader())
|
_, err := io.ReadAll(item.ToReader())
|
||||||
assert.NoError(suite.T(), err)
|
aw.NoErr(suite.T(), err)
|
||||||
messagesRead++
|
messagesRead++
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +53,7 @@ func (suite *MockExchangeCollectionSuite) TestMockExchangeCollectionItemSize() {
|
|||||||
|
|
||||||
for item := range mdc.Items(ctx, fault.New(true)) {
|
for item := range mdc.Items(ctx, fault.New(true)) {
|
||||||
buf, err := io.ReadAll(item.ToReader())
|
buf, err := io.ReadAll(item.ToReader())
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
assert.Implements(t, (*data.StreamSize)(nil), item)
|
assert.Implements(t, (*data.StreamSize)(nil), item)
|
||||||
s := item.(data.StreamSize)
|
s := item.(data.StreamSize)
|
||||||
@ -72,11 +73,11 @@ func (suite *MockExchangeCollectionSuite) TestMockExchangeCollection_NewExchange
|
|||||||
|
|
||||||
for stream := range mdc.Items(ctx, fault.New(true)) {
|
for stream := range mdc.Items(ctx, fault.New(true)) {
|
||||||
_, err := buf.ReadFrom(stream.ToReader())
|
_, err := buf.ReadFrom(stream.ToReader())
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
byteArray := buf.Bytes()
|
byteArray := buf.Bytes()
|
||||||
something, err := support.CreateFromBytes(byteArray, models.CreateMessageFromDiscriminatorValue)
|
something, err := support.CreateFromBytes(byteArray, models.CreateMessageFromDiscriminatorValue)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotNil(t, something)
|
assert.NotNil(t, something)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,7 +105,7 @@ func (suite *MockExchangeDataSuite) TestMockExchangeData() {
|
|||||||
ID: id,
|
ID: id,
|
||||||
Reader: io.NopCloser(bytes.NewReader(itemData)),
|
Reader: io.NopCloser(bytes.NewReader(itemData)),
|
||||||
},
|
},
|
||||||
check: require.NoError,
|
check: aw.MustNoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Error",
|
name: "Error",
|
||||||
@ -112,7 +113,7 @@ func (suite *MockExchangeDataSuite) TestMockExchangeData() {
|
|||||||
ID: id,
|
ID: id,
|
||||||
ReadErr: assert.AnError,
|
ReadErr: assert.AnError,
|
||||||
},
|
},
|
||||||
check: require.Error,
|
check: aw.MustErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,10 +193,10 @@ func (suite *MockExchangeDataSuite) TestMockByteHydration() {
|
|||||||
temp := mockconnector.GetMockList(subject, "Artist", emptyMap)
|
temp := mockconnector.GetMockList(subject, "Artist", emptyMap)
|
||||||
writer := kioser.NewJsonSerializationWriter()
|
writer := kioser.NewJsonSerializationWriter()
|
||||||
err := writer.WriteObjectValue("", temp)
|
err := writer.WriteObjectValue("", temp)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
bytes, err := writer.GetSerializedContent()
|
bytes, err := writer.GetSerializedContent()
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
_, err = support.CreateListFromBytes(bytes)
|
_, err = support.CreateListFromBytes(bytes)
|
||||||
|
|
||||||
@ -206,7 +207,7 @@ func (suite *MockExchangeDataSuite) TestMockByteHydration() {
|
|||||||
name: "SharePoint: List 6 Items",
|
name: "SharePoint: List 6 Items",
|
||||||
transformation: func(t *testing.T) error {
|
transformation: func(t *testing.T) error {
|
||||||
bytes, err := mockconnector.GetMockListBytes(subject)
|
bytes, err := mockconnector.GetMockListBytes(subject)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
_, err = support.CreateListFromBytes(bytes)
|
_, err = support.CreateListFromBytes(bytes)
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
@ -225,7 +226,7 @@ func (suite *MockExchangeDataSuite) TestMockByteHydration() {
|
|||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
err := test.transformation(t)
|
err := test.transformation(t)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
kw "github.com/microsoft/kiota-serialization-json-go"
|
kw "github.com/microsoft/kiota-serialization-json-go"
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
@ -159,7 +159,7 @@ func GetMockListBytes(title string) ([]byte, error) {
|
|||||||
// of the Mocked SharePoint List
|
// of the Mocked SharePoint List
|
||||||
func GetMockListStream(t *testing.T, title string, numOfItems int) *MockListData {
|
func GetMockListStream(t *testing.T, title string, numOfItems int) *MockListData {
|
||||||
byteArray, err := GetMockListBytes(title)
|
byteArray, err := GetMockListBytes(title)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
listData := &MockListData{
|
listData := &MockListData{
|
||||||
ID: title,
|
ID: title,
|
||||||
|
|||||||
@ -9,9 +9,9 @@ import (
|
|||||||
js "github.com/microsoft/kiota-serialization-json-go"
|
js "github.com/microsoft/kiota-serialization-json-go"
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
//nolint:lll
|
//nolint:lll
|
||||||
@ -693,10 +693,10 @@ func GetMockMessageWithNestedItemAttachmentEvent(subject string) []byte {
|
|||||||
func GetMockMessageWithNestedItemAttachmentMail(t *testing.T, nested []byte, subject string) []byte {
|
func GetMockMessageWithNestedItemAttachmentMail(t *testing.T, nested []byte, subject string) []byte {
|
||||||
base := GetMockMessageBytes(subject)
|
base := GetMockMessageBytes(subject)
|
||||||
message, err := hydrateMessage(base)
|
message, err := hydrateMessage(base)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
nestedMessage, err := hydrateMessage(nested)
|
nestedMessage, err := hydrateMessage(nested)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
iaNode := models.NewItemAttachment()
|
iaNode := models.NewItemAttachment()
|
||||||
attachmentSize := int32(len(nested))
|
attachmentSize := int32(len(nested))
|
||||||
@ -713,13 +713,13 @@ func GetMockMessageWithNestedItemAttachmentMail(t *testing.T, nested []byte, sub
|
|||||||
func GetMockMessageWithNestedItemAttachmentContact(t *testing.T, nested []byte, subject string) []byte {
|
func GetMockMessageWithNestedItemAttachmentContact(t *testing.T, nested []byte, subject string) []byte {
|
||||||
base := GetMockMessageBytes(subject)
|
base := GetMockMessageBytes(subject)
|
||||||
message, err := hydrateMessage(base)
|
message, err := hydrateMessage(base)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
parseNode, err := js.NewJsonParseNodeFactory().GetRootParseNode("application/json", nested)
|
parseNode, err := js.NewJsonParseNodeFactory().GetRootParseNode("application/json", nested)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
anObject, err := parseNode.GetObjectValue(models.CreateContactFromDiscriminatorValue)
|
anObject, err := parseNode.GetObjectValue(models.CreateContactFromDiscriminatorValue)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
contact := anObject.(models.Contactable)
|
contact := anObject.(models.Contactable)
|
||||||
internalName := "Nested Contact"
|
internalName := "Nested Contact"
|
||||||
@ -736,10 +736,10 @@ func GetMockMessageWithNestedItemAttachmentContact(t *testing.T, nested []byte,
|
|||||||
func serialize(t *testing.T, item absser.Parsable) []byte {
|
func serialize(t *testing.T, item absser.Parsable) []byte {
|
||||||
wtr := js.NewJsonSerializationWriter()
|
wtr := js.NewJsonSerializationWriter()
|
||||||
err := wtr.WriteObjectValue("", item)
|
err := wtr.WriteObjectValue("", item)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
byteArray, err := wtr.GetSerializedContent()
|
byteArray, err := wtr.GetSerializedContent()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return byteArray
|
return byteArray
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
@ -162,9 +163,9 @@ func (suite *CollectionUnitTestSuite) TestCollection() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
folderPath, err := GetCanonicalPath("drive/driveID1/root:/dir1/dir2/dir3", "tenant", "owner", test.source)
|
folderPath, err := GetCanonicalPath("drive/driveID1/root:/dir1/dir2/dir3", "tenant", "owner", test.source)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
driveFolderPath, err := path.GetDriveFolderPath(folderPath)
|
driveFolderPath, err := path.GetDriveFolderPath(folderPath)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
coll := NewCollection(
|
coll := NewCollection(
|
||||||
graph.HTTPClient(graph.NoTimeout()),
|
graph.HTTPClient(graph.NoTimeout()),
|
||||||
@ -240,7 +241,7 @@ func (suite *CollectionUnitTestSuite) TestCollection() {
|
|||||||
assert.Equal(t, now, mt.ModTime())
|
assert.Equal(t, now, mt.ModTime())
|
||||||
|
|
||||||
readData, err := io.ReadAll(readItem.ToReader())
|
readData, err := io.ReadAll(readItem.ToReader())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
name, parentPath := test.infoFrom(t, readItemInfo.Info())
|
name, parentPath := test.infoFrom(t, readItemInfo.Info())
|
||||||
|
|
||||||
@ -254,7 +255,7 @@ func (suite *CollectionUnitTestSuite) TestCollection() {
|
|||||||
assert.Equal(t, testItemName+MetaFileSuffix, readItemMeta.UUID())
|
assert.Equal(t, testItemName+MetaFileSuffix, readItemMeta.UUID())
|
||||||
|
|
||||||
readMetaData, err := io.ReadAll(readItemMeta.ToReader())
|
readMetaData, err := io.ReadAll(readItemMeta.ToReader())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
tm, err := json.Marshal(testItemMeta)
|
tm, err := json.Marshal(testItemMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -301,7 +302,7 @@ func (suite *CollectionUnitTestSuite) TestCollectionReadError() {
|
|||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
|
|
||||||
folderPath, err := GetCanonicalPath("drive/driveID1/root:/folderPath", "a-tenant", "a-user", test.source)
|
folderPath, err := GetCanonicalPath("drive/driveID1/root:/folderPath", "a-tenant", "a-user", test.source)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
coll := NewCollection(
|
coll := NewCollection(
|
||||||
graph.HTTPClient(graph.NoTimeout()),
|
graph.HTTPClient(graph.NoTimeout()),
|
||||||
@ -343,7 +344,7 @@ func (suite *CollectionUnitTestSuite) TestCollectionReadError() {
|
|||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
|
|
||||||
_, err = io.ReadAll(collItem.ToReader())
|
_, err = io.ReadAll(collItem.ToReader())
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
@ -380,7 +381,7 @@ func (suite *CollectionUnitTestSuite) TestCollectionDisablePermissionsBackup() {
|
|||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
|
|
||||||
folderPath, err := GetCanonicalPath("drive/driveID1/root:/folderPath", "a-tenant", "a-user", test.source)
|
folderPath, err := GetCanonicalPath("drive/driveID1/root:/folderPath", "a-tenant", "a-user", test.source)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
coll := NewCollection(
|
coll := NewCollection(
|
||||||
graph.HTTPClient(graph.NoTimeout()),
|
graph.HTTPClient(graph.NoTimeout()),
|
||||||
@ -435,7 +436,7 @@ func (suite *CollectionUnitTestSuite) TestCollectionDisablePermissionsBackup() {
|
|||||||
for _, i := range readItems {
|
for _, i := range readItems {
|
||||||
if strings.HasSuffix(i.UUID(), MetaFileSuffix) {
|
if strings.HasSuffix(i.UUID(), MetaFileSuffix) {
|
||||||
content, err := io.ReadAll(i.ToReader())
|
content, err := io.ReadAll(i.ToReader())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.Equal(t, content, []byte("{}"))
|
require.Equal(t, content, []byte("{}"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -471,7 +472,7 @@ func (suite *CollectionUnitTestSuite) TestCollectionPermissionBackupLatestModTim
|
|||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
|
|
||||||
folderPath, err := GetCanonicalPath("drive/driveID1/root:/folderPath", "a-tenant", "a-user", test.source)
|
folderPath, err := GetCanonicalPath("drive/driveID1/root:/folderPath", "a-tenant", "a-user", test.source)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
coll := NewCollection(
|
coll := NewCollection(
|
||||||
graph.HTTPClient(graph.NoTimeout()),
|
graph.HTTPClient(graph.NoTimeout()),
|
||||||
@ -526,7 +527,7 @@ func (suite *CollectionUnitTestSuite) TestCollectionPermissionBackupLatestModTim
|
|||||||
for _, i := range readItems {
|
for _, i := range readItems {
|
||||||
if strings.HasSuffix(i.UUID(), MetaFileSuffix) {
|
if strings.HasSuffix(i.UUID(), MetaFileSuffix) {
|
||||||
content, err := io.ReadAll(i.ToReader())
|
content, err := io.ReadAll(i.ToReader())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.Equal(t, content, []byte("{}"))
|
require.Equal(t, content, []byte("{}"))
|
||||||
im, ok := i.(data.StreamModTime)
|
im, ok := i.(data.StreamModTime)
|
||||||
require.Equal(t, ok, true, "modtime interface")
|
require.Equal(t, ok, true, "modtime interface")
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -49,11 +50,11 @@ func getExpectedStatePathGenerator(
|
|||||||
} else {
|
} else {
|
||||||
require.Len(t, pths, 2, "invalid number of paths to getExpectedStatePathGenerator")
|
require.Len(t, pths, 2, "invalid number of paths to getExpectedStatePathGenerator")
|
||||||
p2, err = GetCanonicalPath(base+pths[1], tenant, user, OneDriveSource)
|
p2, err = GetCanonicalPath(base+pths[1], tenant, user, OneDriveSource)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
p1, err = GetCanonicalPath(base+pths[0], tenant, user, OneDriveSource)
|
p1, err = GetCanonicalPath(base+pths[0], tenant, user, OneDriveSource)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
switch state {
|
switch state {
|
||||||
case data.NewState:
|
case data.NewState:
|
||||||
@ -81,7 +82,7 @@ func getExpectedPathGenerator(t *testing.T,
|
|||||||
) func(string) string {
|
) func(string) string {
|
||||||
return func(path string) string {
|
return func(path string) string {
|
||||||
p, err := GetCanonicalPath(base+path, tenant, user, OneDriveSource)
|
p, err := GetCanonicalPath(base+path, tenant, user, OneDriveSource)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p.String()
|
return p.String()
|
||||||
}
|
}
|
||||||
@ -110,20 +111,20 @@ func (suite *OneDriveCollectionsSuite) TestGetCanonicalPath() {
|
|||||||
source: OneDriveSource,
|
source: OneDriveSource,
|
||||||
dir: []string{"onedrive"},
|
dir: []string{"onedrive"},
|
||||||
expect: "tenant/onedrive/resourceOwner/files/onedrive",
|
expect: "tenant/onedrive/resourceOwner/files/onedrive",
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "sharepoint",
|
name: "sharepoint",
|
||||||
source: SharePointSource,
|
source: SharePointSource,
|
||||||
dir: []string{"sharepoint"},
|
dir: []string{"sharepoint"},
|
||||||
expect: "tenant/sharepoint/resourceOwner/libraries/sharepoint",
|
expect: "tenant/sharepoint/resourceOwner/libraries/sharepoint",
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "unknown",
|
name: "unknown",
|
||||||
source: unknownDriveSource,
|
source: unknownDriveSource,
|
||||||
dir: []string{"unknown"},
|
dir: []string{"unknown"},
|
||||||
expectErr: assert.Error,
|
expectErr: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -174,7 +175,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
expectedMetadataPaths: map[string]string{
|
expectedMetadataPaths: map[string]string{
|
||||||
"root": expectedPath(""),
|
"root": expectedPath(""),
|
||||||
},
|
},
|
||||||
@ -188,7 +189,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
},
|
},
|
||||||
@ -209,7 +210,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
},
|
},
|
||||||
@ -229,7 +230,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
},
|
},
|
||||||
@ -253,7 +254,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.NewState, folder),
|
"folder": expectedStatePath(data.NewState, folder),
|
||||||
@ -284,7 +285,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: (&selectors.OneDriveBackup{}).Folders([]string{"folder"})[0],
|
scope: (&selectors.OneDriveBackup{}).Folders([]string{"folder"})[0],
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"folder": expectedStatePath(data.NewState, folder),
|
"folder": expectedStatePath(data.NewState, folder),
|
||||||
"subfolder": expectedStatePath(data.NewState, folderSub),
|
"subfolder": expectedStatePath(data.NewState, folderSub),
|
||||||
@ -318,7 +319,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: (&selectors.OneDriveBackup{}).
|
scope: (&selectors.OneDriveBackup{}).
|
||||||
Folders([]string{"/folder/subfolder"}, selectors.PrefixMatch())[0],
|
Folders([]string{"/folder/subfolder"}, selectors.PrefixMatch())[0],
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"subfolder": expectedStatePath(data.NewState, folderSub),
|
"subfolder": expectedStatePath(data.NewState, folderSub),
|
||||||
"folder2": expectedStatePath(data.NewState, folderSub+folder),
|
"folder2": expectedStatePath(data.NewState, folderSub+folder),
|
||||||
@ -346,7 +347,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: (&selectors.OneDriveBackup{}).Folders([]string{"folder/subfolder"})[0],
|
scope: (&selectors.OneDriveBackup{}).Folders([]string{"folder/subfolder"})[0],
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"subfolder": expectedStatePath(data.NewState, folderSub),
|
"subfolder": expectedStatePath(data.NewState, folderSub),
|
||||||
},
|
},
|
||||||
@ -370,7 +371,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"subfolder": expectedPath("/folder/subfolder"),
|
"subfolder": expectedPath("/folder/subfolder"),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.NotMovedState, "/folder"),
|
"folder": expectedStatePath(data.NotMovedState, "/folder"),
|
||||||
@ -396,7 +397,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"subfolder": expectedPath("/a-folder/subfolder"),
|
"subfolder": expectedPath("/a-folder/subfolder"),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.MovedState, "/folder", "/a-folder"),
|
"folder": expectedStatePath(data.MovedState, "/folder", "/a-folder"),
|
||||||
@ -422,7 +423,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"folder": expectedPath("/folder"),
|
"folder": expectedPath("/folder"),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.NotMovedState, "/folder"),
|
"folder": expectedStatePath(data.NotMovedState, "/folder"),
|
||||||
@ -446,7 +447,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.NewState, "/folder2"),
|
"folder": expectedStatePath(data.NewState, "/folder2"),
|
||||||
@ -469,7 +470,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
},
|
},
|
||||||
inputFolderMap: map[string]string{},
|
inputFolderMap: map[string]string{},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.NewState, "/folder"),
|
"folder": expectedStatePath(data.NewState, "/folder"),
|
||||||
@ -495,7 +496,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"subfolder": expectedPath("/a-folder/subfolder"),
|
"subfolder": expectedPath("/a-folder/subfolder"),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.MovedState, "/folder", "/a-folder"),
|
"folder": expectedStatePath(data.MovedState, "/folder", "/a-folder"),
|
||||||
@ -523,7 +524,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"subfolder": expectedPath("/a-folder/subfolder"),
|
"subfolder": expectedPath("/a-folder/subfolder"),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.MovedState, "/folder", "/a-folder"),
|
"folder": expectedStatePath(data.MovedState, "/folder", "/a-folder"),
|
||||||
@ -562,7 +563,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"subfolder": expectedPath("/a-folder/subfolder"),
|
"subfolder": expectedPath("/a-folder/subfolder"),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.MovedState, "/folder", "/a-folder"),
|
"folder": expectedStatePath(data.MovedState, "/folder", "/a-folder"),
|
||||||
@ -593,7 +594,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"package": expectedPath("/package"),
|
"package": expectedPath("/package"),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"folder": expectedStatePath(data.DeletedState, folder),
|
"folder": expectedStatePath(data.DeletedState, folder),
|
||||||
"package": expectedStatePath(data.DeletedState, pkg),
|
"package": expectedStatePath(data.DeletedState, pkg),
|
||||||
@ -616,7 +617,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"root": expectedPath(""),
|
"root": expectedPath(""),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{},
|
expectedCollectionIDs: map[string]statePath{},
|
||||||
expectedItemCount: 0,
|
expectedItemCount: 0,
|
||||||
expectedFileCount: 0,
|
expectedFileCount: 0,
|
||||||
@ -639,7 +640,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"subfolder": expectedPath("/folder/subfolder"),
|
"subfolder": expectedPath("/folder/subfolder"),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: map[string]statePath{
|
expectedCollectionIDs: map[string]statePath{
|
||||||
"root": expectedStatePath(data.NotMovedState, ""),
|
"root": expectedStatePath(data.NotMovedState, ""),
|
||||||
"folder": expectedStatePath(data.DeletedState, folder),
|
"folder": expectedStatePath(data.DeletedState, folder),
|
||||||
@ -663,7 +664,7 @@ func (suite *OneDriveCollectionsSuite) TestUpdateCollections() {
|
|||||||
"root": expectedPath(""),
|
"root": expectedPath(""),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedItemCount: 1,
|
expectedItemCount: 1,
|
||||||
expectedFileCount: 1,
|
expectedFileCount: 1,
|
||||||
expectedContainerCount: 0,
|
expectedContainerCount: 0,
|
||||||
@ -772,7 +773,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
folderID1: path1,
|
folderID1: path1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "MissingPaths",
|
name: "MissingPaths",
|
||||||
@ -788,7 +789,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
},
|
},
|
||||||
expectedDeltas: map[string]string{},
|
expectedDeltas: map[string]string{},
|
||||||
expectedPaths: map[string]map[string]string{},
|
expectedPaths: map[string]map[string]string{},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "MissingDeltas",
|
name: "MissingDeltas",
|
||||||
@ -808,7 +809,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
},
|
},
|
||||||
expectedDeltas: map[string]string{},
|
expectedDeltas: map[string]string{},
|
||||||
expectedPaths: map[string]map[string]string{},
|
expectedPaths: map[string]map[string]string{},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// An empty path map but valid delta results in metadata being returned
|
// An empty path map but valid delta results in metadata being returned
|
||||||
@ -833,7 +834,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
},
|
},
|
||||||
expectedDeltas: map[string]string{driveID1: deltaURL1},
|
expectedDeltas: map[string]string{driveID1: deltaURL1},
|
||||||
expectedPaths: map[string]map[string]string{driveID1: {}},
|
expectedPaths: map[string]map[string]string{driveID1: {}},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// An empty delta map but valid path results in no metadata for that drive
|
// An empty delta map but valid path results in no metadata for that drive
|
||||||
@ -862,7 +863,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
},
|
},
|
||||||
expectedDeltas: map[string]string{},
|
expectedDeltas: map[string]string{},
|
||||||
expectedPaths: map[string]map[string]string{},
|
expectedPaths: map[string]map[string]string{},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "SuccessTwoDrivesTwoCollections",
|
name: "SuccessTwoDrivesTwoCollections",
|
||||||
@ -912,7 +913,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
folderID2: path2,
|
folderID2: path2,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Bad formats are logged but skip adding entries to the maps and don't
|
// Bad formats are logged but skip adding entries to the maps and don't
|
||||||
@ -930,7 +931,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
},
|
},
|
||||||
expectedDeltas: map[string]string{},
|
expectedDeltas: map[string]string{},
|
||||||
expectedPaths: map[string]map[string]string{},
|
expectedPaths: map[string]map[string]string{},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Unexpected files are logged and skipped. They don't cause an error to
|
// Unexpected files are logged and skipped. They don't cause an error to
|
||||||
@ -966,7 +967,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
folderID1: path1,
|
folderID1: path1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "DriveAlreadyFound_Paths",
|
name: "DriveAlreadyFound_Paths",
|
||||||
@ -1002,7 +1003,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
},
|
},
|
||||||
expectedDeltas: nil,
|
expectedDeltas: nil,
|
||||||
expectedPaths: nil,
|
expectedPaths: nil,
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "DriveAlreadyFound_Deltas",
|
name: "DriveAlreadyFound_Deltas",
|
||||||
@ -1034,7 +1035,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
},
|
},
|
||||||
expectedDeltas: nil,
|
expectedDeltas: nil,
|
||||||
expectedPaths: nil,
|
expectedPaths: nil,
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1054,7 +1055,7 @@ func (suite *OneDriveCollectionsSuite) TestDeserializeMetadata() {
|
|||||||
c(),
|
c(),
|
||||||
func(*support.ConnectorOperationStatus) {},
|
func(*support.ConnectorOperationStatus) {},
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
cols = append(cols, data.NotFoundRestoreCollection{Collection: mc})
|
cols = append(cols, data.NotFoundRestoreCollection{Collection: mc})
|
||||||
}
|
}
|
||||||
@ -1138,7 +1139,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
path.FilesCategory,
|
path.FilesCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err, "making metadata path")
|
aw.MustNoErr(suite.T(), err, "making metadata path")
|
||||||
|
|
||||||
empty := ""
|
empty := ""
|
||||||
next := "next"
|
next := "next"
|
||||||
@ -1195,7 +1196,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
prevFolderPaths: map[string]map[string]string{
|
prevFolderPaths: map[string]map[string]string{
|
||||||
driveID1: {"root": rootFolderPath1},
|
driveID1: {"root": rootFolderPath1},
|
||||||
},
|
},
|
||||||
@ -1224,7 +1225,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
prevFolderPaths: map[string]map[string]string{
|
prevFolderPaths: map[string]map[string]string{
|
||||||
driveID1: {"root": expectedPath1("")},
|
driveID1: {"root": expectedPath1("")},
|
||||||
},
|
},
|
||||||
@ -1254,7 +1255,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
prevFolderPaths: map[string]map[string]string{
|
prevFolderPaths: map[string]map[string]string{
|
||||||
driveID1: {},
|
driveID1: {},
|
||||||
},
|
},
|
||||||
@ -1288,7 +1289,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
prevFolderPaths: map[string]map[string]string{
|
prevFolderPaths: map[string]map[string]string{
|
||||||
driveID1: {},
|
driveID1: {},
|
||||||
},
|
},
|
||||||
@ -1323,7 +1324,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
prevFolderPaths: map[string]map[string]string{
|
prevFolderPaths: map[string]map[string]string{
|
||||||
driveID1: {},
|
driveID1: {},
|
||||||
},
|
},
|
||||||
@ -1370,7 +1371,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
prevFolderPaths: map[string]map[string]string{
|
prevFolderPaths: map[string]map[string]string{
|
||||||
driveID1: {},
|
driveID1: {},
|
||||||
driveID2: {},
|
driveID2: {},
|
||||||
@ -1407,7 +1408,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
prevFolderPaths: map[string]map[string]string{
|
prevFolderPaths: map[string]map[string]string{
|
||||||
driveID1: {},
|
driveID1: {},
|
||||||
},
|
},
|
||||||
@ -1433,7 +1434,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedCollections: map[string]map[data.CollectionState][]string{
|
expectedCollections: map[string]map[data.CollectionState][]string{
|
||||||
expectedPath1(""): {data.NotMovedState: {"file"}},
|
expectedPath1(""): {data.NotMovedState: {"file"}},
|
||||||
},
|
},
|
||||||
@ -1473,7 +1474,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedCollections: map[string]map[data.CollectionState][]string{
|
expectedCollections: map[string]map[data.CollectionState][]string{
|
||||||
expectedPath1(""): {data.NotMovedState: {"file", "folder"}},
|
expectedPath1(""): {data.NotMovedState: {"file", "folder"}},
|
||||||
expectedPath1("/folder"): {data.NewState: {"file"}},
|
expectedPath1("/folder"): {data.NewState: {"file"}},
|
||||||
@ -1512,7 +1513,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
prevFolderPaths: map[string]map[string]string{
|
prevFolderPaths: map[string]map[string]string{
|
||||||
driveID1: {},
|
driveID1: {},
|
||||||
},
|
},
|
||||||
@ -1595,7 +1596,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
},
|
},
|
||||||
func(*support.ConnectorOperationStatus) {},
|
func(*support.ConnectorOperationStatus) {},
|
||||||
)
|
)
|
||||||
assert.NoError(t, err, "creating metadata collection")
|
aw.NoErr(t, err, "creating metadata collection")
|
||||||
|
|
||||||
prevMetadata := []data.RestoreCollection{data.NotFoundRestoreCollection{Collection: mc}}
|
prevMetadata := []data.RestoreCollection{data.NotFoundRestoreCollection{Collection: mc}}
|
||||||
cols, delList, err := c.Get(ctx, prevMetadata, fault.New(true))
|
cols, delList, err := c.Get(ctx, prevMetadata, fault.New(true))
|
||||||
@ -1614,7 +1615,7 @@ func (suite *OneDriveCollectionsSuite) TestGet() {
|
|||||||
data.NotFoundRestoreCollection{Collection: baseCol},
|
data.NotFoundRestoreCollection{Collection: baseCol},
|
||||||
},
|
},
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
if !assert.NoError(t, err, "deserializing metadata") {
|
if !aw.NoErr(t, err, "deserializing metadata") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1823,7 +1824,7 @@ func (suite *OneDriveCollectionsSuite) TestCollectItems() {
|
|||||||
test.prevDelta,
|
test.prevDelta,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
|
|
||||||
require.ErrorIs(suite.T(), err, test.err, "delta fetch err")
|
aw.MustErrIs(suite.T(), err, test.err, "delta fetch err")
|
||||||
require.Equal(suite.T(), test.deltaURL, delta.URL, "delta url")
|
require.Equal(suite.T(), test.deltaURL, delta.URL, "delta url")
|
||||||
require.Equal(suite.T(), !test.prevDeltaSuccess, delta.Reset, "delta reset")
|
require.Equal(suite.T(), !test.prevDeltaSuccess, delta.Reset, "delta reset")
|
||||||
})
|
})
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph/api"
|
"github.com/alcionai/corso/src/internal/connector/graph/api"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/logger"
|
"github.com/alcionai/corso/src/pkg/logger"
|
||||||
@ -133,7 +134,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: false,
|
retry: false,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
expectedResults: resultDrives,
|
expectedResults: resultDrives,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -146,7 +147,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: false,
|
retry: false,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
expectedResults: resultDrives,
|
expectedResults: resultDrives,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -164,7 +165,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: false,
|
retry: false,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
expectedResults: resultDrives,
|
expectedResults: resultDrives,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -182,7 +183,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: false,
|
retry: false,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
expectedResults: resultDrives,
|
expectedResults: resultDrives,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -200,7 +201,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: true,
|
retry: true,
|
||||||
expectedErr: assert.Error,
|
expectedErr: aw.Err,
|
||||||
expectedResults: nil,
|
expectedResults: nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -213,7 +214,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: true,
|
retry: true,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
expectedResults: nil,
|
expectedResults: nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -226,7 +227,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: true,
|
retry: true,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
expectedResults: nil,
|
expectedResults: nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -249,7 +250,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: true,
|
retry: true,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
expectedResults: resultDrives,
|
expectedResults: resultDrives,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -272,7 +273,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
retry: false,
|
retry: false,
|
||||||
expectedErr: assert.Error,
|
expectedErr: aw.Err,
|
||||||
expectedResults: nil,
|
expectedResults: nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -288,7 +289,7 @@ func (suite *OneDriveUnitSuite) TestDrives() {
|
|||||||
tooManyRetries...,
|
tooManyRetries...,
|
||||||
),
|
),
|
||||||
retry: true,
|
retry: true,
|
||||||
expectedErr: assert.Error,
|
expectedErr: aw.Err,
|
||||||
expectedResults: nil,
|
expectedResults: nil,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -340,10 +341,10 @@ func (suite *OneDriveSuite) TestCreateGetDeleteFolder() {
|
|||||||
gs := loadTestService(t)
|
gs := loadTestService(t)
|
||||||
|
|
||||||
pager, err := PagerForSource(OneDriveSource, gs, suite.userID, nil)
|
pager, err := PagerForSource(OneDriveSource, gs, suite.userID, nil)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
drives, err := drives(ctx, pager, true)
|
drives, err := drives(ctx, pager, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotEmpty(t, drives)
|
require.NotEmpty(t, drives)
|
||||||
|
|
||||||
// TODO: Verify the intended drive
|
// TODO: Verify the intended drive
|
||||||
@ -359,7 +360,7 @@ func (suite *OneDriveSuite) TestCreateGetDeleteFolder() {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
folderID, err := CreateRestoreFolders(ctx, gs, driveID, folderElements)
|
folderID, err := CreateRestoreFolders(ctx, gs, driveID, folderElements)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
folderIDs = append(folderIDs, folderID)
|
folderIDs = append(folderIDs, folderID)
|
||||||
|
|
||||||
@ -367,7 +368,7 @@ func (suite *OneDriveSuite) TestCreateGetDeleteFolder() {
|
|||||||
folderElements = append(folderElements, folderName2)
|
folderElements = append(folderElements, folderName2)
|
||||||
|
|
||||||
folderID, err = CreateRestoreFolders(ctx, gs, driveID, folderElements)
|
folderID, err = CreateRestoreFolders(ctx, gs, driveID, folderElements)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
folderIDs = append(folderIDs, folderID)
|
folderIDs = append(folderIDs, folderID)
|
||||||
|
|
||||||
@ -388,10 +389,10 @@ func (suite *OneDriveSuite) TestCreateGetDeleteFolder() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
pager, err := PagerForSource(OneDriveSource, gs, suite.userID, nil)
|
pager, err := PagerForSource(OneDriveSource, gs, suite.userID, nil)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
allFolders, err := GetAllFolders(ctx, gs, pager, test.prefix, fault.New(true))
|
allFolders, err := GetAllFolders(ctx, gs, pager, test.prefix, fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
foundFolderIDs := []string{}
|
foundFolderIDs := []string{}
|
||||||
|
|
||||||
@ -426,7 +427,7 @@ func (suite *OneDriveSuite) TestOneDriveNewCollections() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
creds, err := tester.NewM365Account(suite.T()).M365Config()
|
creds, err := tester.NewM365Account(suite.T()).M365Config()
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name, user string
|
name, user string
|
||||||
@ -457,7 +458,7 @@ func (suite *OneDriveSuite) TestOneDriveNewCollections() {
|
|||||||
service.updateStatus,
|
service.updateStatus,
|
||||||
control.Options{ToggleFeatures: control.Toggles{EnablePermissionsBackup: true}},
|
control.Options{ToggleFeatures: control.Toggles{EnablePermissionsBackup: true}},
|
||||||
).Get(ctx, nil, fault.New(true))
|
).Get(ctx, nil, fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
// Don't expect excludes as this isn't an incremental backup.
|
// Don't expect excludes as this isn't an incremental backup.
|
||||||
assert.Empty(t, excludes)
|
assert.Empty(t, excludes)
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -56,10 +57,10 @@ func (suite *ItemIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
adapter, err := graph.CreateAdapter(m365.AzureTenantID, m365.AzureClientID, m365.AzureClientSecret)
|
adapter, err := graph.CreateAdapter(m365.AzureTenantID, m365.AzureClientID, m365.AzureClientSecret)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.client = msgraphsdk.NewGraphServiceClient(adapter)
|
suite.client = msgraphsdk.NewGraphServiceClient(adapter)
|
||||||
suite.adapter = adapter
|
suite.adapter = adapter
|
||||||
@ -68,7 +69,7 @@ func (suite *ItemIntegrationSuite) SetupSuite() {
|
|||||||
// and guarateed drive read-write access)
|
// and guarateed drive read-write access)
|
||||||
// suite.site = tester.M365SiteID(t)
|
// suite.site = tester.M365SiteID(t)
|
||||||
// spDrives, err := drives(ctx, suite, suite.site, SharePointSource)
|
// spDrives, err := drives(ctx, suite, suite.site, SharePointSource)
|
||||||
// require.NoError(t, err)
|
// aw.MustNoErr(t, err)
|
||||||
// // Test Requirement 1: Need a drive
|
// // Test Requirement 1: Need a drive
|
||||||
// require.Greaterf(t, len(spDrives), 0, "site %s does not have a drive", suite.site)
|
// require.Greaterf(t, len(spDrives), 0, "site %s does not have a drive", suite.site)
|
||||||
|
|
||||||
@ -78,10 +79,10 @@ func (suite *ItemIntegrationSuite) SetupSuite() {
|
|||||||
suite.user = tester.SecondaryM365UserID(t)
|
suite.user = tester.SecondaryM365UserID(t)
|
||||||
|
|
||||||
pager, err := PagerForSource(OneDriveSource, suite, suite.user, nil)
|
pager, err := PagerForSource(OneDriveSource, suite, suite.user, nil)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
odDrives, err := drives(ctx, pager, true)
|
odDrives, err := drives(ctx, pager, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
// Test Requirement 1: Need a drive
|
// Test Requirement 1: Need a drive
|
||||||
require.Greaterf(t, len(odDrives), 0, "user %s does not have a drive", suite.user)
|
require.Greaterf(t, len(odDrives), 0, "user %s does not have a drive", suite.user)
|
||||||
|
|
||||||
@ -132,7 +133,7 @@ func (suite *ItemIntegrationSuite) TestItemReader_oneDrive() {
|
|||||||
map[string]string{},
|
map[string]string{},
|
||||||
"",
|
"",
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
// Test Requirement 2: Need a file
|
// Test Requirement 2: Need a file
|
||||||
require.NotEmpty(
|
require.NotEmpty(
|
||||||
@ -146,12 +147,12 @@ func (suite *ItemIntegrationSuite) TestItemReader_oneDrive() {
|
|||||||
// Read data for the file
|
// Read data for the file
|
||||||
itemInfo, itemData, err := oneDriveItemReader(ctx, graph.HTTPClient(graph.NoTimeout()), driveItem)
|
itemInfo, itemData, err := oneDriveItemReader(ctx, graph.HTTPClient(graph.NoTimeout()), driveItem)
|
||||||
|
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
require.NotNil(suite.T(), itemInfo.OneDrive)
|
require.NotNil(suite.T(), itemInfo.OneDrive)
|
||||||
require.NotEmpty(suite.T(), itemInfo.OneDrive.ItemName)
|
require.NotEmpty(suite.T(), itemInfo.OneDrive.ItemName)
|
||||||
|
|
||||||
size, err := io.Copy(io.Discard, itemData)
|
size, err := io.Copy(io.Discard, itemData)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
require.NotZero(suite.T(), size)
|
require.NotZero(suite.T(), size)
|
||||||
require.Equal(suite.T(), size, itemInfo.OneDrive.Size)
|
require.Equal(suite.T(), size, itemInfo.OneDrive.Size)
|
||||||
suite.T().Logf("Read %d bytes from file %s.", size, itemInfo.OneDrive.ItemName)
|
suite.T().Logf("Read %d bytes from file %s.", size, itemInfo.OneDrive.ItemName)
|
||||||
@ -180,17 +181,17 @@ func (suite *ItemIntegrationSuite) TestItemWriter() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
root, err := suite.Client().DrivesById(test.driveID).Root().Get(ctx, nil)
|
root, err := suite.Client().DrivesById(test.driveID).Root().Get(ctx, nil)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
// Test Requirement 2: "Test Folder" should exist
|
// Test Requirement 2: "Test Folder" should exist
|
||||||
folder, err := getFolder(ctx, suite, test.driveID, *root.GetId(), "Test Folder")
|
folder, err := getFolder(ctx, suite, test.driveID, *root.GetId(), "Test Folder")
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
newFolderName := "testfolder_" + common.FormatNow(common.SimpleTimeTesting)
|
newFolderName := "testfolder_" + common.FormatNow(common.SimpleTimeTesting)
|
||||||
suite.T().Logf("Test will create folder %s", newFolderName)
|
suite.T().Logf("Test will create folder %s", newFolderName)
|
||||||
|
|
||||||
newFolder, err := createItem(ctx, suite, test.driveID, *folder.GetId(), newItem(newFolderName, true))
|
newFolder, err := createItem(ctx, suite, test.driveID, *folder.GetId(), newItem(newFolderName, true))
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
require.NotNil(suite.T(), newFolder.GetId())
|
require.NotNil(suite.T(), newFolder.GetId())
|
||||||
|
|
||||||
@ -198,20 +199,20 @@ func (suite *ItemIntegrationSuite) TestItemWriter() {
|
|||||||
suite.T().Logf("Test will create item %s", newItemName)
|
suite.T().Logf("Test will create item %s", newItemName)
|
||||||
|
|
||||||
newItem, err := createItem(ctx, suite, test.driveID, *newFolder.GetId(), newItem(newItemName, false))
|
newItem, err := createItem(ctx, suite, test.driveID, *newFolder.GetId(), newItem(newItemName, false))
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
require.NotNil(suite.T(), newItem.GetId())
|
require.NotNil(suite.T(), newItem.GetId())
|
||||||
|
|
||||||
// HACK: Leveraging this to test getFolder behavior for a file. `getFolder()` on the
|
// HACK: Leveraging this to test getFolder behavior for a file. `getFolder()` on the
|
||||||
// newly created item should fail because it's a file not a folder
|
// newly created item should fail because it's a file not a folder
|
||||||
_, err = getFolder(ctx, suite, test.driveID, *newFolder.GetId(), newItemName)
|
_, err = getFolder(ctx, suite, test.driveID, *newFolder.GetId(), newItemName)
|
||||||
require.ErrorIs(suite.T(), err, errFolderNotFound)
|
aw.MustErrIs(suite.T(), err, errFolderNotFound)
|
||||||
|
|
||||||
// Initialize a 100KB mockDataProvider
|
// Initialize a 100KB mockDataProvider
|
||||||
td, writeSize := mockDataReader(int64(100 * 1024))
|
td, writeSize := mockDataReader(int64(100 * 1024))
|
||||||
|
|
||||||
w, err := driveItemWriter(ctx, suite, test.driveID, *newItem.GetId(), writeSize)
|
w, err := driveItemWriter(ctx, suite, test.driveID, *newItem.GetId(), writeSize)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
// Using a 32 KB buffer for the copy allows us to validate the
|
// Using a 32 KB buffer for the copy allows us to validate the
|
||||||
// multi-part upload. `io.CopyBuffer` will only write 32 KB at
|
// multi-part upload. `io.CopyBuffer` will only write 32 KB at
|
||||||
@ -219,7 +220,7 @@ func (suite *ItemIntegrationSuite) TestItemWriter() {
|
|||||||
copyBuffer := make([]byte, 32*1024)
|
copyBuffer := make([]byte, 32*1024)
|
||||||
|
|
||||||
size, err := io.CopyBuffer(w, td, copyBuffer)
|
size, err := io.CopyBuffer(w, td, copyBuffer)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
require.Equal(suite.T(), writeSize, size)
|
require.Equal(suite.T(), writeSize, size)
|
||||||
})
|
})
|
||||||
@ -251,15 +252,15 @@ func (suite *ItemIntegrationSuite) TestDriveGetFolder() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
root, err := suite.Client().DrivesById(test.driveID).Root().Get(ctx, nil)
|
root, err := suite.Client().DrivesById(test.driveID).Root().Get(ctx, nil)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
// Lookup a folder that doesn't exist
|
// Lookup a folder that doesn't exist
|
||||||
_, err = getFolder(ctx, suite, test.driveID, *root.GetId(), "FolderDoesNotExist")
|
_, err = getFolder(ctx, suite, test.driveID, *root.GetId(), "FolderDoesNotExist")
|
||||||
require.ErrorIs(suite.T(), err, errFolderNotFound)
|
aw.MustErrIs(suite.T(), err, errFolderNotFound)
|
||||||
|
|
||||||
// Lookup a folder that does exist
|
// Lookup a folder that does exist
|
||||||
_, err = getFolder(ctx, suite, test.driveID, *root.GetId(), "")
|
_, err = getFolder(ctx, suite, test.driveID, *root.GetId(), "")
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,11 +4,11 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
|
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -68,10 +68,10 @@ func (ods *oneDriveService) updateStatus(status *support.ConnectorOperationStatu
|
|||||||
func loadTestService(t *testing.T) *oneDriveService {
|
func loadTestService(t *testing.T) *oneDriveService {
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
service, err := NewOneDriveService(m365)
|
service, err := NewOneDriveService(m365)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return service
|
return service
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,10 +3,9 @@ package api_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
|
|
||||||
discover "github.com/alcionai/corso/src/internal/connector/discovery/api"
|
discover "github.com/alcionai/corso/src/internal/connector/discovery/api"
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -16,7 +15,7 @@ func createTestBetaService(t *testing.T, credentials account.M365Config) *discov
|
|||||||
credentials.AzureClientID,
|
credentials.AzureClientID,
|
||||||
credentials.AzureClientSecret,
|
credentials.AzureClientSecret,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return discover.NewBetaService(adapter)
|
return discover.NewBetaService(adapter)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/sharepoint"
|
"github.com/alcionai/corso/src/internal/connector/sharepoint"
|
||||||
"github.com/alcionai/corso/src/internal/connector/sharepoint/api"
|
"github.com/alcionai/corso/src/internal/connector/sharepoint/api"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
)
|
)
|
||||||
@ -33,7 +34,7 @@ func (suite *SharePointPageSuite) SetupSuite() {
|
|||||||
suite.siteID = tester.M365SiteID(t)
|
suite.siteID = tester.M365SiteID(t)
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.creds = m365
|
suite.creds = m365
|
||||||
suite.service = createTestBetaService(t, suite.creds)
|
suite.service = createTestBetaService(t, suite.creds)
|
||||||
@ -53,7 +54,7 @@ func (suite *SharePointPageSuite) TestFetchPages() {
|
|||||||
|
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
pgs, err := api.FetchPages(ctx, suite.service, suite.siteID)
|
pgs, err := api.FetchPages(ctx, suite.service, suite.siteID)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
require.NotNil(t, pgs)
|
require.NotNil(t, pgs)
|
||||||
assert.NotZero(t, len(pgs))
|
assert.NotZero(t, len(pgs))
|
||||||
|
|
||||||
@ -68,12 +69,12 @@ func (suite *SharePointPageSuite) TestGetSitePages() {
|
|||||||
|
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
tuples, err := api.FetchPages(ctx, suite.service, suite.siteID)
|
tuples, err := api.FetchPages(ctx, suite.service, suite.siteID)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotNil(t, tuples)
|
require.NotNil(t, tuples)
|
||||||
|
|
||||||
jobs := []string{tuples[0].ID}
|
jobs := []string{tuples[0].ID}
|
||||||
pages, err := api.GetSitePages(ctx, suite.service, suite.siteID, jobs, fault.New(true))
|
pages, err := api.GetSitePages(ctx, suite.service, suite.siteID, jobs, fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotEmpty(t, pages)
|
assert.NotEmpty(t, pages)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,11 +104,11 @@ func (suite *SharePointPageSuite) TestRestoreSinglePage() {
|
|||||||
destName,
|
destName,
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotNil(t, info)
|
require.NotNil(t, info)
|
||||||
|
|
||||||
// Clean Up
|
// Clean Up
|
||||||
pageID := info.SharePoint.ParentPath
|
pageID := info.SharePoint.ParentPath
|
||||||
err = api.DeleteSitePage(ctx, suite.service, suite.siteID, pageID)
|
err = api.DeleteSitePage(ctx, suite.service, suite.siteID, pageID)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
@ -37,7 +38,7 @@ func (suite *SharePointCollectionSuite) SetupSuite() {
|
|||||||
suite.siteID = tester.M365SiteID(t)
|
suite.siteID = tester.M365SiteID(t)
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.creds = m365
|
suite.creds = m365
|
||||||
}
|
}
|
||||||
@ -61,7 +62,7 @@ func (suite *SharePointCollectionSuite) TestCollection_Item_Read() {
|
|||||||
data: io.NopCloser(bytes.NewReader(m)),
|
data: io.NopCloser(bytes.NewReader(m)),
|
||||||
}
|
}
|
||||||
readData, err := io.ReadAll(sc.ToReader())
|
readData, err := io.ReadAll(sc.ToReader())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, name, sc.id)
|
assert.Equal(t, name, sc.id)
|
||||||
assert.Equal(t, readData, m)
|
assert.Equal(t, readData, m)
|
||||||
@ -91,7 +92,7 @@ func (suite *SharePointCollectionSuite) TestCollection_Items() {
|
|||||||
user,
|
user,
|
||||||
path.ListsCategory,
|
path.ListsCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return dir
|
return dir
|
||||||
},
|
},
|
||||||
@ -101,10 +102,10 @@ func (suite *SharePointCollectionSuite) TestCollection_Items() {
|
|||||||
listing.SetDisplayName(&name)
|
listing.SetDisplayName(&name)
|
||||||
|
|
||||||
err := ow.WriteObjectValue("", listing)
|
err := ow.WriteObjectValue("", listing)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
byteArray, err := ow.GetSerializedContent()
|
byteArray, err := ow.GetSerializedContent()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
data := &Item{
|
data := &Item{
|
||||||
id: name,
|
id: name,
|
||||||
@ -126,14 +127,14 @@ func (suite *SharePointCollectionSuite) TestCollection_Items() {
|
|||||||
user,
|
user,
|
||||||
path.PagesCategory,
|
path.PagesCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return dir
|
return dir
|
||||||
},
|
},
|
||||||
getItem: func(t *testing.T, itemName string) *Item {
|
getItem: func(t *testing.T, itemName string) *Item {
|
||||||
byteArray := mockconnector.GetMockPage(itemName)
|
byteArray := mockconnector.GetMockPage(itemName)
|
||||||
page, err := support.CreatePageFromBytes(byteArray)
|
page, err := support.CreatePageFromBytes(byteArray)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
data := &Item{
|
data := &Item{
|
||||||
id: itemName,
|
id: itemName,
|
||||||
@ -183,7 +184,7 @@ func (suite *SharePointCollectionSuite) TestListCollection_Restore() {
|
|||||||
testName := "MockListing"
|
testName := "MockListing"
|
||||||
listing.SetDisplayName(&testName)
|
listing.SetDisplayName(&testName)
|
||||||
byteArray, err := service.Serialize(listing)
|
byteArray, err := service.Serialize(listing)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
listData := &Item{
|
listData := &Item{
|
||||||
id: testName,
|
id: testName,
|
||||||
@ -194,7 +195,7 @@ func (suite *SharePointCollectionSuite) TestListCollection_Restore() {
|
|||||||
destName := "Corso_Restore_" + common.FormatNow(common.SimpleTimeTesting)
|
destName := "Corso_Restore_" + common.FormatNow(common.SimpleTimeTesting)
|
||||||
|
|
||||||
deets, err := restoreListItem(ctx, service, listData, suite.siteID, destName)
|
deets, err := restoreListItem(ctx, service, listData, suite.siteID, destName)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
t.Logf("List created: %s\n", deets.SharePoint.ItemName)
|
t.Logf("List created: %s\n", deets.SharePoint.ItemName)
|
||||||
|
|
||||||
// Clean-Up
|
// Clean-Up
|
||||||
@ -206,7 +207,7 @@ func (suite *SharePointCollectionSuite) TestListCollection_Restore() {
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
resp, err := builder.Get(ctx, nil)
|
resp, err := builder.Get(ctx, nil)
|
||||||
assert.NoError(t, err, "getting site lists")
|
aw.NoErr(t, err, "getting site lists")
|
||||||
|
|
||||||
for _, temp := range resp.GetValue() {
|
for _, temp := range resp.GetValue() {
|
||||||
if *temp.GetDisplayName() == deets.SharePoint.ItemName {
|
if *temp.GetDisplayName() == deets.SharePoint.ItemName {
|
||||||
@ -227,7 +228,7 @@ func (suite *SharePointCollectionSuite) TestListCollection_Restore() {
|
|||||||
|
|
||||||
if isFound {
|
if isFound {
|
||||||
err := DeleteList(ctx, service, suite.siteID, deleteID)
|
err := DeleteList(ctx, service, suite.siteID, deleteID)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,17 +243,17 @@ func (suite *SharePointCollectionSuite) TestRestoreLocation() {
|
|||||||
service := createTestService(t, suite.creds)
|
service := createTestService(t, suite.creds)
|
||||||
rootFolder := "General_" + common.FormatNow(common.SimpleTimeTesting)
|
rootFolder := "General_" + common.FormatNow(common.SimpleTimeTesting)
|
||||||
folderID, err := createRestoreFolders(ctx, service, suite.siteID, []string{rootFolder})
|
folderID, err := createRestoreFolders(ctx, service, suite.siteID, []string{rootFolder})
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
t.Log("FolderID: " + folderID)
|
t.Log("FolderID: " + folderID)
|
||||||
|
|
||||||
_, err = createRestoreFolders(ctx, service, suite.siteID, []string{rootFolder, "Tsao"})
|
_, err = createRestoreFolders(ctx, service, suite.siteID, []string{rootFolder, "Tsao"})
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
// CleanUp
|
// CleanUp
|
||||||
siteDrive, err := service.Client().SitesById(suite.siteID).Drive().Get(ctx, nil)
|
siteDrive, err := service.Client().SitesById(suite.siteID).Drive().Get(ctx, nil)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
driveID := *siteDrive.GetId()
|
driveID := *siteDrive.GetId()
|
||||||
err = onedrive.DeleteItem(ctx, service, driveID, folderID)
|
err = onedrive.DeleteItem(ctx, service, driveID, folderID)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,12 +5,12 @@ import (
|
|||||||
|
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/onedrive"
|
"github.com/alcionai/corso/src/internal/connector/onedrive"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/selectors"
|
"github.com/alcionai/corso/src/pkg/selectors"
|
||||||
@ -74,7 +74,7 @@ func (suite *SharePointLibrariesSuite) TestUpdateCollections() {
|
|||||||
driveItem("file", testBaseDrivePath, "root", true),
|
driveItem("file", testBaseDrivePath, "root", true),
|
||||||
},
|
},
|
||||||
scope: anyFolder,
|
scope: anyFolder,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
expectedCollectionIDs: []string{"root"},
|
expectedCollectionIDs: []string{"root"},
|
||||||
expectedCollectionPaths: expectedPathAsSlice(
|
expectedCollectionPaths: expectedPathAsSlice(
|
||||||
suite.T(),
|
suite.T(),
|
||||||
@ -169,7 +169,7 @@ func (suite *SharePointPagesSuite) TestCollectPages() {
|
|||||||
siteID := tester.M365SiteID(t)
|
siteID := tester.M365SiteID(t)
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
account, err := a.M365Config()
|
account, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
col, err := collectPages(
|
col, err := collectPages(
|
||||||
ctx,
|
ctx,
|
||||||
@ -179,6 +179,6 @@ func (suite *SharePointPagesSuite) TestCollectPages() {
|
|||||||
&MockGraphService{},
|
&MockGraphService{},
|
||||||
control.Defaults(),
|
control.Defaults(),
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.NotEmpty(t, col)
|
assert.NotEmpty(t, col)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,11 +4,11 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
|
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/graph"
|
"github.com/alcionai/corso/src/internal/connector/graph"
|
||||||
"github.com/alcionai/corso/src/internal/connector/onedrive"
|
"github.com/alcionai/corso/src/internal/connector/onedrive"
|
||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ func createTestService(t *testing.T, credentials account.M365Config) *graph.Serv
|
|||||||
credentials.AzureClientID,
|
credentials.AzureClientID,
|
||||||
credentials.AzureClientSecret,
|
credentials.AzureClientSecret,
|
||||||
)
|
)
|
||||||
require.NoError(t, err, "creating microsoft graph service for exchange")
|
aw.MustNoErr(t, err, "creating microsoft graph service for exchange")
|
||||||
|
|
||||||
return graph.NewService(adapter)
|
return graph.NewService(adapter)
|
||||||
}
|
}
|
||||||
@ -62,7 +62,7 @@ func expectedPathAsSlice(t *testing.T, tenant, user string, rest ...string) []st
|
|||||||
|
|
||||||
for _, r := range rest {
|
for _, r := range rest {
|
||||||
p, err := onedrive.GetCanonicalPath(r, tenant, user, onedrive.SharePointSource)
|
p, err := onedrive.GetCanonicalPath(r, tenant, user, onedrive.SharePointSource)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
res = append(res, p.String())
|
res = append(res, p.String())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,10 +4,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
)
|
)
|
||||||
@ -21,7 +21,7 @@ func (suite *SharePointSuite) SetupSuite() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
a := tester.NewM365Account(t)
|
a := tester.NewM365Account(t)
|
||||||
m365, err := a.M365Config()
|
m365, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.creds = m365
|
suite.creds = m365
|
||||||
}
|
}
|
||||||
@ -52,11 +52,11 @@ func (suite *SharePointSuite) TestLoadList() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
service := createTestService(t, suite.creds)
|
service := createTestService(t, suite.creds)
|
||||||
tuples, err := preFetchLists(ctx, service, "root")
|
tuples, err := preFetchLists(ctx, service, "root")
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
job := []string{tuples[0].id}
|
job := []string{tuples[0].id}
|
||||||
lists, err := loadSiteLists(ctx, service, "root", job, fault.New(true))
|
lists, err := loadSiteLists(ctx, service, "root", job, fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.Greater(t, len(lists), 0)
|
assert.Greater(t, len(lists), 0)
|
||||||
t.Logf("Length: %d\n", len(lists))
|
t.Logf("Length: %d\n", len(lists))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,11 +6,11 @@ import (
|
|||||||
kioser "github.com/microsoft/kiota-serialization-json-go"
|
kioser "github.com/microsoft/kiota-serialization-json-go"
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
bmodels "github.com/alcionai/corso/src/internal/connector/graph/betasdk/models"
|
bmodels "github.com/alcionai/corso/src/internal/connector/graph/betasdk/models"
|
||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DataSupportSuite struct {
|
type DataSupportSuite struct {
|
||||||
@ -38,13 +38,13 @@ func (suite *DataSupportSuite) TestCreateMessageFromBytes() {
|
|||||||
{
|
{
|
||||||
name: "Empty Bytes",
|
name: "Empty Bytes",
|
||||||
byteArray: make([]byte, 0),
|
byteArray: make([]byte, 0),
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
checkObject: assert.Nil,
|
checkObject: assert.Nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "aMessage bytes",
|
name: "aMessage bytes",
|
||||||
byteArray: mockconnector.GetMockMessageBytes("m365 mail support test"),
|
byteArray: mockconnector.GetMockMessageBytes("m365 mail support test"),
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
checkObject: assert.NotNil,
|
checkObject: assert.NotNil,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -69,19 +69,19 @@ func (suite *DataSupportSuite) TestCreateContactFromBytes() {
|
|||||||
{
|
{
|
||||||
name: empty,
|
name: empty,
|
||||||
byteArray: make([]byte, 0),
|
byteArray: make([]byte, 0),
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
isNil: assert.Nil,
|
isNil: assert.Nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: invalid,
|
name: invalid,
|
||||||
byteArray: []byte("A random sentence doesn't make an object"),
|
byteArray: []byte("A random sentence doesn't make an object"),
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
isNil: assert.Nil,
|
isNil: assert.Nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Valid Contact",
|
name: "Valid Contact",
|
||||||
byteArray: mockconnector.GetMockContactBytes("Support Test"),
|
byteArray: mockconnector.GetMockContactBytes("Support Test"),
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
isNil: assert.NotNil,
|
isNil: assert.NotNil,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -104,19 +104,19 @@ func (suite *DataSupportSuite) TestCreateEventFromBytes() {
|
|||||||
{
|
{
|
||||||
name: empty,
|
name: empty,
|
||||||
byteArray: make([]byte, 0),
|
byteArray: make([]byte, 0),
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
isNil: assert.Nil,
|
isNil: assert.Nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: invalid,
|
name: invalid,
|
||||||
byteArray: []byte("Invalid byte stream \"subject:\" Not going to work"),
|
byteArray: []byte("Invalid byte stream \"subject:\" Not going to work"),
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
isNil: assert.Nil,
|
isNil: assert.Nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Valid Event",
|
name: "Valid Event",
|
||||||
byteArray: mockconnector.GetDefaultMockEventBytes("Event Test"),
|
byteArray: mockconnector.GetDefaultMockEventBytes("Event Test"),
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
isNil: assert.NotNil,
|
isNil: assert.NotNil,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -131,7 +131,7 @@ func (suite *DataSupportSuite) TestCreateEventFromBytes() {
|
|||||||
|
|
||||||
func (suite *DataSupportSuite) TestCreateListFromBytes() {
|
func (suite *DataSupportSuite) TestCreateListFromBytes() {
|
||||||
listBytes, err := mockconnector.GetMockListBytes("DataSupportSuite")
|
listBytes, err := mockconnector.GetMockListBytes("DataSupportSuite")
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@ -142,19 +142,19 @@ func (suite *DataSupportSuite) TestCreateListFromBytes() {
|
|||||||
{
|
{
|
||||||
name: empty,
|
name: empty,
|
||||||
byteArray: make([]byte, 0),
|
byteArray: make([]byte, 0),
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
isNil: assert.Nil,
|
isNil: assert.Nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: invalid,
|
name: invalid,
|
||||||
byteArray: []byte("Invalid byte stream \"subject:\" Not going to work"),
|
byteArray: []byte("Invalid byte stream \"subject:\" Not going to work"),
|
||||||
checkError: assert.Error,
|
checkError: aw.Err,
|
||||||
isNil: assert.Nil,
|
isNil: assert.Nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Valid List",
|
name: "Valid List",
|
||||||
byteArray: listBytes,
|
byteArray: listBytes,
|
||||||
checkError: assert.NoError,
|
checkError: aw.NoErr,
|
||||||
isNil: assert.NotNil,
|
isNil: assert.NotNil,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -177,7 +177,7 @@ func (suite *DataSupportSuite) TestCreatePageFromBytes() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
empty,
|
empty,
|
||||||
assert.Error,
|
aw.Err,
|
||||||
assert.Nil,
|
assert.Nil,
|
||||||
func(t *testing.T) []byte {
|
func(t *testing.T) []byte {
|
||||||
return make([]byte, 0)
|
return make([]byte, 0)
|
||||||
@ -185,7 +185,7 @@ func (suite *DataSupportSuite) TestCreatePageFromBytes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
invalid,
|
invalid,
|
||||||
assert.Error,
|
aw.Err,
|
||||||
assert.Nil,
|
assert.Nil,
|
||||||
func(t *testing.T) []byte {
|
func(t *testing.T) []byte {
|
||||||
return []byte("snarf")
|
return []byte("snarf")
|
||||||
@ -193,7 +193,7 @@ func (suite *DataSupportSuite) TestCreatePageFromBytes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Valid Page",
|
"Valid Page",
|
||||||
assert.NoError,
|
aw.NoErr,
|
||||||
assert.NotNil,
|
assert.NotNil,
|
||||||
func(t *testing.T) []byte {
|
func(t *testing.T) []byte {
|
||||||
pg := bmodels.NewSitePage()
|
pg := bmodels.NewSitePage()
|
||||||
@ -204,10 +204,10 @@ func (suite *DataSupportSuite) TestCreatePageFromBytes() {
|
|||||||
|
|
||||||
writer := kioser.NewJsonSerializationWriter()
|
writer := kioser.NewJsonSerializationWriter()
|
||||||
err := pg.Serialize(writer)
|
err := pg.Serialize(writer)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
byteArray, err := writer.GetSerializedContent()
|
byteArray, err := writer.GetSerializedContent()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return byteArray
|
return byteArray
|
||||||
},
|
},
|
||||||
@ -239,7 +239,7 @@ func (suite *DataSupportSuite) TestHasAttachments() {
|
|||||||
"This is testing",
|
"This is testing",
|
||||||
)
|
)
|
||||||
message, err := CreateMessageFromBytes(byteArray)
|
message, err := CreateMessageFromBytes(byteArray)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
return message.GetBody()
|
return message.GetBody()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -249,7 +249,7 @@ func (suite *DataSupportSuite) TestHasAttachments() {
|
|||||||
getBodyable: func(t *testing.T) models.ItemBodyable {
|
getBodyable: func(t *testing.T) models.ItemBodyable {
|
||||||
byteArray := mockconnector.GetMessageWithOneDriveAttachment("Test legacy")
|
byteArray := mockconnector.GetMessageWithOneDriveAttachment("Test legacy")
|
||||||
message, err := CreateMessageFromBytes(byteArray)
|
message, err := CreateMessageFromBytes(byteArray)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
return message.GetBody()
|
return message.GetBody()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -5,10 +5,10 @@ import (
|
|||||||
|
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SupportTestSuite struct {
|
type SupportTestSuite struct {
|
||||||
@ -22,7 +22,7 @@ func TestSupportTestSuite(t *testing.T) {
|
|||||||
func (suite *SupportTestSuite) TestToMessage() {
|
func (suite *SupportTestSuite) TestToMessage() {
|
||||||
bytes := mockconnector.GetMockMessageBytes("m365 mail support test")
|
bytes := mockconnector.GetMockMessageBytes("m365 mail support test")
|
||||||
message, err := CreateMessageFromBytes(bytes)
|
message, err := CreateMessageFromBytes(bytes)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
clone := ToMessage(message)
|
clone := ToMessage(message)
|
||||||
suite.Equal(message.GetBccRecipients(), clone.GetBccRecipients())
|
suite.Equal(message.GetBccRecipients(), clone.GetBccRecipients())
|
||||||
@ -36,7 +36,7 @@ func (suite *SupportTestSuite) TestToEventSimplified() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
bytes := mockconnector.GetMockEventWithAttendeesBytes("M365 Event Support Test")
|
bytes := mockconnector.GetMockEventWithAttendeesBytes("M365 Event Support Test")
|
||||||
event, err := CreateEventFromBytes(bytes)
|
event, err := CreateEventFromBytes(bytes)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
attendees := event.GetAttendees()
|
attendees := event.GetAttendees()
|
||||||
newEvent := ToEventSimplified(event)
|
newEvent := ToEventSimplified(event)
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
@ -44,11 +45,11 @@ func (suite *UploadSessionSuite) TestWriter() {
|
|||||||
// Extract the Content-Range components
|
// Extract the Content-Range components
|
||||||
matches := contentRangeRegex.FindStringSubmatch(r.Header[contentRangeHeaderKey][0])
|
matches := contentRangeRegex.FindStringSubmatch(r.Header[contentRangeHeaderKey][0])
|
||||||
rangeStart, err := strconv.Atoi(matches[contentRangeRegex.SubexpIndex("rangestart")])
|
rangeStart, err := strconv.Atoi(matches[contentRangeRegex.SubexpIndex("rangestart")])
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
rangeEnd, err := strconv.Atoi(matches[contentRangeRegex.SubexpIndex("rangeend")])
|
rangeEnd, err := strconv.Atoi(matches[contentRangeRegex.SubexpIndex("rangeend")])
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
length, err := strconv.Atoi(matches[contentRangeRegex.SubexpIndex("length")])
|
length, err := strconv.Atoi(matches[contentRangeRegex.SubexpIndex("length")])
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
// Validate total size and range start/end
|
// Validate total size and range start/end
|
||||||
assert.Equal(t, int(writeSize), length)
|
assert.Equal(t, int(writeSize), length)
|
||||||
@ -70,7 +71,7 @@ func (suite *UploadSessionSuite) TestWriter() {
|
|||||||
copyBuffer := make([]byte, 32*1024)
|
copyBuffer := make([]byte, 32*1024)
|
||||||
|
|
||||||
size, err := io.CopyBuffer(writer, td, copyBuffer)
|
size, err := io.CopyBuffer(writer, td, copyBuffer)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
require.Equal(suite.T(), writeSize, size)
|
require.Equal(suite.T(), writeSize, size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,9 +4,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -22,11 +22,11 @@ func (suite *DataCollectionSuite) TestStateOf() {
|
|||||||
fooP, err := path.Builder{}.
|
fooP, err := path.Builder{}.
|
||||||
Append("foo").
|
Append("foo").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
barP, err := path.Builder{}.
|
barP, err := path.Builder{}.
|
||||||
Append("bar").
|
Append("bar").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
name string
|
name string
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/events"
|
"github.com/alcionai/corso/src/internal/events"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/credentials"
|
"github.com/alcionai/corso/src/pkg/credentials"
|
||||||
@ -36,7 +37,7 @@ func (suite *EventsIntegrationSuite) TestNewBus() {
|
|||||||
Prefix: "prfx",
|
Prefix: "prfx",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
a, err := account.NewAccount(
|
a, err := account.NewAccount(
|
||||||
account.ProviderM365,
|
account.ProviderM365,
|
||||||
@ -48,15 +49,15 @@ func (suite *EventsIntegrationSuite) TestNewBus() {
|
|||||||
AzureTenantID: "tid",
|
AzureTenantID: "tid",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
b, err := events.NewBus(ctx, s, a.ID(), control.Options{})
|
b, err := events.NewBus(ctx, s, a.ID(), control.Options{})
|
||||||
require.NotEmpty(t, b)
|
require.NotEmpty(t, b)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NoError(t, b.Close())
|
aw.MustNoErr(t, b.Close())
|
||||||
|
|
||||||
b2, err := events.NewBus(ctx, s, a.ID(), control.Options{DisableMetrics: true})
|
b2, err := events.NewBus(ctx, s, a.ID(), control.Options{DisableMetrics: true})
|
||||||
require.Empty(t, b2)
|
require.Empty(t, b2)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NoError(t, b2.Close())
|
aw.MustNoErr(t, b2.Close())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import (
|
|||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/storage"
|
"github.com/alcionai/corso/src/pkg/storage"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -76,13 +77,13 @@ func (suite *WrapperIntegrationSuite) TestRepoExistsError() {
|
|||||||
|
|
||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
k := NewConn(st)
|
k := NewConn(st)
|
||||||
require.NoError(t, k.Initialize(ctx))
|
aw.MustNoErr(t, k.Initialize(ctx))
|
||||||
|
|
||||||
require.NoError(t, k.Close(ctx))
|
aw.MustNoErr(t, k.Close(ctx))
|
||||||
|
|
||||||
err := k.Initialize(ctx)
|
err := k.Initialize(ctx)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
assert.ErrorIs(t, err, ErrorRepoAlreadyExists)
|
aw.ErrIs(t, err, ErrorRepoAlreadyExists)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *WrapperIntegrationSuite) TestBadProviderErrors() {
|
func (suite *WrapperIntegrationSuite) TestBadProviderErrors() {
|
||||||
@ -95,7 +96,7 @@ func (suite *WrapperIntegrationSuite) TestBadProviderErrors() {
|
|||||||
st.Provider = storage.ProviderUnknown
|
st.Provider = storage.ProviderUnknown
|
||||||
|
|
||||||
k := NewConn(st)
|
k := NewConn(st)
|
||||||
assert.Error(t, k.Initialize(ctx))
|
aw.Err(t, k.Initialize(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *WrapperIntegrationSuite) TestConnectWithoutInitErrors() {
|
func (suite *WrapperIntegrationSuite) TestConnectWithoutInitErrors() {
|
||||||
@ -106,7 +107,7 @@ func (suite *WrapperIntegrationSuite) TestConnectWithoutInitErrors() {
|
|||||||
|
|
||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
k := NewConn(st)
|
k := NewConn(st)
|
||||||
assert.Error(t, k.Connect(ctx))
|
aw.Err(t, k.Connect(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *WrapperIntegrationSuite) TestCloseTwiceDoesNotCrash() {
|
func (suite *WrapperIntegrationSuite) TestCloseTwiceDoesNotCrash() {
|
||||||
@ -116,10 +117,10 @@ func (suite *WrapperIntegrationSuite) TestCloseTwiceDoesNotCrash() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.NoError(t, k.Close(ctx))
|
aw.NoErr(t, k.Close(ctx))
|
||||||
assert.Nil(t, k.Repository)
|
assert.Nil(t, k.Repository)
|
||||||
assert.NoError(t, k.Close(ctx))
|
aw.NoErr(t, k.Close(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *WrapperIntegrationSuite) TestCloseAfterWrap() {
|
func (suite *WrapperIntegrationSuite) TestCloseAfterWrap() {
|
||||||
@ -129,17 +130,17 @@ func (suite *WrapperIntegrationSuite) TestCloseAfterWrap() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
require.NoError(t, k.wrap())
|
aw.MustNoErr(t, k.wrap())
|
||||||
|
|
||||||
assert.Equal(t, 2, k.refCount)
|
assert.Equal(t, 2, k.refCount)
|
||||||
|
|
||||||
require.NoError(t, k.Close(ctx))
|
aw.MustNoErr(t, k.Close(ctx))
|
||||||
assert.NotNil(t, k.Repository)
|
assert.NotNil(t, k.Repository)
|
||||||
assert.Equal(t, 1, k.refCount)
|
assert.Equal(t, 1, k.refCount)
|
||||||
|
|
||||||
require.NoError(t, k.Close(ctx))
|
aw.MustNoErr(t, k.Close(ctx))
|
||||||
assert.Nil(t, k.Repository)
|
assert.Nil(t, k.Repository)
|
||||||
assert.Equal(t, 0, k.refCount)
|
assert.Equal(t, 0, k.refCount)
|
||||||
}
|
}
|
||||||
@ -151,10 +152,10 @@ func (suite *WrapperIntegrationSuite) TestOpenAfterClose() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.NoError(t, k.Close(ctx))
|
aw.NoErr(t, k.Close(ctx))
|
||||||
assert.Error(t, k.wrap())
|
aw.Err(t, k.wrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *WrapperIntegrationSuite) TestBadCompressorType() {
|
func (suite *WrapperIntegrationSuite) TestBadCompressorType() {
|
||||||
@ -164,13 +165,13 @@ func (suite *WrapperIntegrationSuite) TestBadCompressorType() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, k.Close(ctx))
|
aw.NoErr(t, k.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
assert.Error(t, k.Compression(ctx, "not-a-compressor"))
|
aw.Err(t, k.Compression(ctx, "not-a-compressor"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *WrapperIntegrationSuite) TestGetPolicyOrDefault_GetsDefault() {
|
func (suite *WrapperIntegrationSuite) TestGetPolicyOrDefault_GetsDefault() {
|
||||||
@ -180,10 +181,10 @@ func (suite *WrapperIntegrationSuite) TestGetPolicyOrDefault_GetsDefault() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, k.Close(ctx))
|
aw.NoErr(t, k.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
si := snapshot.SourceInfo{
|
si := snapshot.SourceInfo{
|
||||||
@ -193,7 +194,7 @@ func (suite *WrapperIntegrationSuite) TestGetPolicyOrDefault_GetsDefault() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
p, err := k.getPolicyOrEmpty(ctx, si)
|
p, err := k.getPolicyOrEmpty(ctx, si)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, policy.Policy{}, *p)
|
assert.Equal(t, policy.Policy{}, *p)
|
||||||
}
|
}
|
||||||
@ -206,17 +207,17 @@ func (suite *WrapperIntegrationSuite) TestSetCompressor() {
|
|||||||
compressor := "pgzip"
|
compressor := "pgzip"
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, k.Close(ctx))
|
aw.NoErr(t, k.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
assert.NoError(t, k.Compression(ctx, compressor))
|
aw.NoErr(t, k.Compression(ctx, compressor))
|
||||||
|
|
||||||
// Check the policy was actually created and has the right compressor.
|
// Check the policy was actually created and has the right compressor.
|
||||||
p, err := k.getPolicyOrEmpty(ctx, policy.GlobalPolicySourceInfo)
|
p, err := k.getPolicyOrEmpty(ctx, policy.GlobalPolicySourceInfo)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, compressor, string(p.CompressionPolicy.CompressorName))
|
assert.Equal(t, compressor, string(p.CompressionPolicy.CompressorName))
|
||||||
|
|
||||||
@ -229,7 +230,7 @@ func (suite *WrapperIntegrationSuite) TestSetCompressor() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
policyTree, err := policy.TreeForSource(ctx, k, si)
|
policyTree, err := policy.TreeForSource(ctx, k, si)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(
|
assert.Equal(
|
||||||
t,
|
t,
|
||||||
@ -300,25 +301,25 @@ func (suite *WrapperIntegrationSuite) TestConfigDefaultsSetOnInitAndConnect() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
p, err := k.getPolicyOrEmpty(ctx, policy.GlobalPolicySourceInfo)
|
p, err := k.getPolicyOrEmpty(ctx, policy.GlobalPolicySourceInfo)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
test.checkFunc(t, p)
|
test.checkFunc(t, p)
|
||||||
|
|
||||||
require.NoError(t, test.mutator(ctx, p))
|
aw.MustNoErr(t, test.mutator(ctx, p))
|
||||||
require.NoError(t, k.writeGlobalPolicy(ctx, "TestDefaultPolicyConfigSet", p))
|
aw.MustNoErr(t, k.writeGlobalPolicy(ctx, "TestDefaultPolicyConfigSet", p))
|
||||||
require.NoError(t, k.Close(ctx))
|
aw.MustNoErr(t, k.Close(ctx))
|
||||||
|
|
||||||
require.NoError(t, k.Connect(ctx))
|
aw.MustNoErr(t, k.Connect(ctx))
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, k.Close(ctx))
|
aw.NoErr(t, k.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
p, err = k.getPolicyOrEmpty(ctx, policy.GlobalPolicySourceInfo)
|
p, err = k.getPolicyOrEmpty(ctx, policy.GlobalPolicySourceInfo)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
test.checkFunc(t, p)
|
test.checkFunc(t, p)
|
||||||
})
|
})
|
||||||
@ -332,10 +333,10 @@ func (suite *WrapperIntegrationSuite) TestInitAndConnWithTempDirectory() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NoError(t, k.Close(ctx))
|
aw.MustNoErr(t, k.Close(ctx))
|
||||||
|
|
||||||
// Re-open with Connect.
|
// Re-open with Connect.
|
||||||
require.NoError(t, k.Connect(ctx))
|
aw.MustNoErr(t, k.Connect(ctx))
|
||||||
assert.NoError(t, k.Close(ctx))
|
aw.NoErr(t, k.Close(ctx))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
@ -41,7 +42,7 @@ func (suite *KopiaDataCollectionUnitSuite) TestReturnsPath() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
c := kopiaDataCollection{
|
c := kopiaDataCollection{
|
||||||
streams: []data.Stream{},
|
streams: []data.Stream{},
|
||||||
@ -112,7 +113,7 @@ func (suite *KopiaDataCollectionUnitSuite) TestReturnsStreams() {
|
|||||||
assert.Equal(t, returnedStream.UUID(), uuids[count])
|
assert.Equal(t, returnedStream.UUID(), uuids[count])
|
||||||
|
|
||||||
buf, err := io.ReadAll(returnedStream.ToReader())
|
buf, err := io.ReadAll(returnedStream.ToReader())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, buf, testData[count])
|
assert.Equal(t, buf, testData[count])
|
||||||
require.Implements(t, (*data.StreamSize)(nil), returnedStream)
|
require.Implements(t, (*data.StreamSize)(nil), returnedStream)
|
||||||
ss := returnedStream.(data.StreamSize)
|
ss := returnedStream.(data.StreamSize)
|
||||||
@ -217,7 +218,7 @@ func (suite *KopiaDataCollectionUnitSuite) TestFetch() {
|
|||||||
category,
|
category,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
name string
|
name string
|
||||||
@ -233,28 +234,28 @@ func (suite *KopiaDataCollectionUnitSuite) TestFetch() {
|
|||||||
inputName: noErrFileName,
|
inputName: noErrFileName,
|
||||||
inputSerializationVersion: serializationVersion,
|
inputSerializationVersion: serializationVersion,
|
||||||
expectedData: []byte(noErrFileData),
|
expectedData: []byte(noErrFileData),
|
||||||
lookupErr: assert.NoError,
|
lookupErr: aw.NoErr,
|
||||||
readErr: assert.NoError,
|
readErr: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "FileFound_ReadError",
|
name: "FileFound_ReadError",
|
||||||
inputName: errFileName,
|
inputName: errFileName,
|
||||||
inputSerializationVersion: serializationVersion,
|
inputSerializationVersion: serializationVersion,
|
||||||
lookupErr: assert.NoError,
|
lookupErr: aw.NoErr,
|
||||||
readErr: assert.Error,
|
readErr: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "FileFound_VersionError",
|
name: "FileFound_VersionError",
|
||||||
inputName: noErrFileName,
|
inputName: noErrFileName,
|
||||||
inputSerializationVersion: serializationVersion + 1,
|
inputSerializationVersion: serializationVersion + 1,
|
||||||
lookupErr: assert.NoError,
|
lookupErr: aw.NoErr,
|
||||||
readErr: assert.Error,
|
readErr: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "FileNotFound",
|
name: "FileNotFound",
|
||||||
inputName: "foo",
|
inputName: "foo",
|
||||||
inputSerializationVersion: serializationVersion + 1,
|
inputSerializationVersion: serializationVersion + 1,
|
||||||
lookupErr: assert.Error,
|
lookupErr: aw.Err,
|
||||||
notFoundErr: true,
|
notFoundErr: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -276,7 +277,7 @@ func (suite *KopiaDataCollectionUnitSuite) TestFetch() {
|
|||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if test.notFoundErr {
|
if test.notFoundErr {
|
||||||
assert.ErrorIs(t, err, data.ErrNotFound)
|
aw.ErrIs(t, err, data.ErrNotFound)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/model"
|
"github.com/alcionai/corso/src/internal/model"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup"
|
"github.com/alcionai/corso/src/pkg/backup"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -26,7 +27,7 @@ type fooModel struct {
|
|||||||
//revive:disable-next-line:context-as-argument
|
//revive:disable-next-line:context-as-argument
|
||||||
func getModelStore(t *testing.T, ctx context.Context) *ModelStore {
|
func getModelStore(t *testing.T, ctx context.Context) *ModelStore {
|
||||||
c, err := openKopiaRepo(t, ctx)
|
c, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return &ModelStore{c: c, modelVersion: globalModelVersion}
|
return &ModelStore{c: c, modelVersion: globalModelVersion}
|
||||||
}
|
}
|
||||||
@ -79,7 +80,7 @@ func (suite *ModelStoreIntegrationSuite) SetupTest() {
|
|||||||
|
|
||||||
func (suite *ModelStoreIntegrationSuite) TearDownTest() {
|
func (suite *ModelStoreIntegrationSuite) TearDownTest() {
|
||||||
defer suite.flush()
|
defer suite.flush()
|
||||||
assert.NoError(suite.T(), suite.m.Close(suite.ctx))
|
aw.NoErr(suite.T(), suite.m.Close(suite.ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ModelStoreIntegrationSuite) TestBadTagsErrors() {
|
func (suite *ModelStoreIntegrationSuite) TestBadTagsErrors() {
|
||||||
@ -114,7 +115,7 @@ func (suite *ModelStoreIntegrationSuite) TestBadTagsErrors() {
|
|||||||
foo := &fooModel{Bar: uuid.NewString()}
|
foo := &fooModel{Bar: uuid.NewString()}
|
||||||
foo.Tags = test.tags
|
foo.Tags = test.tags
|
||||||
|
|
||||||
assert.ErrorIs(
|
aw.ErrIs(
|
||||||
t,
|
t,
|
||||||
suite.m.Put(suite.ctx, model.BackupOpSchema, foo),
|
suite.m.Put(suite.ctx, model.BackupOpSchema, foo),
|
||||||
errBadTagKey,
|
errBadTagKey,
|
||||||
@ -122,13 +123,13 @@ func (suite *ModelStoreIntegrationSuite) TestBadTagsErrors() {
|
|||||||
|
|
||||||
// Add model for update/get ID checks.
|
// Add model for update/get ID checks.
|
||||||
foo.Tags = map[string]string{}
|
foo.Tags = map[string]string{}
|
||||||
require.NoError(
|
aw.MustNoErr(
|
||||||
t,
|
t,
|
||||||
suite.m.Put(suite.ctx, model.BackupOpSchema, foo),
|
suite.m.Put(suite.ctx, model.BackupOpSchema, foo),
|
||||||
)
|
)
|
||||||
|
|
||||||
foo.Tags = test.tags
|
foo.Tags = test.tags
|
||||||
assert.ErrorIs(
|
aw.ErrIs(
|
||||||
t,
|
t,
|
||||||
suite.m.Update(suite.ctx, model.BackupOpSchema, foo),
|
suite.m.Update(suite.ctx, model.BackupOpSchema, foo),
|
||||||
errBadTagKey,
|
errBadTagKey,
|
||||||
@ -139,7 +140,7 @@ func (suite *ModelStoreIntegrationSuite) TestBadTagsErrors() {
|
|||||||
model.BackupOpSchema,
|
model.BackupOpSchema,
|
||||||
test.tags,
|
test.tags,
|
||||||
)
|
)
|
||||||
assert.ErrorIs(t, err, errBadTagKey)
|
aw.ErrIs(t, err, errBadTagKey)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -156,14 +157,14 @@ func (suite *ModelStoreIntegrationSuite) TestNoIDsErrors() {
|
|||||||
noModelStoreID.ID = model.StableID(uuid.NewString())
|
noModelStoreID.ID = model.StableID(uuid.NewString())
|
||||||
noModelStoreID.ModelStoreID = ""
|
noModelStoreID.ModelStoreID = ""
|
||||||
|
|
||||||
assert.Error(t, suite.m.Update(suite.ctx, theModelType, noStableID))
|
aw.Err(t, suite.m.Update(suite.ctx, theModelType, noStableID))
|
||||||
assert.Error(t, suite.m.Update(suite.ctx, theModelType, noModelStoreID))
|
aw.Err(t, suite.m.Update(suite.ctx, theModelType, noModelStoreID))
|
||||||
|
|
||||||
assert.Error(t, suite.m.Get(suite.ctx, theModelType, "", nil))
|
aw.Err(t, suite.m.Get(suite.ctx, theModelType, "", nil))
|
||||||
assert.Error(t, suite.m.GetWithModelStoreID(suite.ctx, theModelType, "", nil))
|
aw.Err(t, suite.m.GetWithModelStoreID(suite.ctx, theModelType, "", nil))
|
||||||
|
|
||||||
assert.Error(t, suite.m.Delete(suite.ctx, theModelType, ""))
|
aw.Err(t, suite.m.Delete(suite.ctx, theModelType, ""))
|
||||||
assert.Error(t, suite.m.DeleteWithModelStoreID(suite.ctx, ""))
|
aw.Err(t, suite.m.DeleteWithModelStoreID(suite.ctx, ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ModelStoreIntegrationSuite) TestBadModelTypeErrors() {
|
func (suite *ModelStoreIntegrationSuite) TestBadModelTypeErrors() {
|
||||||
@ -171,16 +172,16 @@ func (suite *ModelStoreIntegrationSuite) TestBadModelTypeErrors() {
|
|||||||
|
|
||||||
foo := &fooModel{Bar: uuid.NewString()}
|
foo := &fooModel{Bar: uuid.NewString()}
|
||||||
|
|
||||||
assert.ErrorIs(
|
aw.ErrIs(
|
||||||
t,
|
t,
|
||||||
suite.m.Put(suite.ctx, model.UnknownSchema, foo),
|
suite.m.Put(suite.ctx, model.UnknownSchema, foo),
|
||||||
errUnrecognizedSchema,
|
errUnrecognizedSchema,
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(t, suite.m.Put(suite.ctx, model.BackupOpSchema, foo))
|
aw.MustNoErr(t, suite.m.Put(suite.ctx, model.BackupOpSchema, foo))
|
||||||
|
|
||||||
_, err := suite.m.GetIDsForType(suite.ctx, model.UnknownSchema, nil)
|
_, err := suite.m.GetIDsForType(suite.ctx, model.UnknownSchema, nil)
|
||||||
assert.ErrorIs(t, err, errUnrecognizedSchema)
|
aw.ErrIs(t, err, errUnrecognizedSchema)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ModelStoreIntegrationSuite) TestBadTypeErrors() {
|
func (suite *ModelStoreIntegrationSuite) TestBadTypeErrors() {
|
||||||
@ -188,22 +189,22 @@ func (suite *ModelStoreIntegrationSuite) TestBadTypeErrors() {
|
|||||||
|
|
||||||
foo := &fooModel{Bar: uuid.NewString()}
|
foo := &fooModel{Bar: uuid.NewString()}
|
||||||
|
|
||||||
require.NoError(t, suite.m.Put(suite.ctx, model.BackupOpSchema, foo))
|
aw.MustNoErr(t, suite.m.Put(suite.ctx, model.BackupOpSchema, foo))
|
||||||
|
|
||||||
returned := &fooModel{}
|
returned := &fooModel{}
|
||||||
assert.ErrorIs(
|
aw.ErrIs(
|
||||||
t,
|
t,
|
||||||
suite.m.Get(suite.ctx, model.RestoreOpSchema, foo.ID, returned),
|
suite.m.Get(suite.ctx, model.RestoreOpSchema, foo.ID, returned),
|
||||||
errModelTypeMismatch,
|
errModelTypeMismatch,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert.ErrorIs(
|
aw.ErrIs(
|
||||||
t,
|
t,
|
||||||
suite.m.GetWithModelStoreID(suite.ctx, model.RestoreOpSchema, foo.ModelStoreID, returned),
|
suite.m.GetWithModelStoreID(suite.ctx, model.RestoreOpSchema, foo.ModelStoreID, returned),
|
||||||
errModelTypeMismatch,
|
errModelTypeMismatch,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert.ErrorIs(
|
aw.ErrIs(
|
||||||
t,
|
t,
|
||||||
suite.m.Delete(suite.ctx, model.RestoreOpSchema, foo.ID),
|
suite.m.Delete(suite.ctx, model.RestoreOpSchema, foo.ID),
|
||||||
errModelTypeMismatch,
|
errModelTypeMismatch,
|
||||||
@ -218,13 +219,13 @@ func (suite *ModelStoreIntegrationSuite) TestPutGetBadVersion() {
|
|||||||
foo.Tags = map[string]string{}
|
foo.Tags = map[string]string{}
|
||||||
|
|
||||||
err := suite.m.Put(suite.ctx, schema, foo)
|
err := suite.m.Put(suite.ctx, schema, foo)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.m.modelVersion = 42
|
suite.m.modelVersion = 42
|
||||||
|
|
||||||
returned := &fooModel{}
|
returned := &fooModel{}
|
||||||
err = suite.m.Get(suite.ctx, schema, foo.ID, returned)
|
err = suite.m.Get(suite.ctx, schema, foo.ID, returned)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ModelStoreIntegrationSuite) TestPutGet() {
|
func (suite *ModelStoreIntegrationSuite) TestPutGet() {
|
||||||
@ -235,22 +236,22 @@ func (suite *ModelStoreIntegrationSuite) TestPutGet() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
s: model.UnknownSchema,
|
s: model.UnknownSchema,
|
||||||
check: require.Error,
|
check: aw.MustErr,
|
||||||
hasErr: true,
|
hasErr: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
s: model.BackupOpSchema,
|
s: model.BackupOpSchema,
|
||||||
check: require.NoError,
|
check: aw.MustNoErr,
|
||||||
hasErr: false,
|
hasErr: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
s: model.RestoreOpSchema,
|
s: model.RestoreOpSchema,
|
||||||
check: require.NoError,
|
check: aw.MustNoErr,
|
||||||
hasErr: false,
|
hasErr: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
s: model.BackupSchema,
|
s: model.BackupSchema,
|
||||||
check: require.NoError,
|
check: aw.MustNoErr,
|
||||||
hasErr: false,
|
hasErr: false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -276,11 +277,11 @@ func (suite *ModelStoreIntegrationSuite) TestPutGet() {
|
|||||||
|
|
||||||
returned := &fooModel{}
|
returned := &fooModel{}
|
||||||
err = suite.m.Get(suite.ctx, test.s, foo.ID, returned)
|
err = suite.m.Get(suite.ctx, test.s, foo.ID, returned)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, foo, returned)
|
assert.Equal(t, foo, returned)
|
||||||
|
|
||||||
err = suite.m.GetWithModelStoreID(suite.ctx, test.s, foo.ModelStoreID, returned)
|
err = suite.m.GetWithModelStoreID(suite.ctx, test.s, foo.ModelStoreID, returned)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, foo, returned)
|
assert.Equal(t, foo, returned)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -318,7 +319,7 @@ func (suite *ModelStoreIntegrationSuite) TestPutGet_PreSetID() {
|
|||||||
foo.Tags = map[string]string{}
|
foo.Tags = map[string]string{}
|
||||||
|
|
||||||
err := suite.m.Put(suite.ctx, mdl, foo)
|
err := suite.m.Put(suite.ctx, mdl, foo)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
test.expect(t, model.StableID(test.baseID), foo.ID)
|
test.expect(t, model.StableID(test.baseID), foo.ID)
|
||||||
require.NotEmpty(t, foo.ModelStoreID)
|
require.NotEmpty(t, foo.ModelStoreID)
|
||||||
@ -326,11 +327,11 @@ func (suite *ModelStoreIntegrationSuite) TestPutGet_PreSetID() {
|
|||||||
|
|
||||||
returned := &fooModel{}
|
returned := &fooModel{}
|
||||||
err = suite.m.Get(suite.ctx, mdl, foo.ID, returned)
|
err = suite.m.Get(suite.ctx, mdl, foo.ID, returned)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, foo, returned)
|
assert.Equal(t, foo, returned)
|
||||||
|
|
||||||
err = suite.m.GetWithModelStoreID(suite.ctx, mdl, foo.ModelStoreID, returned)
|
err = suite.m.GetWithModelStoreID(suite.ctx, mdl, foo.ModelStoreID, returned)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, foo, returned)
|
assert.Equal(t, foo, returned)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -345,26 +346,26 @@ func (suite *ModelStoreIntegrationSuite) TestPutGet_WithTags() {
|
|||||||
"bar": "baz",
|
"bar": "baz",
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, suite.m.Put(suite.ctx, theModelType, foo))
|
aw.MustNoErr(t, suite.m.Put(suite.ctx, theModelType, foo))
|
||||||
|
|
||||||
require.NotEmpty(t, foo.ModelStoreID)
|
require.NotEmpty(t, foo.ModelStoreID)
|
||||||
require.NotEmpty(t, foo.ID)
|
require.NotEmpty(t, foo.ID)
|
||||||
|
|
||||||
returned := &fooModel{}
|
returned := &fooModel{}
|
||||||
err := suite.m.Get(suite.ctx, theModelType, foo.ID, returned)
|
err := suite.m.Get(suite.ctx, theModelType, foo.ID, returned)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, foo, returned)
|
assert.Equal(t, foo, returned)
|
||||||
|
|
||||||
err = suite.m.GetWithModelStoreID(suite.ctx, theModelType, foo.ModelStoreID, returned)
|
err = suite.m.GetWithModelStoreID(suite.ctx, theModelType, foo.ModelStoreID, returned)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, foo, returned)
|
assert.Equal(t, foo, returned)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ModelStoreIntegrationSuite) TestGet_NotFoundErrors() {
|
func (suite *ModelStoreIntegrationSuite) TestGet_NotFoundErrors() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
assert.ErrorIs(t, suite.m.Get(suite.ctx, model.BackupOpSchema, "baz", nil), data.ErrNotFound)
|
aw.ErrIs(t, suite.m.Get(suite.ctx, model.BackupOpSchema, "baz", nil), data.ErrNotFound)
|
||||||
assert.ErrorIs(
|
aw.ErrIs(
|
||||||
t, suite.m.GetWithModelStoreID(suite.ctx, model.BackupOpSchema, "baz", nil), data.ErrNotFound)
|
t, suite.m.GetWithModelStoreID(suite.ctx, model.BackupOpSchema, "baz", nil), data.ErrNotFound)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,12 +376,12 @@ func (suite *ModelStoreIntegrationSuite) TestPutGetOfTypeBadVersion() {
|
|||||||
foo := &fooModel{Bar: uuid.NewString()}
|
foo := &fooModel{Bar: uuid.NewString()}
|
||||||
|
|
||||||
err := suite.m.Put(suite.ctx, schema, foo)
|
err := suite.m.Put(suite.ctx, schema, foo)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.m.modelVersion = 42
|
suite.m.modelVersion = 42
|
||||||
|
|
||||||
ids, err := suite.m.GetIDsForType(suite.ctx, schema, nil)
|
ids, err := suite.m.GetIDsForType(suite.ctx, schema, nil)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
assert.Empty(t, ids)
|
assert.Empty(t, ids)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,22 +393,22 @@ func (suite *ModelStoreIntegrationSuite) TestPutGetOfType() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
s: model.UnknownSchema,
|
s: model.UnknownSchema,
|
||||||
check: require.Error,
|
check: aw.MustErr,
|
||||||
hasErr: true,
|
hasErr: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
s: model.BackupOpSchema,
|
s: model.BackupOpSchema,
|
||||||
check: require.NoError,
|
check: aw.MustNoErr,
|
||||||
hasErr: false,
|
hasErr: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
s: model.RestoreOpSchema,
|
s: model.RestoreOpSchema,
|
||||||
check: require.NoError,
|
check: aw.MustNoErr,
|
||||||
hasErr: false,
|
hasErr: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
s: model.BackupSchema,
|
s: model.BackupSchema,
|
||||||
check: require.NoError,
|
check: aw.MustNoErr,
|
||||||
hasErr: false,
|
hasErr: false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -426,7 +427,7 @@ func (suite *ModelStoreIntegrationSuite) TestPutGetOfType() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ids, err := suite.m.GetIDsForType(suite.ctx, test.s, nil)
|
ids, err := suite.m.GetIDsForType(suite.ctx, test.s, nil)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Len(t, ids, 1)
|
assert.Len(t, ids, 1)
|
||||||
})
|
})
|
||||||
@ -545,7 +546,7 @@ func (suite *ModelStoreIntegrationSuite) TestGetOfTypeWithTags() {
|
|||||||
|
|
||||||
// Setup the store by adding all the inputs.
|
// Setup the store by adding all the inputs.
|
||||||
for _, in := range inputs {
|
for _, in := range inputs {
|
||||||
require.NoError(suite.T(), suite.m.Put(suite.ctx, in.schema, in.dataModel))
|
aw.MustNoErr(suite.T(), suite.m.Put(suite.ctx, in.schema, in.dataModel))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check we can properly execute our tests.
|
// Check we can properly execute our tests.
|
||||||
@ -559,7 +560,7 @@ func (suite *ModelStoreIntegrationSuite) TestGetOfTypeWithTags() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ids, err := suite.m.GetIDsForType(suite.ctx, test.s, test.tags)
|
ids, err := suite.m.GetIDsForType(suite.ctx, test.s, test.tags)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.ElementsMatch(t, expected, ids)
|
assert.ElementsMatch(t, expected, ids)
|
||||||
})
|
})
|
||||||
@ -601,14 +602,14 @@ func (suite *ModelStoreIntegrationSuite) TestPutUpdate() {
|
|||||||
|
|
||||||
m := getModelStore(t, ctx)
|
m := getModelStore(t, ctx)
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, m.c.Close(ctx))
|
aw.NoErr(t, m.c.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
foo := &fooModel{Bar: uuid.NewString()}
|
foo := &fooModel{Bar: uuid.NewString()}
|
||||||
// Avoid some silly test errors from comparing nil to empty map.
|
// Avoid some silly test errors from comparing nil to empty map.
|
||||||
foo.Tags = map[string]string{}
|
foo.Tags = map[string]string{}
|
||||||
|
|
||||||
require.NoError(t, m.Put(ctx, theModelType, foo))
|
aw.MustNoErr(t, m.Put(ctx, theModelType, foo))
|
||||||
|
|
||||||
oldModelID := foo.ModelStoreID
|
oldModelID := foo.ModelStoreID
|
||||||
oldStableID := foo.ID
|
oldStableID := foo.ID
|
||||||
@ -616,19 +617,19 @@ func (suite *ModelStoreIntegrationSuite) TestPutUpdate() {
|
|||||||
|
|
||||||
test.mutator(foo)
|
test.mutator(foo)
|
||||||
|
|
||||||
require.NoError(t, m.Update(ctx, theModelType, foo))
|
aw.MustNoErr(t, m.Update(ctx, theModelType, foo))
|
||||||
assert.Equal(t, oldStableID, foo.ID)
|
assert.Equal(t, oldStableID, foo.ID)
|
||||||
// The version in the model store has not changed so we get the old
|
// The version in the model store has not changed so we get the old
|
||||||
// version back.
|
// version back.
|
||||||
assert.Equal(t, oldVersion, foo.Version)
|
assert.Equal(t, oldVersion, foo.Version)
|
||||||
|
|
||||||
returned := &fooModel{}
|
returned := &fooModel{}
|
||||||
require.NoError(
|
aw.MustNoErr(
|
||||||
t, m.GetWithModelStoreID(ctx, theModelType, foo.ModelStoreID, returned))
|
t, m.GetWithModelStoreID(ctx, theModelType, foo.ModelStoreID, returned))
|
||||||
assert.Equal(t, foo, returned)
|
assert.Equal(t, foo, returned)
|
||||||
|
|
||||||
ids, err := m.GetIDsForType(ctx, theModelType, nil)
|
ids, err := m.GetIDsForType(ctx, theModelType, nil)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.Len(t, ids, 1)
|
require.Len(t, ids, 1)
|
||||||
assert.Equal(t, globalModelVersion, ids[0].Version)
|
assert.Equal(t, globalModelVersion, ids[0].Version)
|
||||||
|
|
||||||
@ -639,7 +640,7 @@ func (suite *ModelStoreIntegrationSuite) TestPutUpdate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = m.GetWithModelStoreID(ctx, theModelType, oldModelID, nil)
|
err = m.GetWithModelStoreID(ctx, theModelType, oldModelID, nil)
|
||||||
assert.ErrorIs(t, err, data.ErrNotFound)
|
aw.ErrIs(t, err, data.ErrNotFound)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -676,16 +677,16 @@ func (suite *ModelStoreIntegrationSuite) TestPutUpdate_FailsNotMatchingPrev() {
|
|||||||
|
|
||||||
m := getModelStore(t, ctx)
|
m := getModelStore(t, ctx)
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, m.c.Close(ctx))
|
aw.NoErr(t, m.c.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
foo := &fooModel{Bar: uuid.NewString()}
|
foo := &fooModel{Bar: uuid.NewString()}
|
||||||
|
|
||||||
require.NoError(t, m.Put(ctx, startModelType, foo))
|
aw.MustNoErr(t, m.Put(ctx, startModelType, foo))
|
||||||
|
|
||||||
test.mutator(foo)
|
test.mutator(foo)
|
||||||
|
|
||||||
assert.Error(t, m.Update(ctx, test.s, foo))
|
aw.Err(t, m.Update(ctx, test.s, foo))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -696,20 +697,20 @@ func (suite *ModelStoreIntegrationSuite) TestPutDelete() {
|
|||||||
|
|
||||||
foo := &fooModel{Bar: uuid.NewString()}
|
foo := &fooModel{Bar: uuid.NewString()}
|
||||||
|
|
||||||
require.NoError(t, suite.m.Put(suite.ctx, theModelType, foo))
|
aw.MustNoErr(t, suite.m.Put(suite.ctx, theModelType, foo))
|
||||||
|
|
||||||
require.NoError(t, suite.m.Delete(suite.ctx, theModelType, foo.ID))
|
aw.MustNoErr(t, suite.m.Delete(suite.ctx, theModelType, foo.ID))
|
||||||
|
|
||||||
returned := &fooModel{}
|
returned := &fooModel{}
|
||||||
err := suite.m.GetWithModelStoreID(suite.ctx, theModelType, foo.ModelStoreID, returned)
|
err := suite.m.GetWithModelStoreID(suite.ctx, theModelType, foo.ModelStoreID, returned)
|
||||||
assert.ErrorIs(t, err, data.ErrNotFound)
|
aw.ErrIs(t, err, data.ErrNotFound)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ModelStoreIntegrationSuite) TestPutDelete_BadIDsNoop() {
|
func (suite *ModelStoreIntegrationSuite) TestPutDelete_BadIDsNoop() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
assert.NoError(t, suite.m.Delete(suite.ctx, model.BackupOpSchema, "foo"))
|
aw.NoErr(t, suite.m.Delete(suite.ctx, model.BackupOpSchema, "foo"))
|
||||||
assert.NoError(t, suite.m.DeleteWithModelStoreID(suite.ctx, "foo"))
|
aw.NoErr(t, suite.m.DeleteWithModelStoreID(suite.ctx, "foo"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------
|
// ---------------
|
||||||
@ -742,7 +743,7 @@ func (suite *ModelStoreRegressionSuite) TestFailDuringWriteSessionHasNoVisibleEf
|
|||||||
|
|
||||||
m := getModelStore(t, ctx)
|
m := getModelStore(t, ctx)
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, m.c.Close(ctx))
|
aw.NoErr(t, m.c.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
foo := &fooModel{Bar: uuid.NewString()}
|
foo := &fooModel{Bar: uuid.NewString()}
|
||||||
@ -753,7 +754,7 @@ func (suite *ModelStoreRegressionSuite) TestFailDuringWriteSessionHasNoVisibleEf
|
|||||||
|
|
||||||
theModelType := model.BackupOpSchema
|
theModelType := model.BackupOpSchema
|
||||||
|
|
||||||
require.NoError(t, m.Put(ctx, theModelType, foo))
|
aw.MustNoErr(t, m.Put(ctx, theModelType, foo))
|
||||||
|
|
||||||
newID := manifest.ID("")
|
newID := manifest.ID("")
|
||||||
err := repo.WriteSession(
|
err := repo.WriteSession(
|
||||||
@ -772,7 +773,7 @@ func (suite *ModelStoreRegressionSuite) TestFailDuringWriteSessionHasNoVisibleEf
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
innerErr = putInner(innerCtx, w, theModelType, foo, false)
|
innerErr = putInner(innerCtx, w, theModelType, foo, false)
|
||||||
require.NoError(t, innerErr)
|
aw.MustNoErr(t, innerErr)
|
||||||
|
|
||||||
newID = foo.ModelStoreID
|
newID = foo.ModelStoreID
|
||||||
|
|
||||||
@ -780,13 +781,13 @@ func (suite *ModelStoreRegressionSuite) TestFailDuringWriteSessionHasNoVisibleEf
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
assert.ErrorIs(t, err, assert.AnError)
|
aw.ErrIs(t, err, assert.AnError)
|
||||||
|
|
||||||
err = m.GetWithModelStoreID(ctx, theModelType, newID, nil)
|
err = m.GetWithModelStoreID(ctx, theModelType, newID, nil)
|
||||||
assert.ErrorIs(t, err, data.ErrNotFound)
|
aw.ErrIs(t, err, data.ErrNotFound)
|
||||||
|
|
||||||
returned := &fooModel{}
|
returned := &fooModel{}
|
||||||
require.NoError(
|
aw.MustNoErr(
|
||||||
t, m.GetWithModelStoreID(ctx, theModelType, foo.ModelStoreID, returned))
|
t, m.GetWithModelStoreID(ctx, theModelType, foo.ModelStoreID, returned))
|
||||||
assert.Equal(t, foo, returned)
|
assert.Equal(t, foo, returned)
|
||||||
}
|
}
|
||||||
@ -798,14 +799,14 @@ func openConnAndModelStore(
|
|||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
c := NewConn(st)
|
c := NewConn(st)
|
||||||
|
|
||||||
require.NoError(t, c.Initialize(ctx))
|
aw.MustNoErr(t, c.Initialize(ctx))
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
require.NoError(t, c.Close(ctx))
|
aw.MustNoErr(t, c.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
ms, err := NewModelStore(c)
|
ms, err := NewModelStore(c)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return c, ms
|
return c, ms
|
||||||
}
|
}
|
||||||
@ -815,14 +816,14 @@ func reconnectToModelStore(
|
|||||||
ctx context.Context, //revive:disable-line:context-as-argument
|
ctx context.Context, //revive:disable-line:context-as-argument
|
||||||
c *conn,
|
c *conn,
|
||||||
) *ModelStore {
|
) *ModelStore {
|
||||||
require.NoError(t, c.Connect(ctx))
|
aw.MustNoErr(t, c.Connect(ctx))
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, c.Close(ctx))
|
aw.NoErr(t, c.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
ms, err := NewModelStore(c)
|
ms, err := NewModelStore(c)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return ms
|
return ms
|
||||||
}
|
}
|
||||||
@ -840,8 +841,8 @@ func (suite *ModelStoreRegressionSuite) TestMultipleConfigs() {
|
|||||||
|
|
||||||
conn1, ms1 := openConnAndModelStore(t, ctx)
|
conn1, ms1 := openConnAndModelStore(t, ctx)
|
||||||
|
|
||||||
require.NoError(t, ms1.Put(ctx, model.BackupSchema, &backupModel))
|
aw.MustNoErr(t, ms1.Put(ctx, model.BackupSchema, &backupModel))
|
||||||
require.NoError(t, ms1.Close(ctx))
|
aw.MustNoErr(t, ms1.Close(ctx))
|
||||||
|
|
||||||
start := make(chan struct{})
|
start := make(chan struct{})
|
||||||
ready := sync.WaitGroup{}
|
ready := sync.WaitGroup{}
|
||||||
@ -871,11 +872,11 @@ func (suite *ModelStoreRegressionSuite) TestMultipleConfigs() {
|
|||||||
ready.Wait()
|
ready.Wait()
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, ms2.Close(ctx))
|
aw.NoErr(t, ms2.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, ms1.Close(ctx))
|
aw.NoErr(t, ms1.Close(ctx))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// New instance should not have model we added.
|
// New instance should not have model we added.
|
||||||
@ -886,7 +887,7 @@ func (suite *ModelStoreRegressionSuite) TestMultipleConfigs() {
|
|||||||
backupModel.ModelStoreID,
|
backupModel.ModelStoreID,
|
||||||
&gotBackup,
|
&gotBackup,
|
||||||
)
|
)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
|
|
||||||
// Old instance should still be able to access added model.
|
// Old instance should still be able to access added model.
|
||||||
gotBackup = backup.Backup{}
|
gotBackup = backup.Backup{}
|
||||||
@ -896,5 +897,5 @@ func (suite *ModelStoreRegressionSuite) TestMultipleConfigs() {
|
|||||||
backupModel.ModelStoreID,
|
backupModel.ModelStoreID,
|
||||||
&gotBackup,
|
&gotBackup,
|
||||||
)
|
)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,10 +5,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PathEncoderSuite struct {
|
type PathEncoderSuite struct {
|
||||||
@ -29,7 +29,7 @@ func (suite *PathEncoderSuite) TestEncodeDecode() {
|
|||||||
|
|
||||||
for _, e := range encoded {
|
for _, e := range encoded {
|
||||||
dec, err := decodeElement(e)
|
dec, err := decodeElement(e)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
decoded = append(decoded, dec)
|
decoded = append(decoded, dec)
|
||||||
}
|
}
|
||||||
@ -80,7 +80,7 @@ func (suite *PathEncoderSuite) TestEncodeAsPathDecode() {
|
|||||||
|
|
||||||
for _, e := range strings.Split(encoded, "/") {
|
for _, e := range strings.Split(encoded, "/") {
|
||||||
dec, err := decodeElement(e)
|
dec, err := decodeElement(e)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
decoded = append(decoded, dec)
|
decoded = append(decoded, dec)
|
||||||
}
|
}
|
||||||
@ -97,7 +97,7 @@ func FuzzEncodeDecodeSingleString(f *testing.F) {
|
|||||||
assert.False(t, strings.ContainsRune(encoded[0], '/'))
|
assert.False(t, strings.ContainsRune(encoded[0], '/'))
|
||||||
|
|
||||||
decoded, err := decodeElement(encoded[0])
|
decoded, err := decodeElement(encoded[0])
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, in, decoded)
|
assert.Equal(t, in, decoded)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -28,7 +29,7 @@ import (
|
|||||||
|
|
||||||
func makePath(t *testing.T, elements []string, isItem bool) path.Path {
|
func makePath(t *testing.T, elements []string, isItem bool) path.Path {
|
||||||
p, err := path.FromDataLayerPath(stdpath.Join(elements...), isItem)
|
p, err := path.FromDataLayerPath(stdpath.Join(elements...), isItem)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
@ -111,7 +112,7 @@ func expectFileData(
|
|||||||
}
|
}
|
||||||
|
|
||||||
r, err := f.GetReader(ctx)
|
r, err := f.GetReader(ctx)
|
||||||
if !assert.NoErrorf(t, err, "getting reader for file: %s", name) {
|
if !aw.NoErr(t, err, "getting reader for file", name) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +123,7 @@ func expectFileData(
|
|||||||
}
|
}
|
||||||
|
|
||||||
got, err := io.ReadAll(r)
|
got, err := io.ReadAll(r)
|
||||||
if !assert.NoErrorf(t, err, "reading data in file: %s", name) {
|
if !assert.NoError(t, err, "reading data in file", name) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,7 +204,7 @@ func getDirEntriesForEntry(
|
|||||||
require.True(t, ok, "entry is not a directory")
|
require.True(t, ok, "entry is not a directory")
|
||||||
|
|
||||||
entries, err := fs.GetAllEntries(ctx, d)
|
entries, err := fs.GetAllEntries(ctx, d)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return entries
|
return entries
|
||||||
}
|
}
|
||||||
@ -250,13 +251,13 @@ func (suite *VersionReadersUnitSuite) TestWriteAndRead() {
|
|||||||
name: "SameVersionSucceeds",
|
name: "SameVersionSucceeds",
|
||||||
readVersion: 42,
|
readVersion: 42,
|
||||||
writeVersion: 42,
|
writeVersion: 42,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "DifferentVersionsFail",
|
name: "DifferentVersionsFail",
|
||||||
readVersion: 7,
|
readVersion: 7,
|
||||||
writeVersion: 42,
|
writeVersion: 42,
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,7 +304,7 @@ func readAllInParts(
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
read += n
|
read += n
|
||||||
res = append(res, tmp[:n]...)
|
res = append(res, tmp[:n]...)
|
||||||
@ -361,7 +362,7 @@ func (suite *CorsoProgressUnitSuite) SetupSuite() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
suite.targetFilePath = p
|
suite.targetFilePath = p
|
||||||
suite.targetFileName = suite.targetFilePath.ToBuilder().Dir().String()
|
suite.targetFileName = suite.targetFilePath.ToBuilder().Dir().String()
|
||||||
@ -518,7 +519,7 @@ func (suite *CorsoProgressUnitSuite) TestFinishedFileCachedNoPrevPathErrors() {
|
|||||||
|
|
||||||
assert.Empty(t, cp.pending)
|
assert.Empty(t, cp.pending)
|
||||||
assert.Empty(t, bd.Details().Entries)
|
assert.Empty(t, bd.Details().Entries)
|
||||||
assert.Error(t, cp.errs.Failure())
|
aw.Err(t, cp.errs.Failure())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *CorsoProgressUnitSuite) TestFinishedFileBuildsHierarchyNewItem() {
|
func (suite *CorsoProgressUnitSuite) TestFinishedFileBuildsHierarchyNewItem() {
|
||||||
@ -724,12 +725,12 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTree() {
|
|||||||
// - Inbox
|
// - Inbox
|
||||||
// - 42 separate files
|
// - 42 separate files
|
||||||
dirTree, err := inflateDirTree(ctx, nil, nil, collections, nil, progress)
|
dirTree, err := inflateDirTree(ctx, nil, nil, collections, nil, progress)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, encodeAsPath(testTenant), dirTree.Name())
|
assert.Equal(t, encodeAsPath(testTenant), dirTree.Name())
|
||||||
|
|
||||||
entries, err := fs.GetAllEntries(ctx, dirTree)
|
entries, err := fs.GetAllEntries(ctx, dirTree)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expectDirs(t, entries, encodeElements(service), true)
|
expectDirs(t, entries, encodeElements(service), true)
|
||||||
|
|
||||||
@ -820,12 +821,12 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTree_MixedDirectory()
|
|||||||
}
|
}
|
||||||
|
|
||||||
dirTree, err := inflateDirTree(ctx, nil, nil, test.layout, nil, progress)
|
dirTree, err := inflateDirTree(ctx, nil, nil, test.layout, nil, progress)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, encodeAsPath(testTenant), dirTree.Name())
|
assert.Equal(t, encodeAsPath(testTenant), dirTree.Name())
|
||||||
|
|
||||||
entries, err := fs.GetAllEntries(ctx, dirTree)
|
entries, err := fs.GetAllEntries(ctx, dirTree)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expectDirs(t, entries, encodeElements(service), true)
|
expectDirs(t, entries, encodeElements(service), true)
|
||||||
|
|
||||||
@ -921,7 +922,7 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTree_Fails() {
|
|||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
_, err := inflateDirTree(ctx, nil, nil, test.layout, nil, nil)
|
_, err := inflateDirTree(ctx, nil, nil, test.layout, nil, nil)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1033,7 +1034,7 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTreeErrors() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, err := inflateDirTree(ctx, nil, nil, cols, nil, progress)
|
_, err := inflateDirTree(ctx, nil, nil, cols, nil, progress)
|
||||||
require.Error(t, err)
|
aw.MustErr(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1317,7 +1318,7 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTreeSingleSubtree() {
|
|||||||
nil,
|
nil,
|
||||||
progress,
|
progress,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expectTree(t, ctx, test.expected, dirTree)
|
expectTree(t, ctx, test.expected, dirTree)
|
||||||
})
|
})
|
||||||
@ -2093,7 +2094,7 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTreeMultipleSubdirecto
|
|||||||
test.inputCollections(t),
|
test.inputCollections(t),
|
||||||
test.inputExcludes,
|
test.inputExcludes,
|
||||||
progress)
|
progress)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expectTree(t, ctx, test.expected, dirTree)
|
expectTree(t, ctx, test.expected, dirTree)
|
||||||
})
|
})
|
||||||
@ -2256,7 +2257,7 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTreeSkipsDeletedSubtre
|
|||||||
collections,
|
collections,
|
||||||
nil,
|
nil,
|
||||||
progress)
|
progress)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expectTree(t, ctx, expected, dirTree)
|
expectTree(t, ctx, expected, dirTree)
|
||||||
}
|
}
|
||||||
@ -2360,7 +2361,7 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTree_HandleEmptyBase()
|
|||||||
collections,
|
collections,
|
||||||
nil,
|
nil,
|
||||||
progress)
|
progress)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expectTree(t, ctx, expected, dirTree)
|
expectTree(t, ctx, expected, dirTree)
|
||||||
}
|
}
|
||||||
@ -2611,7 +2612,7 @@ func (suite *HierarchyBuilderUnitSuite) TestBuildDirectoryTreeSelectsCorrectSubt
|
|||||||
nil,
|
nil,
|
||||||
progress,
|
progress,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expectTree(t, ctx, expected, dirTree)
|
expectTree(t, ctx, expected, dirTree)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
"github.com/alcionai/corso/src/internal/connector/mockconnector"
|
||||||
"github.com/alcionai/corso/src/internal/data"
|
"github.com/alcionai/corso/src/internal/data"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/logger"
|
"github.com/alcionai/corso/src/pkg/logger"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -69,13 +70,13 @@ func testForFiles(
|
|||||||
count++
|
count++
|
||||||
|
|
||||||
fullPath, err := c.FullPath().Append(s.UUID(), true)
|
fullPath, err := c.FullPath().Append(s.UUID(), true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expected, ok := expected[fullPath.String()]
|
expected, ok := expected[fullPath.String()]
|
||||||
require.True(t, ok, "unexpected file with path %q", fullPath)
|
require.True(t, ok, "unexpected file with path %q", fullPath)
|
||||||
|
|
||||||
buf, err := io.ReadAll(s.ToReader())
|
buf, err := io.ReadAll(s.ToReader())
|
||||||
require.NoError(t, err, "reading collection item: %s", fullPath)
|
aw.MustNoErr(t, err, "reading collection item: %s", fullPath)
|
||||||
|
|
||||||
assert.Equal(t, expected, buf, "comparing collection item: %s", fullPath)
|
assert.Equal(t, expected, buf, "comparing collection item: %s", fullPath)
|
||||||
|
|
||||||
@ -96,7 +97,7 @@ func checkSnapshotTags(
|
|||||||
snapshotID string,
|
snapshotID string,
|
||||||
) {
|
) {
|
||||||
man, err := snapshot.LoadSnapshot(ctx, rep, manifest.ID(snapshotID))
|
man, err := snapshot.LoadSnapshot(ctx, rep, manifest.ID(snapshotID))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, expectedTags, man.Tags)
|
assert.Equal(t, expectedTags, man.Tags)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +120,7 @@ func (suite *KopiaUnitSuite) SetupSuite() {
|
|||||||
),
|
),
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
suite.testPath = tmp
|
suite.testPath = tmp
|
||||||
}
|
}
|
||||||
@ -169,7 +170,7 @@ func (suite *KopiaIntegrationSuite) SetupSuite() {
|
|||||||
testUser,
|
testUser,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
suite.storePath1 = tmp
|
suite.storePath1 = tmp
|
||||||
suite.locPath1 = tmp
|
suite.locPath1 = tmp
|
||||||
@ -179,7 +180,7 @@ func (suite *KopiaIntegrationSuite) SetupSuite() {
|
|||||||
testUser,
|
testUser,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false)
|
false)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
suite.storePath2 = tmp
|
suite.storePath2 = tmp
|
||||||
suite.locPath2 = tmp
|
suite.locPath2 = tmp
|
||||||
@ -190,14 +191,14 @@ func (suite *KopiaIntegrationSuite) SetupTest() {
|
|||||||
suite.ctx, suite.flush = tester.NewContext()
|
suite.ctx, suite.flush = tester.NewContext()
|
||||||
|
|
||||||
c, err := openKopiaRepo(t, suite.ctx)
|
c, err := openKopiaRepo(t, suite.ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.w = &Wrapper{c}
|
suite.w = &Wrapper{c}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *KopiaIntegrationSuite) TearDownTest() {
|
func (suite *KopiaIntegrationSuite) TearDownTest() {
|
||||||
defer suite.flush()
|
defer suite.flush()
|
||||||
assert.NoError(suite.T(), suite.w.Close(suite.ctx))
|
aw.NoErr(suite.T(), suite.w.Close(suite.ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *KopiaIntegrationSuite) TestBackupCollections() {
|
func (suite *KopiaIntegrationSuite) TestBackupCollections() {
|
||||||
@ -277,7 +278,7 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections() {
|
|||||||
tags,
|
tags,
|
||||||
true,
|
true,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, test.expectedUploadedFiles, stats.TotalFileCount, "total files")
|
assert.Equal(t, test.expectedUploadedFiles, stats.TotalFileCount, "total files")
|
||||||
assert.Equal(t, test.expectedUploadedFiles, stats.UncachedFileCount, "uncached files")
|
assert.Equal(t, test.expectedUploadedFiles, stats.UncachedFileCount, "uncached files")
|
||||||
@ -312,7 +313,7 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections() {
|
|||||||
suite.w.c,
|
suite.w.c,
|
||||||
manifest.ID(stats.SnapshotID),
|
manifest.ID(stats.SnapshotID),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
prevSnaps = append(prevSnaps, IncrementalBase{
|
prevSnaps = append(prevSnaps, IncrementalBase{
|
||||||
Manifest: snap,
|
Manifest: snap,
|
||||||
@ -331,9 +332,9 @@ func (suite *KopiaIntegrationSuite) TestRestoreAfterCompressionChange() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
k, err := openKopiaRepo(t, ctx)
|
k, err := openKopiaRepo(t, ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
require.NoError(t, k.Compression(ctx, "s2-default"))
|
aw.MustNoErr(t, k.Compression(ctx, "s2-default"))
|
||||||
|
|
||||||
w := &Wrapper{k}
|
w := &Wrapper{k}
|
||||||
|
|
||||||
@ -352,10 +353,10 @@ func (suite *KopiaIntegrationSuite) TestRestoreAfterCompressionChange() {
|
|||||||
dc2 := mockconnector.NewMockExchangeCollection(suite.storePath2, suite.locPath2, 1)
|
dc2 := mockconnector.NewMockExchangeCollection(suite.storePath2, suite.locPath2, 1)
|
||||||
|
|
||||||
fp1, err := suite.storePath1.Append(dc1.Names[0], true)
|
fp1, err := suite.storePath1.Append(dc1.Names[0], true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
fp2, err := suite.storePath2.Append(dc2.Names[0], true)
|
fp2, err := suite.storePath2.Append(dc2.Names[0], true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
stats, _, _, err := w.BackupCollections(
|
stats, _, _, err := w.BackupCollections(
|
||||||
ctx,
|
ctx,
|
||||||
@ -365,9 +366,9 @@ func (suite *KopiaIntegrationSuite) TestRestoreAfterCompressionChange() {
|
|||||||
tags,
|
tags,
|
||||||
true,
|
true,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
require.NoError(t, k.Compression(ctx, "gzip"))
|
aw.MustNoErr(t, k.Compression(ctx, "gzip"))
|
||||||
|
|
||||||
expected := map[string][]byte{
|
expected := map[string][]byte{
|
||||||
fp1.String(): dc1.Data[0],
|
fp1.String(): dc1.Data[0],
|
||||||
@ -383,7 +384,7 @@ func (suite *KopiaIntegrationSuite) TestRestoreAfterCompressionChange() {
|
|||||||
},
|
},
|
||||||
nil,
|
nil,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, 2, len(result))
|
assert.Equal(t, 2, len(result))
|
||||||
|
|
||||||
testForFiles(t, ctx, expected, result)
|
testForFiles(t, ctx, expected, result)
|
||||||
@ -483,7 +484,7 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections_ReaderError() {
|
|||||||
tags,
|
tags,
|
||||||
true,
|
true,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.Error(t, err)
|
aw.MustErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, 0, stats.ErrorCount)
|
assert.Equal(t, 0, stats.ErrorCount)
|
||||||
assert.Equal(t, 5, stats.TotalFileCount)
|
assert.Equal(t, 5, stats.TotalFileCount)
|
||||||
@ -494,7 +495,7 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections_ReaderError() {
|
|||||||
assert.Len(t, deets.Details().Entries, 5+6)
|
assert.Len(t, deets.Details().Entries, 5+6)
|
||||||
|
|
||||||
failedPath, err := suite.storePath2.Append(testFileName4, true)
|
failedPath, err := suite.storePath2.Append(testFileName4, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
ic := i64counter{}
|
ic := i64counter{}
|
||||||
|
|
||||||
@ -507,7 +508,7 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections_ReaderError() {
|
|||||||
// Files that had an error shouldn't make a dir entry in kopia. If they do we
|
// Files that had an error shouldn't make a dir entry in kopia. If they do we
|
||||||
// may run into kopia-assisted incrementals issues because only mod time and
|
// may run into kopia-assisted incrementals issues because only mod time and
|
||||||
// not file size is checked for StreamingFiles.
|
// not file size is checked for StreamingFiles.
|
||||||
assert.ErrorIs(t, err, data.ErrNotFound, "errored file is restorable")
|
aw.ErrIs(t, err, data.ErrNotFound, "errored file is restorable")
|
||||||
}
|
}
|
||||||
|
|
||||||
type backedupFile struct {
|
type backedupFile struct {
|
||||||
@ -546,7 +547,7 @@ func (suite *KopiaIntegrationSuite) TestBackupCollectionsHandlesNoCollections()
|
|||||||
nil,
|
nil,
|
||||||
true,
|
true,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, BackupStats{}, *s)
|
assert.Equal(t, BackupStats{}, *s)
|
||||||
assert.Empty(t, d.Details().Entries)
|
assert.Empty(t, d.Details().Entries)
|
||||||
@ -586,7 +587,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) SetupSuite() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
suite.testPath1 = tmp
|
suite.testPath1 = tmp
|
||||||
|
|
||||||
@ -596,7 +597,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) SetupSuite() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
suite.testPath2 = tmp
|
suite.testPath2 = tmp
|
||||||
|
|
||||||
@ -642,7 +643,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) SetupSuite() {
|
|||||||
|
|
||||||
for _, item := range filesInfo {
|
for _, item := range filesInfo {
|
||||||
pth, err := item.parentPath.Append(item.name, true)
|
pth, err := item.parentPath.Append(item.name, true)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
mapKey := item.parentPath.String()
|
mapKey := item.parentPath.String()
|
||||||
f := &backedupFile{
|
f := &backedupFile{
|
||||||
@ -663,7 +664,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) SetupTest() {
|
|||||||
//nolint:forbidigo
|
//nolint:forbidigo
|
||||||
suite.ctx, _ = logger.SeedLevel(context.Background(), logger.Development)
|
suite.ctx, _ = logger.SeedLevel(context.Background(), logger.Development)
|
||||||
c, err := openKopiaRepo(t, suite.ctx)
|
c, err := openKopiaRepo(t, suite.ctx)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.w = &Wrapper{c}
|
suite.w = &Wrapper{c}
|
||||||
|
|
||||||
@ -704,7 +705,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) SetupTest() {
|
|||||||
tags,
|
tags,
|
||||||
false,
|
false,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.Equal(t, stats.ErrorCount, 0)
|
require.Equal(t, stats.ErrorCount, 0)
|
||||||
require.Equal(t, stats.TotalFileCount, expectedFiles)
|
require.Equal(t, stats.TotalFileCount, expectedFiles)
|
||||||
require.Equal(t, stats.TotalDirectoryCount, expectedDirs)
|
require.Equal(t, stats.TotalDirectoryCount, expectedDirs)
|
||||||
@ -717,7 +718,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) SetupTest() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *KopiaSimpleRepoIntegrationSuite) TearDownTest() {
|
func (suite *KopiaSimpleRepoIntegrationSuite) TearDownTest() {
|
||||||
assert.NoError(suite.T(), suite.w.Close(suite.ctx))
|
aw.NoErr(suite.T(), suite.w.Close(suite.ctx))
|
||||||
logger.Flush(suite.ctx)
|
logger.Flush(suite.ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -742,7 +743,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestBackupExcludeItem() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
subtreePath := subtreePathTmp.ToBuilder().Dir()
|
subtreePath := subtreePathTmp.ToBuilder().Dir()
|
||||||
|
|
||||||
@ -751,7 +752,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestBackupExcludeItem() {
|
|||||||
[]Reason{reason},
|
[]Reason{reason},
|
||||||
nil,
|
nil,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
require.Len(suite.T(), manifests, 1)
|
require.Len(suite.T(), manifests, 1)
|
||||||
require.Equal(suite.T(), suite.snapshotID, manifests[0].ID)
|
require.Equal(suite.T(), suite.snapshotID, manifests[0].ID)
|
||||||
|
|
||||||
@ -779,7 +780,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestBackupExcludeItem() {
|
|||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
backupIDCheck: require.NotEmpty,
|
backupIDCheck: require.NotEmpty,
|
||||||
restoreCheck: assert.Error,
|
restoreCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "NoExcludeItemNoChanges",
|
name: "NoExcludeItemNoChanges",
|
||||||
@ -806,7 +807,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestBackupExcludeItem() {
|
|||||||
return []data.BackupCollection{c}
|
return []data.BackupCollection{c}
|
||||||
},
|
},
|
||||||
backupIDCheck: require.NotEmpty,
|
backupIDCheck: require.NotEmpty,
|
||||||
restoreCheck: assert.NoError,
|
restoreCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -836,7 +837,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestBackupExcludeItem() {
|
|||||||
tags,
|
tags,
|
||||||
true,
|
true,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, test.expectedCachedItems, stats.CachedFileCount)
|
assert.Equal(t, test.expectedCachedItems, stats.CachedFileCount)
|
||||||
assert.Equal(t, test.expectedUncachedItems, stats.UncachedFileCount)
|
assert.Equal(t, test.expectedUncachedItems, stats.UncachedFileCount)
|
||||||
|
|
||||||
@ -868,7 +869,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
// Expected items is generated during the test by looking up paths in the
|
// Expected items is generated during the test by looking up paths in the
|
||||||
// suite's map of files. Files that are not in the suite's map are assumed to
|
// suite's map of files. Files that are not in the suite's map are assumed to
|
||||||
@ -885,7 +886,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
|||||||
suite.files[suite.testPath1.String()][0].itemPath,
|
suite.files[suite.testPath1.String()][0].itemPath,
|
||||||
},
|
},
|
||||||
expectedCollections: 1,
|
expectedCollections: 1,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "MultipleItemsSameCollection",
|
name: "MultipleItemsSameCollection",
|
||||||
@ -894,7 +895,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
|||||||
suite.files[suite.testPath1.String()][1].itemPath,
|
suite.files[suite.testPath1.String()][1].itemPath,
|
||||||
},
|
},
|
||||||
expectedCollections: 1,
|
expectedCollections: 1,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "MultipleItemsDifferentCollections",
|
name: "MultipleItemsDifferentCollections",
|
||||||
@ -903,7 +904,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
|||||||
suite.files[suite.testPath2.String()][0].itemPath,
|
suite.files[suite.testPath2.String()][0].itemPath,
|
||||||
},
|
},
|
||||||
expectedCollections: 2,
|
expectedCollections: 2,
|
||||||
expectedErr: assert.NoError,
|
expectedErr: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "TargetNotAFile",
|
name: "TargetNotAFile",
|
||||||
@ -913,7 +914,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
|||||||
suite.files[suite.testPath2.String()][0].itemPath,
|
suite.files[suite.testPath2.String()][0].itemPath,
|
||||||
},
|
},
|
||||||
expectedCollections: 0,
|
expectedCollections: 0,
|
||||||
expectedErr: assert.Error,
|
expectedErr: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "NonExistentFile",
|
name: "NonExistentFile",
|
||||||
@ -923,7 +924,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
|||||||
suite.files[suite.testPath2.String()][0].itemPath,
|
suite.files[suite.testPath2.String()][0].itemPath,
|
||||||
},
|
},
|
||||||
expectedCollections: 0,
|
expectedCollections: 0,
|
||||||
expectedErr: assert.Error,
|
expectedErr: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -971,7 +972,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
|||||||
|
|
||||||
func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems_Errors() {
|
func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems_Errors() {
|
||||||
itemPath, err := suite.testPath1.Append(testFileName, true)
|
itemPath, err := suite.testPath1.Append(testFileName, true)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
name string
|
name string
|
||||||
@ -1005,7 +1006,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems_Errors()
|
|||||||
test.paths,
|
test.paths,
|
||||||
nil,
|
nil,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
assert.Empty(t, c)
|
assert.Empty(t, c)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -1014,7 +1015,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems_Errors()
|
|||||||
func (suite *KopiaSimpleRepoIntegrationSuite) TestDeleteSnapshot() {
|
func (suite *KopiaSimpleRepoIntegrationSuite) TestDeleteSnapshot() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
assert.NoError(t, suite.w.DeleteSnapshot(suite.ctx, string(suite.snapshotID)))
|
aw.NoErr(t, suite.w.DeleteSnapshot(suite.ctx, string(suite.snapshotID)))
|
||||||
|
|
||||||
// assert the deletion worked
|
// assert the deletion worked
|
||||||
itemPath := suite.files[suite.testPath1.String()][0].itemPath
|
itemPath := suite.files[suite.testPath1.String()][0].itemPath
|
||||||
@ -1026,7 +1027,7 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestDeleteSnapshot() {
|
|||||||
[]path.Path{itemPath},
|
[]path.Path{itemPath},
|
||||||
&ic,
|
&ic,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.Error(t, err, "snapshot should be deleted")
|
aw.Err(t, err, "snapshot should be deleted")
|
||||||
assert.Empty(t, c)
|
assert.Empty(t, c)
|
||||||
assert.Zero(t, ic.i)
|
assert.Zero(t, ic.i)
|
||||||
}
|
}
|
||||||
@ -1040,12 +1041,12 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestDeleteSnapshot_BadIDs() {
|
|||||||
{
|
{
|
||||||
name: "no id",
|
name: "no id",
|
||||||
snapshotID: "",
|
snapshotID: "",
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "unknown id",
|
name: "unknown id",
|
||||||
snapshotID: uuid.NewString(),
|
snapshotID: uuid.NewString(),
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ObserveProgressUnitSuite struct {
|
type ObserveProgressUnitSuite struct {
|
||||||
@ -71,7 +72,7 @@ func (suite *ObserveProgressUnitSuite) TestItemProgress() {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.Equal(t, 25, n)
|
assert.Equal(t, 25, n)
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/kopia"
|
"github.com/alcionai/corso/src/internal/kopia"
|
||||||
"github.com/alcionai/corso/src/internal/model"
|
"github.com/alcionai/corso/src/internal/model"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/backup"
|
"github.com/alcionai/corso/src/pkg/backup"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
@ -62,14 +63,14 @@ func prepNewTestBackupOp(
|
|||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
k := kopia.NewConn(st)
|
k := kopia.NewConn(st)
|
||||||
require.NoError(t, k.Initialize(ctx))
|
aw.MustNoErr(t, k.Initialize(ctx))
|
||||||
|
|
||||||
// kopiaRef comes with a count of 1 and Wrapper bumps it again so safe
|
// kopiaRef comes with a count of 1 and Wrapper bumps it again so safe
|
||||||
// to close here.
|
// to close here.
|
||||||
closer := func() { k.Close(ctx) }
|
closer := func() { k.Close(ctx) }
|
||||||
|
|
||||||
kw, err := kopia.NewWrapper(k)
|
kw, err := kopia.NewWrapper(k)
|
||||||
if !assert.NoError(t, err) {
|
if !aw.NoErr(t, err) {
|
||||||
closer()
|
closer()
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
@ -80,7 +81,7 @@ func prepNewTestBackupOp(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ms, err := kopia.NewModelStore(k)
|
ms, err := kopia.NewModelStore(k)
|
||||||
if !assert.NoError(t, err) {
|
if !aw.NoErr(t, err) {
|
||||||
closer()
|
closer()
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
@ -122,7 +123,7 @@ func newTestBackupOp(
|
|||||||
opts.ToggleFeatures = featureToggles
|
opts.ToggleFeatures = featureToggles
|
||||||
|
|
||||||
bo, err := NewBackupOperation(ctx, opts, kw, sw, acct, sel, bus)
|
bo, err := NewBackupOperation(ctx, opts, kw, sw, acct, sel, bus)
|
||||||
if !assert.NoError(t, err) {
|
if !aw.NoErr(t, err) {
|
||||||
closer()
|
closer()
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
@ -138,7 +139,7 @@ func runAndCheckBackup(
|
|||||||
mb *evmock.Bus,
|
mb *evmock.Bus,
|
||||||
) {
|
) {
|
||||||
//revive:enable:context-as-argument
|
//revive:enable:context-as-argument
|
||||||
require.NoError(t, bo.Run(ctx))
|
aw.MustNoErr(t, bo.Run(ctx))
|
||||||
require.NotEmpty(t, bo.Results, "the backup had non-zero results")
|
require.NotEmpty(t, bo.Results, "the backup had non-zero results")
|
||||||
require.NotEmpty(t, bo.Results.BackupID, "the backup generated an ID")
|
require.NotEmpty(t, bo.Results.BackupID, "the backup generated an ID")
|
||||||
require.Equalf(
|
require.Equalf(
|
||||||
@ -153,7 +154,7 @@ func runAndCheckBackup(
|
|||||||
assert.Less(t, int64(0), bo.Results.BytesRead, "bytes read")
|
assert.Less(t, int64(0), bo.Results.BytesRead, "bytes read")
|
||||||
assert.Less(t, int64(0), bo.Results.BytesUploaded, "bytes uploaded")
|
assert.Less(t, int64(0), bo.Results.BytesUploaded, "bytes uploaded")
|
||||||
assert.Equal(t, 1, bo.Results.ResourceOwners, "count of resource owners")
|
assert.Equal(t, 1, bo.Results.ResourceOwners, "count of resource owners")
|
||||||
assert.NoError(t, bo.Errors.Failure(), "incremental non-recoverable error")
|
aw.NoErr(t, bo.Errors.Failure(), "incremental non-recoverable error")
|
||||||
assert.Empty(t, bo.Errors.Recovered(), "incremental recoverable/iteration errors")
|
assert.Empty(t, bo.Errors.Recovered(), "incremental recoverable/iteration errors")
|
||||||
assert.Equal(t, 1, mb.TimesCalled[events.BackupStart], "backup-start events")
|
assert.Equal(t, 1, mb.TimesCalled[events.BackupStart], "backup-start events")
|
||||||
assert.Equal(t, 1, mb.TimesCalled[events.BackupEnd], "backup-end events")
|
assert.Equal(t, 1, mb.TimesCalled[events.BackupEnd], "backup-end events")
|
||||||
@ -188,7 +189,7 @@ func checkBackupIsInManifests(
|
|||||||
)
|
)
|
||||||
|
|
||||||
mans, err := kw.FetchPrevSnapshotManifests(ctx, reasons, tags)
|
mans, err := kw.FetchPrevSnapshotManifests(ctx, reasons, tags)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
for _, man := range mans {
|
for _, man := range mans {
|
||||||
bID, ok := man.GetTag(kopia.TagBackupID)
|
bID, ok := man.GetTag(kopia.TagBackupID)
|
||||||
@ -224,7 +225,7 @@ func checkMetadataFilesExist(
|
|||||||
bup := &backup.Backup{}
|
bup := &backup.Backup{}
|
||||||
|
|
||||||
err := ms.Get(ctx, model.BackupSchema, backupID, bup)
|
err := ms.Get(ctx, model.BackupSchema, backupID, bup)
|
||||||
if !assert.NoError(t, err) {
|
if !aw.NoErr(t, err) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,12 +236,12 @@ func checkMetadataFilesExist(
|
|||||||
p, err := path.Builder{}.
|
p, err := path.Builder{}.
|
||||||
Append(fName).
|
Append(fName).
|
||||||
ToServiceCategoryMetadataPath(tenant, user, service, category, true)
|
ToServiceCategoryMetadataPath(tenant, user, service, category, true)
|
||||||
if !assert.NoError(t, err, "bad metadata path") {
|
if !aw.NoErr(t, err, "bad metadata path") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
dir, err := p.Dir()
|
dir, err := p.Dir()
|
||||||
if !assert.NoError(t, err, "parent path") {
|
if !aw.NoErr(t, err, "parent path") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +250,7 @@ func checkMetadataFilesExist(
|
|||||||
}
|
}
|
||||||
|
|
||||||
cols, err := kw.RestoreMultipleItems(ctx, bup.SnapshotID, paths, nil, fault.New(true))
|
cols, err := kw.RestoreMultipleItems(ctx, bup.SnapshotID, paths, nil, fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
for _, col := range cols {
|
for _, col := range cols {
|
||||||
itemNames := []string{}
|
itemNames := []string{}
|
||||||
@ -346,7 +347,7 @@ func generateContainerOfItems(
|
|||||||
control.Options{RestorePermissions: true},
|
control.Options{RestorePermissions: true},
|
||||||
dataColls,
|
dataColls,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return deets
|
return deets
|
||||||
}
|
}
|
||||||
@ -438,7 +439,7 @@ func toDataLayerPath(
|
|||||||
err = errors.Errorf("unknown service %s", service.String())
|
err = errors.Errorf("unknown service %s", service.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
@ -483,9 +484,9 @@ func (suite *BackupOpIntegrationSuite) TestNewBackupOperation() {
|
|||||||
targets []string
|
targets []string
|
||||||
errCheck assert.ErrorAssertionFunc
|
errCheck assert.ErrorAssertionFunc
|
||||||
}{
|
}{
|
||||||
{"good", control.Options{}, kw, sw, acct, nil, assert.NoError},
|
{"good", control.Options{}, kw, sw, acct, nil, aw.NoErr},
|
||||||
{"missing kopia", control.Options{}, nil, sw, acct, nil, assert.Error},
|
{"missing kopia", control.Options{}, nil, sw, acct, nil, aw.Err},
|
||||||
{"missing modelstore", control.Options{}, kw, nil, acct, nil, assert.Error},
|
{"missing modelstore", control.Options{}, kw, nil, acct, nil, aw.Err},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
@ -575,7 +576,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchange() {
|
|||||||
defer closer()
|
defer closer()
|
||||||
|
|
||||||
m365, err := acct.M365Config()
|
m365, err := acct.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
// run the tests
|
// run the tests
|
||||||
runAndCheckBackup(t, ctx, &bo, mb)
|
runAndCheckBackup(t, ctx, &bo, mb)
|
||||||
@ -624,7 +625,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchange() {
|
|||||||
assert.Greater(t, bo.Results.BytesRead, incBO.Results.BytesRead, "incremental bytes read")
|
assert.Greater(t, bo.Results.BytesRead, incBO.Results.BytesRead, "incremental bytes read")
|
||||||
assert.Greater(t, bo.Results.BytesUploaded, incBO.Results.BytesUploaded, "incremental bytes uploaded")
|
assert.Greater(t, bo.Results.BytesUploaded, incBO.Results.BytesUploaded, "incremental bytes uploaded")
|
||||||
assert.Equal(t, bo.Results.ResourceOwners, incBO.Results.ResourceOwners, "incremental backup resource owner")
|
assert.Equal(t, bo.Results.ResourceOwners, incBO.Results.ResourceOwners, "incremental backup resource owner")
|
||||||
assert.NoError(t, incBO.Errors.Failure(), "incremental non-recoverable error")
|
aw.NoErr(t, incBO.Errors.Failure(), "incremental non-recoverable error")
|
||||||
assert.Empty(t, incBO.Errors.Recovered(), "count incremental recoverable/iteration errors")
|
assert.Empty(t, incBO.Errors.Recovered(), "count incremental recoverable/iteration errors")
|
||||||
assert.Equal(t, 1, incMB.TimesCalled[events.BackupStart], "incremental backup-start events")
|
assert.Equal(t, 1, incMB.TimesCalled[events.BackupStart], "incremental backup-start events")
|
||||||
assert.Equal(t, 1, incMB.TimesCalled[events.BackupEnd], "incremental backup-end events")
|
assert.Equal(t, 1, incMB.TimesCalled[events.BackupEnd], "incremental backup-end events")
|
||||||
@ -663,7 +664,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
m365, err := acct.M365Config()
|
m365, err := acct.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
gc, err := connector.NewGraphConnector(
|
gc, err := connector.NewGraphConnector(
|
||||||
ctx,
|
ctx,
|
||||||
@ -671,10 +672,10 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
acct,
|
acct,
|
||||||
connector.Users,
|
connector.Users,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
ac, err := api.NewClient(m365)
|
ac, err := api.NewClient(m365)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
// generate 3 new folders with two items each.
|
// generate 3 new folders with two items each.
|
||||||
// Only the first two folders will be part of the initial backup and
|
// Only the first two folders will be part of the initial backup and
|
||||||
@ -767,11 +768,11 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
Credentials: m365,
|
Credentials: m365,
|
||||||
}
|
}
|
||||||
cr, err := exchange.PopulateExchangeContainerResolver(ctx, qp, fault.New(true))
|
cr, err := exchange.PopulateExchangeContainerResolver(ctx, qp, fault.New(true))
|
||||||
require.NoError(t, err, "populating %s container resolver", category)
|
aw.MustNoErr(t, err, "populating %s container resolver", category)
|
||||||
|
|
||||||
for destName, dest := range gen.dests {
|
for destName, dest := range gen.dests {
|
||||||
p, err := path.FromDataLayerPath(dest.deets.Entries[0].RepoRef, true)
|
p, err := path.FromDataLayerPath(dest.deets.Entries[0].RepoRef, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
id, ok := cr.PathInCache(p.Folder(false))
|
id, ok := cr.PathInCache(p.Folder(false))
|
||||||
require.True(t, ok, "dir %s found in %s cache", p.Folder(false), category)
|
require.True(t, ok, "dir %s found in %s cache", p.Folder(false), category)
|
||||||
@ -831,7 +832,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
MailFoldersById(fromContainer).
|
MailFoldersById(fromContainer).
|
||||||
Move().
|
Move().
|
||||||
Post(ctx, body, nil)
|
Post(ctx, body, nil)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
},
|
},
|
||||||
itemsRead: 0, // zero because we don't count container reads
|
itemsRead: 0, // zero because we don't count container reads
|
||||||
itemsWritten: 2,
|
itemsWritten: 2,
|
||||||
@ -844,17 +845,17 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
|
|
||||||
switch category {
|
switch category {
|
||||||
case path.EmailCategory:
|
case path.EmailCategory:
|
||||||
require.NoError(
|
aw.MustNoErr(
|
||||||
t,
|
t,
|
||||||
ac.Mail().DeleteContainer(ctx, suite.user, containerID),
|
ac.Mail().DeleteContainer(ctx, suite.user, containerID),
|
||||||
"deleting an email folder")
|
"deleting an email folder")
|
||||||
case path.ContactsCategory:
|
case path.ContactsCategory:
|
||||||
require.NoError(
|
aw.MustNoErr(
|
||||||
t,
|
t,
|
||||||
ac.Contacts().DeleteContainer(ctx, suite.user, containerID),
|
ac.Contacts().DeleteContainer(ctx, suite.user, containerID),
|
||||||
"deleting a contacts folder")
|
"deleting a contacts folder")
|
||||||
case path.EventsCategory:
|
case path.EventsCategory:
|
||||||
require.NoError(
|
aw.MustNoErr(
|
||||||
t,
|
t,
|
||||||
ac.Events().DeleteContainer(ctx, suite.user, containerID),
|
ac.Events().DeleteContainer(ctx, suite.user, containerID),
|
||||||
"deleting a calendar")
|
"deleting a calendar")
|
||||||
@ -886,10 +887,10 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
Credentials: m365,
|
Credentials: m365,
|
||||||
}
|
}
|
||||||
cr, err := exchange.PopulateExchangeContainerResolver(ctx, qp, fault.New(true))
|
cr, err := exchange.PopulateExchangeContainerResolver(ctx, qp, fault.New(true))
|
||||||
require.NoError(t, err, "populating %s container resolver", category)
|
aw.MustNoErr(t, err, "populating %s container resolver", category)
|
||||||
|
|
||||||
p, err := path.FromDataLayerPath(deets.Entries[0].RepoRef, true)
|
p, err := path.FromDataLayerPath(deets.Entries[0].RepoRef, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
id, ok := cr.PathInCache(p.Folder(false))
|
id, ok := cr.PathInCache(p.Folder(false))
|
||||||
require.True(t, ok, "dir %s found in %s cache", p.Folder(false), category)
|
require.True(t, ok, "dir %s found in %s cache", p.Folder(false), category)
|
||||||
@ -920,31 +921,31 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
cmf := cli.MailFoldersById(containerID)
|
cmf := cli.MailFoldersById(containerID)
|
||||||
|
|
||||||
body, err := cmf.Get(ctx, nil)
|
body, err := cmf.Get(ctx, nil)
|
||||||
require.NoError(t, err, "getting mail folder")
|
aw.MustNoErr(t, err, "getting mail folder")
|
||||||
|
|
||||||
body.SetDisplayName(&containerRename)
|
body.SetDisplayName(&containerRename)
|
||||||
_, err = cmf.Patch(ctx, body, nil)
|
_, err = cmf.Patch(ctx, body, nil)
|
||||||
require.NoError(t, err, "updating mail folder name")
|
aw.MustNoErr(t, err, "updating mail folder name")
|
||||||
|
|
||||||
case path.ContactsCategory:
|
case path.ContactsCategory:
|
||||||
ccf := cli.ContactFoldersById(containerID)
|
ccf := cli.ContactFoldersById(containerID)
|
||||||
|
|
||||||
body, err := ccf.Get(ctx, nil)
|
body, err := ccf.Get(ctx, nil)
|
||||||
require.NoError(t, err, "getting contact folder")
|
aw.MustNoErr(t, err, "getting contact folder")
|
||||||
|
|
||||||
body.SetDisplayName(&containerRename)
|
body.SetDisplayName(&containerRename)
|
||||||
_, err = ccf.Patch(ctx, body, nil)
|
_, err = ccf.Patch(ctx, body, nil)
|
||||||
require.NoError(t, err, "updating contact folder name")
|
aw.MustNoErr(t, err, "updating contact folder name")
|
||||||
|
|
||||||
case path.EventsCategory:
|
case path.EventsCategory:
|
||||||
cbi := cli.CalendarsById(containerID)
|
cbi := cli.CalendarsById(containerID)
|
||||||
|
|
||||||
body, err := cbi.Get(ctx, nil)
|
body, err := cbi.Get(ctx, nil)
|
||||||
require.NoError(t, err, "getting calendar")
|
aw.MustNoErr(t, err, "getting calendar")
|
||||||
|
|
||||||
body.SetName(&containerRename)
|
body.SetName(&containerRename)
|
||||||
_, err = cbi.Patch(ctx, body, nil)
|
_, err = cbi.Patch(ctx, body, nil)
|
||||||
require.NoError(t, err, "updating calendar name")
|
aw.MustNoErr(t, err, "updating calendar name")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -962,26 +963,26 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
case path.EmailCategory:
|
case path.EmailCategory:
|
||||||
_, itemData := generateItemData(t, category, suite.user, mailDBF)
|
_, itemData := generateItemData(t, category, suite.user, mailDBF)
|
||||||
body, err := support.CreateMessageFromBytes(itemData)
|
body, err := support.CreateMessageFromBytes(itemData)
|
||||||
require.NoError(t, err, "transforming mail bytes to messageable")
|
aw.MustNoErr(t, err, "transforming mail bytes to messageable")
|
||||||
|
|
||||||
_, err = cli.MailFoldersById(containerID).Messages().Post(ctx, body, nil)
|
_, err = cli.MailFoldersById(containerID).Messages().Post(ctx, body, nil)
|
||||||
require.NoError(t, err, "posting email item")
|
aw.MustNoErr(t, err, "posting email item")
|
||||||
|
|
||||||
case path.ContactsCategory:
|
case path.ContactsCategory:
|
||||||
_, itemData := generateItemData(t, category, suite.user, contactDBF)
|
_, itemData := generateItemData(t, category, suite.user, contactDBF)
|
||||||
body, err := support.CreateContactFromBytes(itemData)
|
body, err := support.CreateContactFromBytes(itemData)
|
||||||
require.NoError(t, err, "transforming contact bytes to contactable")
|
aw.MustNoErr(t, err, "transforming contact bytes to contactable")
|
||||||
|
|
||||||
_, err = cli.ContactFoldersById(containerID).Contacts().Post(ctx, body, nil)
|
_, err = cli.ContactFoldersById(containerID).Contacts().Post(ctx, body, nil)
|
||||||
require.NoError(t, err, "posting contact item")
|
aw.MustNoErr(t, err, "posting contact item")
|
||||||
|
|
||||||
case path.EventsCategory:
|
case path.EventsCategory:
|
||||||
_, itemData := generateItemData(t, category, suite.user, eventDBF)
|
_, itemData := generateItemData(t, category, suite.user, eventDBF)
|
||||||
body, err := support.CreateEventFromBytes(itemData)
|
body, err := support.CreateEventFromBytes(itemData)
|
||||||
require.NoError(t, err, "transforming event bytes to eventable")
|
aw.MustNoErr(t, err, "transforming event bytes to eventable")
|
||||||
|
|
||||||
_, err = cli.CalendarsById(containerID).Events().Post(ctx, body, nil)
|
_, err = cli.CalendarsById(containerID).Events().Post(ctx, body, nil)
|
||||||
require.NoError(t, err, "posting events item")
|
aw.MustNoErr(t, err, "posting events item")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -998,27 +999,27 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
switch category {
|
switch category {
|
||||||
case path.EmailCategory:
|
case path.EmailCategory:
|
||||||
ids, _, _, err := ac.Mail().GetAddedAndRemovedItemIDs(ctx, suite.user, containerID, "")
|
ids, _, _, err := ac.Mail().GetAddedAndRemovedItemIDs(ctx, suite.user, containerID, "")
|
||||||
require.NoError(t, err, "getting message ids")
|
aw.MustNoErr(t, err, "getting message ids")
|
||||||
require.NotEmpty(t, ids, "message ids in folder")
|
require.NotEmpty(t, ids, "message ids in folder")
|
||||||
|
|
||||||
err = cli.MessagesById(ids[0]).Delete(ctx, nil)
|
err = cli.MessagesById(ids[0]).Delete(ctx, nil)
|
||||||
require.NoError(t, err, "deleting email item")
|
aw.MustNoErr(t, err, "deleting email item")
|
||||||
|
|
||||||
case path.ContactsCategory:
|
case path.ContactsCategory:
|
||||||
ids, _, _, err := ac.Contacts().GetAddedAndRemovedItemIDs(ctx, suite.user, containerID, "")
|
ids, _, _, err := ac.Contacts().GetAddedAndRemovedItemIDs(ctx, suite.user, containerID, "")
|
||||||
require.NoError(t, err, "getting contact ids")
|
aw.MustNoErr(t, err, "getting contact ids")
|
||||||
require.NotEmpty(t, ids, "contact ids in folder")
|
require.NotEmpty(t, ids, "contact ids in folder")
|
||||||
|
|
||||||
err = cli.ContactsById(ids[0]).Delete(ctx, nil)
|
err = cli.ContactsById(ids[0]).Delete(ctx, nil)
|
||||||
require.NoError(t, err, "deleting contact item")
|
aw.MustNoErr(t, err, "deleting contact item")
|
||||||
|
|
||||||
case path.EventsCategory:
|
case path.EventsCategory:
|
||||||
ids, _, _, err := ac.Events().GetAddedAndRemovedItemIDs(ctx, suite.user, containerID, "")
|
ids, _, _, err := ac.Events().GetAddedAndRemovedItemIDs(ctx, suite.user, containerID, "")
|
||||||
require.NoError(t, err, "getting event ids")
|
aw.MustNoErr(t, err, "getting event ids")
|
||||||
require.NotEmpty(t, ids, "event ids in folder")
|
require.NotEmpty(t, ids, "event ids in folder")
|
||||||
|
|
||||||
err = cli.CalendarsById(ids[0]).Delete(ctx, nil)
|
err = cli.CalendarsById(ids[0]).Delete(ctx, nil)
|
||||||
require.NoError(t, err, "deleting calendar")
|
aw.MustNoErr(t, err, "deleting calendar")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1034,7 +1035,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
test.updateUserData(t)
|
test.updateUserData(t)
|
||||||
require.NoError(t, incBO.Run(ctx))
|
aw.MustNoErr(t, incBO.Run(ctx))
|
||||||
checkBackupIsInManifests(t, ctx, kw, &incBO, sel.Selector, suite.user, maps.Keys(categories)...)
|
checkBackupIsInManifests(t, ctx, kw, &incBO, sel.Selector, suite.user, maps.Keys(categories)...)
|
||||||
checkMetadataFilesExist(
|
checkMetadataFilesExist(
|
||||||
t,
|
t,
|
||||||
@ -1052,7 +1053,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_exchangeIncrementals() {
|
|||||||
// +4 on read/writes to account for metadata: 1 delta and 1 path for each type.
|
// +4 on read/writes to account for metadata: 1 delta and 1 path for each type.
|
||||||
assert.Equal(t, test.itemsWritten+4, incBO.Results.ItemsWritten, "incremental items written")
|
assert.Equal(t, test.itemsWritten+4, incBO.Results.ItemsWritten, "incremental items written")
|
||||||
assert.Equal(t, test.itemsRead+4, incBO.Results.ItemsRead, "incremental items read")
|
assert.Equal(t, test.itemsRead+4, incBO.Results.ItemsRead, "incremental items read")
|
||||||
assert.NoError(t, incBO.Errors.Failure(), "incremental non-recoverable error")
|
aw.NoErr(t, incBO.Errors.Failure(), "incremental non-recoverable error")
|
||||||
assert.Empty(t, incBO.Errors.Recovered(), "incremental recoverable/iteration errors")
|
assert.Empty(t, incBO.Errors.Recovered(), "incremental recoverable/iteration errors")
|
||||||
assert.Equal(t, 1, incMB.TimesCalled[events.BackupStart], "incremental backup-start events")
|
assert.Equal(t, 1, incMB.TimesCalled[events.BackupStart], "incremental backup-start events")
|
||||||
assert.Equal(t, 1, incMB.TimesCalled[events.BackupEnd], "incremental backup-end events")
|
assert.Equal(t, 1, incMB.TimesCalled[events.BackupEnd], "incremental backup-end events")
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import (
|
|||||||
"github.com/kopia/kopia/snapshot"
|
"github.com/kopia/kopia/snapshot"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/connector/support"
|
"github.com/alcionai/corso/src/internal/connector/support"
|
||||||
@ -19,6 +18,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/kopia"
|
"github.com/alcionai/corso/src/internal/kopia"
|
||||||
"github.com/alcionai/corso/src/internal/model"
|
"github.com/alcionai/corso/src/internal/model"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/backup"
|
"github.com/alcionai/corso/src/pkg/backup"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
@ -213,7 +213,7 @@ func makeMetadataBasePath(
|
|||||||
service,
|
service,
|
||||||
category,
|
category,
|
||||||
false)
|
false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
@ -234,7 +234,7 @@ func makeMetadataPath(
|
|||||||
service,
|
service,
|
||||||
category,
|
category,
|
||||||
true)
|
true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
@ -269,7 +269,7 @@ func makePath(t *testing.T, elements []string, isItem bool) path.Path {
|
|||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
p, err := path.FromDataLayerPath(stdpath.Join(elements...), isItem)
|
p, err := path.FromDataLayerPath(stdpath.Join(elements...), isItem)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
@ -314,7 +314,7 @@ func makeDetailsEntry(
|
|||||||
|
|
||||||
case path.OneDriveService:
|
case path.OneDriveService:
|
||||||
parent, err := path.GetDriveFolderPath(p)
|
parent, err := path.GetDriveFolderPath(p)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
res.OneDrive = &details.OneDriveInfo{
|
res.OneDrive = &details.OneDriveInfo{
|
||||||
ItemType: details.OneDriveItem,
|
ItemType: details.OneDriveItem,
|
||||||
@ -383,7 +383,7 @@ func (suite *BackupOpSuite) TestBackupOperation_PersistResults() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
expectStatus: Completed,
|
expectStatus: Completed,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
stats: backupStats{
|
stats: backupStats{
|
||||||
resourceCount: 1,
|
resourceCount: 1,
|
||||||
k: &kopia.BackupStats{
|
k: &kopia.BackupStats{
|
||||||
@ -398,7 +398,7 @@ func (suite *BackupOpSuite) TestBackupOperation_PersistResults() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
expectStatus: Failed,
|
expectStatus: Failed,
|
||||||
expectErr: assert.Error,
|
expectErr: aw.Err,
|
||||||
fail: assert.AnError,
|
fail: assert.AnError,
|
||||||
stats: backupStats{
|
stats: backupStats{
|
||||||
k: &kopia.BackupStats{},
|
k: &kopia.BackupStats{},
|
||||||
@ -407,7 +407,7 @@ func (suite *BackupOpSuite) TestBackupOperation_PersistResults() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
expectStatus: NoData,
|
expectStatus: NoData,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
stats: backupStats{
|
stats: backupStats{
|
||||||
k: &kopia.BackupStats{},
|
k: &kopia.BackupStats{},
|
||||||
gc: &support.ConnectorOperationStatus{},
|
gc: &support.ConnectorOperationStatus{},
|
||||||
@ -427,7 +427,7 @@ func (suite *BackupOpSuite) TestBackupOperation_PersistResults() {
|
|||||||
acct,
|
acct,
|
||||||
sel,
|
sel,
|
||||||
evmock.NewBus())
|
evmock.NewBus())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
op.Errors.Fail(test.fail)
|
op.Errors.Fail(test.fail)
|
||||||
|
|
||||||
@ -713,7 +713,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
itemParents1, err := path.GetDriveFolderPath(itemPath1)
|
itemParents1, err := path.GetDriveFolderPath(itemPath1)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
name string
|
name string
|
||||||
@ -727,14 +727,14 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "NilShortRefsFromPrevBackup",
|
name: "NilShortRefsFromPrevBackup",
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
// Use empty slice so we don't error out on nil != empty.
|
// Use empty slice so we don't error out on nil != empty.
|
||||||
expectedEntries: []*details.DetailsEntry{},
|
expectedEntries: []*details.DetailsEntry{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "EmptyShortRefsFromPrevBackup",
|
name: "EmptyShortRefsFromPrevBackup",
|
||||||
inputShortRefsFromPrevBackup: map[string]kopia.PrevRefs{},
|
inputShortRefsFromPrevBackup: map[string]kopia.PrevRefs{},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
// Use empty slice so we don't error out on nil != empty.
|
// Use empty slice so we don't error out on nil != empty.
|
||||||
expectedEntries: []*details.DetailsEntry{},
|
expectedEntries: []*details.DetailsEntry{},
|
||||||
},
|
},
|
||||||
@ -754,7 +754,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "DetailsIDNotFound",
|
name: "DetailsIDNotFound",
|
||||||
@ -780,7 +780,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
DetailsID: "foo",
|
DetailsID: "foo",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "BaseMissingItems",
|
name: "BaseMissingItems",
|
||||||
@ -814,7 +814,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "TooManyItems",
|
name: "TooManyItems",
|
||||||
@ -850,7 +850,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "BadBaseRepoRef",
|
name: "BadBaseRepoRef",
|
||||||
@ -899,7 +899,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "BadOneDrivePath",
|
name: "BadOneDrivePath",
|
||||||
@ -939,7 +939,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "ItemMerged",
|
name: "ItemMerged",
|
||||||
@ -969,7 +969,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedEntries: []*details.DetailsEntry{
|
expectedEntries: []*details.DetailsEntry{
|
||||||
makeDetailsEntry(suite.T(), itemPath1, locationPath1, 42, false),
|
makeDetailsEntry(suite.T(), itemPath1, locationPath1, 42, false),
|
||||||
},
|
},
|
||||||
@ -1001,7 +1001,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedEntries: []*details.DetailsEntry{
|
expectedEntries: []*details.DetailsEntry{
|
||||||
makeDetailsEntry(suite.T(), itemPath1, nil, 42, false),
|
makeDetailsEntry(suite.T(), itemPath1, nil, 42, false),
|
||||||
},
|
},
|
||||||
@ -1034,7 +1034,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedEntries: []*details.DetailsEntry{
|
expectedEntries: []*details.DetailsEntry{
|
||||||
makeDetailsEntry(suite.T(), itemPath1, itemPath1, 42, false),
|
makeDetailsEntry(suite.T(), itemPath1, itemPath1, 42, false),
|
||||||
},
|
},
|
||||||
@ -1068,7 +1068,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedEntries: []*details.DetailsEntry{
|
expectedEntries: []*details.DetailsEntry{
|
||||||
makeDetailsEntry(suite.T(), itemPath1, locationPath1, 42, false),
|
makeDetailsEntry(suite.T(), itemPath1, locationPath1, 42, false),
|
||||||
},
|
},
|
||||||
@ -1101,7 +1101,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedEntries: []*details.DetailsEntry{
|
expectedEntries: []*details.DetailsEntry{
|
||||||
makeDetailsEntry(suite.T(), itemPath2, locationPath2, 42, true),
|
makeDetailsEntry(suite.T(), itemPath2, locationPath2, 42, true),
|
||||||
},
|
},
|
||||||
@ -1155,7 +1155,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedEntries: []*details.DetailsEntry{
|
expectedEntries: []*details.DetailsEntry{
|
||||||
makeDetailsEntry(suite.T(), itemPath1, locationPath1, 42, false),
|
makeDetailsEntry(suite.T(), itemPath1, locationPath1, 42, false),
|
||||||
makeDetailsEntry(suite.T(), itemPath3, locationPath3, 37, false),
|
makeDetailsEntry(suite.T(), itemPath3, locationPath3, 37, false),
|
||||||
@ -1204,7 +1204,7 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsItems() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedEntries: []*details.DetailsEntry{
|
expectedEntries: []*details.DetailsEntry{
|
||||||
makeDetailsEntry(suite.T(), itemPath1, locationPath1, 42, false),
|
makeDetailsEntry(suite.T(), itemPath1, locationPath1, 42, false),
|
||||||
},
|
},
|
||||||
@ -1342,6 +1342,6 @@ func (suite *BackupOpSuite) TestBackupOperation_MergeBackupDetails_AddsFolders()
|
|||||||
inputToMerge,
|
inputToMerge,
|
||||||
&deets,
|
&deets,
|
||||||
fault.New(true))
|
fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
assert.ElementsMatch(t, expectedEntries, deets.Details().Entries)
|
assert.ElementsMatch(t, expectedEntries, deets.Details().Entries)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/kopia"
|
"github.com/alcionai/corso/src/internal/kopia"
|
||||||
"github.com/alcionai/corso/src/internal/model"
|
"github.com/alcionai/corso/src/internal/model"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup"
|
"github.com/alcionai/corso/src/pkg/backup"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -117,7 +118,7 @@ func (suite *OperationsManifestsUnitSuite) TestCollectMetadata() {
|
|||||||
|
|
||||||
for _, f := range files {
|
for _, f := range files {
|
||||||
p, err := emailPath.Append(f, true)
|
p, err := emailPath.Append(f, true)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
ps = append(ps, p)
|
ps = append(ps, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +141,7 @@ func (suite *OperationsManifestsUnitSuite) TestCollectMetadata() {
|
|||||||
|
|
||||||
for _, f := range files {
|
for _, f := range files {
|
||||||
p, err := emailPath.Append(f, true)
|
p, err := emailPath.Append(f, true)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
ps = append(ps, p)
|
ps = append(ps, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,10 +169,10 @@ func (suite *OperationsManifestsUnitSuite) TestCollectMetadata() {
|
|||||||
|
|
||||||
for _, f := range files {
|
for _, f := range files {
|
||||||
p, err := emailPath.Append(f, true)
|
p, err := emailPath.Append(f, true)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
ps = append(ps, p)
|
ps = append(ps, p)
|
||||||
p, err = contactPath.Append(f, true)
|
p, err = contactPath.Append(f, true)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
ps = append(ps, p)
|
ps = append(ps, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,10 +200,10 @@ func (suite *OperationsManifestsUnitSuite) TestCollectMetadata() {
|
|||||||
|
|
||||||
for _, f := range files {
|
for _, f := range files {
|
||||||
p, err := emailPath.Append(f, true)
|
p, err := emailPath.Append(f, true)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
ps = append(ps, p)
|
ps = append(ps, p)
|
||||||
p, err = contactPath.Append(f, true)
|
p, err = contactPath.Append(f, true)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
ps = append(ps, p)
|
ps = append(ps, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +228,7 @@ func (suite *OperationsManifestsUnitSuite) TestCollectMetadata() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, err := collectMetadata(ctx, &mr, man, test.fileNames, tid, fault.New(true))
|
_, err := collectMetadata(ctx, &mr, man, test.fileNames, tid, fault.New(true))
|
||||||
assert.ErrorIs(t, err, test.expectErr)
|
aw.ErrIs(t, err, test.expectErr)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -254,7 +255,7 @@ func (suite *OperationsManifestsUnitSuite) TestVerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "one incomplete manifest",
|
name: "one incomplete manifest",
|
||||||
@ -263,7 +264,7 @@ func (suite *OperationsManifestsUnitSuite) TestVerifyDistinctBases() {
|
|||||||
Manifest: &snapshot.Manifest{IncompleteReason: "ir"},
|
Manifest: &snapshot.Manifest{IncompleteReason: "ir"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "one manifest, multiple reasons",
|
name: "one manifest, multiple reasons",
|
||||||
@ -284,7 +285,7 @@ func (suite *OperationsManifestsUnitSuite) TestVerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "one manifest, duplicate reasons",
|
name: "one manifest, duplicate reasons",
|
||||||
@ -305,7 +306,7 @@ func (suite *OperationsManifestsUnitSuite) TestVerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "two manifests, non-overlapping reasons",
|
name: "two manifests, non-overlapping reasons",
|
||||||
@ -331,7 +332,7 @@ func (suite *OperationsManifestsUnitSuite) TestVerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "two manifests, overlapping reasons",
|
name: "two manifests, overlapping reasons",
|
||||||
@ -357,7 +358,7 @@ func (suite *OperationsManifestsUnitSuite) TestVerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "two manifests, overlapping reasons, one snapshot incomplete",
|
name: "two manifests, overlapping reasons, one snapshot incomplete",
|
||||||
@ -383,7 +384,7 @@ func (suite *OperationsManifestsUnitSuite) TestVerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -446,7 +447,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: false,
|
getMeta: false,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.False,
|
assertB: assert.False,
|
||||||
expectDCS: nil,
|
expectDCS: nil,
|
||||||
},
|
},
|
||||||
@ -459,7 +460,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: false,
|
getMeta: false,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.False,
|
assertB: assert.False,
|
||||||
expectDCS: nil,
|
expectDCS: nil,
|
||||||
},
|
},
|
||||||
@ -472,7 +473,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: false,
|
getMeta: false,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.False,
|
assertB: assert.False,
|
||||||
expectDCS: nil,
|
expectDCS: nil,
|
||||||
},
|
},
|
||||||
@ -485,7 +486,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.Error,
|
assertErr: aw.Err,
|
||||||
assertB: assert.False,
|
assertB: assert.False,
|
||||||
expectDCS: nil,
|
expectDCS: nil,
|
||||||
},
|
},
|
||||||
@ -501,7 +502,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.NoError, // No error, even though verify failed.
|
assertErr: aw.NoErr, // No error, even though verify failed.
|
||||||
assertB: assert.False,
|
assertB: assert.False,
|
||||||
expectDCS: nil,
|
expectDCS: nil,
|
||||||
},
|
},
|
||||||
@ -514,7 +515,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.True,
|
assertB: assert.True,
|
||||||
expectDCS: nil,
|
expectDCS: nil,
|
||||||
},
|
},
|
||||||
@ -530,7 +531,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.True,
|
assertB: assert.True,
|
||||||
expectDCS: nil,
|
expectDCS: nil,
|
||||||
},
|
},
|
||||||
@ -545,7 +546,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.Error,
|
assertErr: aw.Err,
|
||||||
assertB: assert.False,
|
assertB: assert.False,
|
||||||
expectNilMans: true,
|
expectNilMans: true,
|
||||||
},
|
},
|
||||||
@ -558,7 +559,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{},
|
gdi: mockGetDetailsIDer{},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.False,
|
assertB: assert.False,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -576,7 +577,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.True,
|
assertB: assert.True,
|
||||||
expectDCS: []mockColl{{id: "id_coll"}},
|
expectDCS: []mockColl{{id: "id_coll"}},
|
||||||
},
|
},
|
||||||
@ -591,7 +592,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.True,
|
assertB: assert.True,
|
||||||
expectDCS: []mockColl{{id: "id_coll"}},
|
expectDCS: []mockColl{{id: "id_coll"}},
|
||||||
},
|
},
|
||||||
@ -610,7 +611,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.NoError,
|
assertErr: aw.NoErr,
|
||||||
assertB: assert.True,
|
assertB: assert.True,
|
||||||
expectDCS: []mockColl{
|
expectDCS: []mockColl{
|
||||||
{id: "mail_coll"},
|
{id: "mail_coll"},
|
||||||
@ -626,7 +627,7 @@ func (suite *OperationsManifestsUnitSuite) TestProduceManifestsAndMetadata() {
|
|||||||
gdi: mockGetDetailsIDer{detailsID: did},
|
gdi: mockGetDetailsIDer{detailsID: did},
|
||||||
reasons: []kopia.Reason{},
|
reasons: []kopia.Reason{},
|
||||||
getMeta: true,
|
getMeta: true,
|
||||||
assertErr: assert.Error,
|
assertErr: aw.Err,
|
||||||
assertB: assert.False,
|
assertB: assert.False,
|
||||||
expectDCS: nil,
|
expectDCS: nil,
|
||||||
expectNilMans: true,
|
expectNilMans: true,
|
||||||
@ -733,7 +734,7 @@ func (suite *BackupManifestSuite) TestBackupOperation_VerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "MultipleManifestsDistinctReason",
|
name: "MultipleManifestsDistinctReason",
|
||||||
@ -763,7 +764,7 @@ func (suite *BackupManifestSuite) TestBackupOperation_VerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "MultipleManifestsSameReason",
|
name: "MultipleManifestsSameReason",
|
||||||
@ -793,7 +794,7 @@ func (suite *BackupManifestSuite) TestBackupOperation_VerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "MultipleManifestsSameReasonOneIncomplete",
|
name: "MultipleManifestsSameReasonOneIncomplete",
|
||||||
@ -824,7 +825,7 @@ func (suite *BackupManifestSuite) TestBackupOperation_VerifyDistinctBases() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -952,7 +953,7 @@ func (suite *BackupManifestSuite) TestBackupOperation_CollectMetadata() {
|
|||||||
mr := &mockRestorer{}
|
mr := &mockRestorer{}
|
||||||
|
|
||||||
_, err := collectMetadata(ctx, mr, test.inputMan, test.inputFiles, tenant, fault.New(true))
|
_, err := collectMetadata(ctx, mr, test.inputMan, test.inputFiles, tenant, fault.New(true))
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
checkPaths(t, test.expected, mr.gotPaths)
|
checkPaths(t, test.expected, mr.gotPaths)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/events"
|
"github.com/alcionai/corso/src/internal/events"
|
||||||
"github.com/alcionai/corso/src/internal/kopia"
|
"github.com/alcionai/corso/src/internal/kopia"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/control"
|
"github.com/alcionai/corso/src/pkg/control"
|
||||||
"github.com/alcionai/corso/src/pkg/store"
|
"github.com/alcionai/corso/src/pkg/store"
|
||||||
)
|
)
|
||||||
@ -37,9 +38,9 @@ func (suite *OperationSuite) TestOperation_Validate() {
|
|||||||
sw *store.Wrapper
|
sw *store.Wrapper
|
||||||
errCheck assert.ErrorAssertionFunc
|
errCheck assert.ErrorAssertionFunc
|
||||||
}{
|
}{
|
||||||
{"good", kwStub, swStub, assert.NoError},
|
{"good", kwStub, swStub, aw.NoErr},
|
||||||
{"missing kopia wrapper", nil, swStub, assert.Error},
|
{"missing kopia wrapper", nil, swStub, aw.Err},
|
||||||
{"missing store wrapper", kwStub, nil, assert.Error},
|
{"missing store wrapper", kwStub, nil, aw.Err},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import (
|
|||||||
"github.com/alcionai/corso/src/internal/model"
|
"github.com/alcionai/corso/src/internal/model"
|
||||||
"github.com/alcionai/corso/src/internal/stats"
|
"github.com/alcionai/corso/src/internal/stats"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/selectors"
|
"github.com/alcionai/corso/src/pkg/selectors"
|
||||||
@ -57,7 +58,7 @@ func (suite *RestoreOpSuite) TestRestoreOperation_PersistResults() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
expectStatus: Completed,
|
expectStatus: Completed,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
stats: restoreStats{
|
stats: restoreStats{
|
||||||
resourceCount: 1,
|
resourceCount: 1,
|
||||||
bytesRead: &stats.ByteCounter{
|
bytesRead: &stats.ByteCounter{
|
||||||
@ -78,7 +79,7 @@ func (suite *RestoreOpSuite) TestRestoreOperation_PersistResults() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
expectStatus: Failed,
|
expectStatus: Failed,
|
||||||
expectErr: assert.Error,
|
expectErr: aw.Err,
|
||||||
fail: assert.AnError,
|
fail: assert.AnError,
|
||||||
stats: restoreStats{
|
stats: restoreStats{
|
||||||
bytesRead: &stats.ByteCounter{},
|
bytesRead: &stats.ByteCounter{},
|
||||||
@ -87,7 +88,7 @@ func (suite *RestoreOpSuite) TestRestoreOperation_PersistResults() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
expectStatus: NoData,
|
expectStatus: NoData,
|
||||||
expectErr: assert.NoError,
|
expectErr: aw.NoErr,
|
||||||
stats: restoreStats{
|
stats: restoreStats{
|
||||||
bytesRead: &stats.ByteCounter{},
|
bytesRead: &stats.ByteCounter{},
|
||||||
cs: []data.RestoreCollection{},
|
cs: []data.RestoreCollection{},
|
||||||
@ -107,7 +108,7 @@ func (suite *RestoreOpSuite) TestRestoreOperation_PersistResults() {
|
|||||||
selectors.Selector{DiscreteOwner: "test"},
|
selectors.Selector{DiscreteOwner: "test"},
|
||||||
dest,
|
dest,
|
||||||
evmock.NewBus())
|
evmock.NewBus())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
op.Errors.Fail(test.fail)
|
op.Errors.Fail(test.fail)
|
||||||
|
|
||||||
@ -163,19 +164,19 @@ func (suite *RestoreOpIntegrationSuite) SetupSuite() {
|
|||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
k := kopia.NewConn(st)
|
k := kopia.NewConn(st)
|
||||||
require.NoError(t, k.Initialize(ctx))
|
aw.MustNoErr(t, k.Initialize(ctx))
|
||||||
|
|
||||||
suite.kopiaCloser = func(ctx context.Context) {
|
suite.kopiaCloser = func(ctx context.Context) {
|
||||||
k.Close(ctx)
|
k.Close(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
kw, err := kopia.NewWrapper(k)
|
kw, err := kopia.NewWrapper(k)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.kw = kw
|
suite.kw = kw
|
||||||
|
|
||||||
ms, err := kopia.NewModelStore(k)
|
ms, err := kopia.NewModelStore(k)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
suite.ms = ms
|
suite.ms = ms
|
||||||
|
|
||||||
@ -200,8 +201,8 @@ func (suite *RestoreOpIntegrationSuite) SetupSuite() {
|
|||||||
acct,
|
acct,
|
||||||
bsel.Selector,
|
bsel.Selector,
|
||||||
evmock.NewBus())
|
evmock.NewBus())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NoError(t, bo.Run(ctx))
|
aw.MustNoErr(t, bo.Run(ctx))
|
||||||
require.NotEmpty(t, bo.Results.BackupID)
|
require.NotEmpty(t, bo.Results.BackupID)
|
||||||
|
|
||||||
suite.backupID = bo.Results.BackupID
|
suite.backupID = bo.Results.BackupID
|
||||||
@ -242,9 +243,9 @@ func (suite *RestoreOpIntegrationSuite) TestNewRestoreOperation() {
|
|||||||
targets []string
|
targets []string
|
||||||
errCheck assert.ErrorAssertionFunc
|
errCheck assert.ErrorAssertionFunc
|
||||||
}{
|
}{
|
||||||
{"good", control.Options{}, kw, sw, acct, nil, assert.NoError},
|
{"good", control.Options{}, kw, sw, acct, nil, aw.NoErr},
|
||||||
{"missing kopia", control.Options{}, nil, sw, acct, nil, assert.Error},
|
{"missing kopia", control.Options{}, nil, sw, acct, nil, aw.Err},
|
||||||
{"missing modelstore", control.Options{}, kw, nil, acct, nil, assert.Error},
|
{"missing modelstore", control.Options{}, kw, nil, acct, nil, aw.Err},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
@ -289,11 +290,11 @@ func (suite *RestoreOpIntegrationSuite) TestRestore_Run() {
|
|||||||
rsel.Selector,
|
rsel.Selector,
|
||||||
dest,
|
dest,
|
||||||
mb)
|
mb)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
ds, err := ro.Run(ctx)
|
ds, err := ro.Run(ctx)
|
||||||
|
|
||||||
require.NoError(t, err, "restoreOp.Run()")
|
aw.MustNoErr(t, err, "restoreOp.Run()")
|
||||||
require.NotEmpty(t, ro.Results, "restoreOp results")
|
require.NotEmpty(t, ro.Results, "restoreOp results")
|
||||||
require.NotNil(t, ds, "restored details")
|
require.NotNil(t, ds, "restored details")
|
||||||
assert.Equal(t, ro.Status, Completed, "restoreOp status")
|
assert.Equal(t, ro.Status, Completed, "restoreOp status")
|
||||||
@ -302,7 +303,7 @@ func (suite *RestoreOpIntegrationSuite) TestRestore_Run() {
|
|||||||
assert.Less(t, 0, ro.Results.ItemsWritten, "restored items written")
|
assert.Less(t, 0, ro.Results.ItemsWritten, "restored items written")
|
||||||
assert.Less(t, int64(0), ro.Results.BytesRead, "bytes read")
|
assert.Less(t, int64(0), ro.Results.BytesRead, "bytes read")
|
||||||
assert.Equal(t, 1, ro.Results.ResourceOwners, "resource Owners")
|
assert.Equal(t, 1, ro.Results.ResourceOwners, "resource Owners")
|
||||||
assert.NoError(t, ro.Errors.Failure(), "non-recoverable error")
|
aw.NoErr(t, ro.Errors.Failure(), "non-recoverable error")
|
||||||
assert.Empty(t, ro.Errors.Recovered(), "recoverable errors")
|
assert.Empty(t, ro.Errors.Recovered(), "recoverable errors")
|
||||||
assert.Equal(t, suite.numItems, ro.Results.ItemsWritten, "backup and restore wrote the same num of items")
|
assert.Equal(t, suite.numItems, ro.Results.ItemsWritten, "backup and restore wrote the same num of items")
|
||||||
assert.Equal(t, 1, mb.TimesCalled[events.RestoreStart], "restore-start events")
|
assert.Equal(t, 1, mb.TimesCalled[events.RestoreStart], "restore-start events")
|
||||||
@ -331,10 +332,10 @@ func (suite *RestoreOpIntegrationSuite) TestRestore_Run_ErrorNoResults() {
|
|||||||
rsel.Selector,
|
rsel.Selector,
|
||||||
dest,
|
dest,
|
||||||
mb)
|
mb)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
ds, err := ro.Run(ctx)
|
ds, err := ro.Run(ctx)
|
||||||
require.Error(t, err, "restoreOp.Run() should have errored")
|
aw.MustErr(t, err, "restoreOp.Run() should have errored")
|
||||||
require.Nil(t, ds, "restoreOp.Run() should not produce details")
|
require.Nil(t, ds, "restoreOp.Run() should not produce details")
|
||||||
assert.Zero(t, ro.Results.ResourceOwners, "resource owners")
|
assert.Zero(t, ro.Results.ResourceOwners, "resource owners")
|
||||||
assert.Zero(t, ro.Results.BytesRead, "bytes read")
|
assert.Zero(t, ro.Results.BytesRead, "bytes read")
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/kopia"
|
"github.com/alcionai/corso/src/internal/kopia"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -33,12 +34,12 @@ func (suite *StreamStoreIntegrationSuite) TestDetails() {
|
|||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
k := kopia.NewConn(st)
|
k := kopia.NewConn(st)
|
||||||
require.NoError(t, k.Initialize(ctx))
|
aw.MustNoErr(t, k.Initialize(ctx))
|
||||||
|
|
||||||
defer k.Close(ctx)
|
defer k.Close(ctx)
|
||||||
|
|
||||||
kw, err := kopia.NewWrapper(k)
|
kw, err := kopia.NewWrapper(k)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
defer kw.Close(ctx)
|
defer kw.Close(ctx)
|
||||||
|
|
||||||
@ -55,11 +56,11 @@ func (suite *StreamStoreIntegrationSuite) TestDetails() {
|
|||||||
ss := New(kw, "tenant", path.ExchangeService)
|
ss := New(kw, "tenant", path.ExchangeService)
|
||||||
|
|
||||||
id, err := ss.WriteBackupDetails(ctx, deets, fault.New(true))
|
id, err := ss.WriteBackupDetails(ctx, deets, fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotNil(t, id)
|
require.NotNil(t, id)
|
||||||
|
|
||||||
readDeets, err := ss.ReadBackupDetails(ctx, id, fault.New(true))
|
readDeets, err := ss.ReadBackupDetails(ctx, id, fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotNil(t, readDeets)
|
require.NotNil(t, readDeets)
|
||||||
|
|
||||||
assert.Equal(t, len(deets.Entries), len(readDeets.Entries))
|
assert.Equal(t, len(deets.Entries), len(readDeets.Entries))
|
||||||
|
|||||||
@ -3,8 +3,7 @@ package tester
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/credentials"
|
"github.com/alcionai/corso/src/pkg/credentials"
|
||||||
)
|
)
|
||||||
@ -18,7 +17,7 @@ var M365AcctCredEnvs = []string{
|
|||||||
// variables used for integration tests that use Graph Connector.
|
// variables used for integration tests that use Graph Connector.
|
||||||
func NewM365Account(t *testing.T) account.Account {
|
func NewM365Account(t *testing.T) account.Account {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "configuring m365 account from test configuration")
|
aw.MustNoErr(t, err, "configuring m365 account from test configuration")
|
||||||
|
|
||||||
acc, err := account.NewAccount(
|
acc, err := account.NewAccount(
|
||||||
account.ProviderM365,
|
account.ProviderM365,
|
||||||
@ -27,7 +26,7 @@ func NewM365Account(t *testing.T) account.Account {
|
|||||||
AzureTenantID: cfg[TestCfgAzureTenantID],
|
AzureTenantID: cfg[TestCfgAzureTenantID],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
require.NoError(t, err, "initializing account")
|
aw.MustNoErr(t, err, "initializing account")
|
||||||
|
|
||||||
return acc
|
return acc
|
||||||
}
|
}
|
||||||
@ -43,7 +42,7 @@ func NewMockM365Account(t *testing.T) account.Account {
|
|||||||
AzureTenantID: "09876",
|
AzureTenantID: "09876",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
require.NoError(t, err, "initializing mock account")
|
aw.MustNoErr(t, err, "initializing mock account")
|
||||||
|
|
||||||
return acc
|
return acc
|
||||||
}
|
}
|
||||||
|
|||||||
83
src/internal/tester/aw/assert_wrapper.go
Normal file
83
src/internal/tester/aw/assert_wrapper.go
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
package aw
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/alcionai/clues"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
// this file is subfoldered to avoid cyclic dependencies
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// require wrappers
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// MustErr wraps require.Error()
|
||||||
|
func MustErr(t require.TestingT, err error, etc ...any) {
|
||||||
|
require.Error(t, err, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MustNoErr wraps require.NoError()
|
||||||
|
func MustNoErr(t require.TestingT, err error, etc ...any) {
|
||||||
|
require.NoError(t, err, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MustErrIs wraps require.ErrorIs()
|
||||||
|
func MustErrIs(t require.TestingT, err, target error, etc ...any) {
|
||||||
|
require.ErrorIs(t, err, target, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MustNotErrIs wraps require.NotErrorIs()
|
||||||
|
func MustNotErrIs(t require.TestingT, err, target error, etc ...any) {
|
||||||
|
require.NotErrorIs(t, err, target, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MustErrAs wraps require.ErrorAs()
|
||||||
|
func MustErrAs(t require.TestingT, err, target error, etc ...any) {
|
||||||
|
require.ErrorAs(t, err, target, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// assert wrappers
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Err wraps assert.Error()
|
||||||
|
func Err(t assert.TestingT, err error, etc ...any) bool {
|
||||||
|
return assert.Error(t, err, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// NoErr wraps assert.NoError()
|
||||||
|
func NoErr(t assert.TestingT, err error, etc ...any) bool {
|
||||||
|
return assert.NoError(t, err, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrIs wraps assert.ErrorIs()
|
||||||
|
func ErrIs(t assert.TestingT, err, target error, etc ...any) bool {
|
||||||
|
return assert.ErrorIs(t, err, target, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotErrIs wraps assert.NotErrorIs()
|
||||||
|
func NotErrIs(t assert.TestingT, err, target error, etc ...any) bool {
|
||||||
|
return assert.NotErrorIs(t, err, target, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrAs wraps assert.ErrorAs()
|
||||||
|
func ErrAs(t assert.TestingT, err, target error, etc ...any) bool {
|
||||||
|
return assert.ErrorAs(t, err, target, addClues(err, etc))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// helpers
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
func addClues(err error, a []any) []any {
|
||||||
|
if err == nil {
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
|
||||||
|
if a == nil {
|
||||||
|
a = make([]any, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
return append(a, clues.InErr(err).Slice()...)
|
||||||
|
}
|
||||||
@ -8,9 +8,9 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"golang.org/x/exp/maps"
|
"golang.org/x/exp/maps"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ func readTestConfig() (map[string]string, error) {
|
|||||||
// Returns a filepath string pointing to the location of the temp file.
|
// Returns a filepath string pointing to the location of the temp file.
|
||||||
func MakeTempTestConfigClone(t *testing.T, overrides map[string]string) (*viper.Viper, string) {
|
func MakeTempTestConfigClone(t *testing.T, overrides map[string]string) (*viper.Viper, string) {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "reading tester config")
|
aw.MustNoErr(t, err, "reading tester config")
|
||||||
|
|
||||||
fName := filepath.Base(os.Getenv(EnvCorsoTestConfigFilePath))
|
fName := filepath.Base(os.Getenv(EnvCorsoTestConfigFilePath))
|
||||||
if len(fName) == 0 || fName == "." || fName == "/" {
|
if len(fName) == 0 || fName == "." || fName == "/" {
|
||||||
@ -170,7 +170,7 @@ func MakeTempTestConfigClone(t *testing.T, overrides map[string]string) (*viper.
|
|||||||
tDirFp := filepath.Join(tDir, fName)
|
tDirFp := filepath.Join(tDir, fName)
|
||||||
|
|
||||||
_, err = os.Create(tDirFp)
|
_, err = os.Create(tDirFp)
|
||||||
require.NoError(t, err, "creating temp test dir")
|
aw.MustNoErr(t, err, "creating temp test dir")
|
||||||
|
|
||||||
ext := filepath.Ext(fName)
|
ext := filepath.Ext(fName)
|
||||||
vpr := viper.New()
|
vpr := viper.New()
|
||||||
@ -188,7 +188,7 @@ func MakeTempTestConfigClone(t *testing.T, overrides map[string]string) (*viper.
|
|||||||
vpr.Set(k, v)
|
vpr.Set(k, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, vpr.WriteConfig(), "writing temp dir viper config file")
|
aw.MustNoErr(t, vpr.WriteConfig(), "writing temp dir viper config file")
|
||||||
|
|
||||||
return vpr, tDirFp
|
return vpr, tDirFp
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
func LoadAFile(t *testing.T, fileName string) []byte {
|
func LoadAFile(t *testing.T, fileName string) []byte {
|
||||||
@ -13,7 +13,7 @@ func LoadAFile(t *testing.T, fileName string) []byte {
|
|||||||
bytes, err := os.ReadFile(fileName)
|
bytes, err := os.ReadFile(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
f, err := os.Open(fileName)
|
f, err := os.Open(fileName)
|
||||||
require.NoError(t, err, "opening file: "+fileName)
|
aw.MustNoErr(t, err, "opening file: "+fileName)
|
||||||
|
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ func LoadAFile(t *testing.T, fileName string) []byte {
|
|||||||
buffer = append(buffer, temp...)
|
buffer = append(buffer, temp...)
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, reader.Err(), "reading file: "+fileName)
|
aw.MustNoErr(t, reader.Err(), "reading file: "+fileName)
|
||||||
|
|
||||||
return buffer
|
return buffer
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
// M365TenantID returns a tenantID string representing the azureTenantID described
|
// M365TenantID returns a tenantID string representing the azureTenantID described
|
||||||
@ -14,7 +14,7 @@ import (
|
|||||||
// last-attempt fallback that will only work on alcion's testing org.
|
// last-attempt fallback that will only work on alcion's testing org.
|
||||||
func M365TenantID(t *testing.T) string {
|
func M365TenantID(t *testing.T) string {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "retrieving m365 user id from test configuration")
|
aw.MustNoErr(t, err, "retrieving m365 user id from test configuration")
|
||||||
|
|
||||||
return cfg[TestCfgAzureTenantID]
|
return cfg[TestCfgAzureTenantID]
|
||||||
}
|
}
|
||||||
@ -25,7 +25,7 @@ func M365TenantID(t *testing.T) string {
|
|||||||
// last-attempt fallback that will only work on alcion's testing org.
|
// last-attempt fallback that will only work on alcion's testing org.
|
||||||
func M365UserID(t *testing.T) string {
|
func M365UserID(t *testing.T) string {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "retrieving m365 user id from test configuration")
|
aw.MustNoErr(t, err, "retrieving m365 user id from test configuration")
|
||||||
|
|
||||||
return cfg[TestCfgUserID]
|
return cfg[TestCfgUserID]
|
||||||
}
|
}
|
||||||
@ -37,7 +37,7 @@ func M365UserID(t *testing.T) string {
|
|||||||
// testing org.
|
// testing org.
|
||||||
func SecondaryM365UserID(t *testing.T) string {
|
func SecondaryM365UserID(t *testing.T) string {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "retrieving secondary m365 user id from test configuration")
|
aw.MustNoErr(t, err, "retrieving secondary m365 user id from test configuration")
|
||||||
|
|
||||||
return cfg[TestCfgSecondaryUserID]
|
return cfg[TestCfgSecondaryUserID]
|
||||||
}
|
}
|
||||||
@ -49,7 +49,7 @@ func SecondaryM365UserID(t *testing.T) string {
|
|||||||
// testing org.
|
// testing org.
|
||||||
func LoadTestM365SiteID(t *testing.T) string {
|
func LoadTestM365SiteID(t *testing.T) string {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "retrieving load test m365 site id from test configuration")
|
aw.MustNoErr(t, err, "retrieving load test m365 site id from test configuration")
|
||||||
|
|
||||||
// TODO: load test site id, not standard test site id
|
// TODO: load test site id, not standard test site id
|
||||||
return cfg[TestCfgSiteID]
|
return cfg[TestCfgSiteID]
|
||||||
@ -62,7 +62,7 @@ func LoadTestM365SiteID(t *testing.T) string {
|
|||||||
// testing org.
|
// testing org.
|
||||||
func LoadTestM365UserID(t *testing.T) string {
|
func LoadTestM365UserID(t *testing.T) string {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "retrieving load test m365 user id from test configuration")
|
aw.MustNoErr(t, err, "retrieving load test m365 user id from test configuration")
|
||||||
|
|
||||||
return cfg[TestCfgLoadTestUserID]
|
return cfg[TestCfgLoadTestUserID]
|
||||||
}
|
}
|
||||||
@ -72,7 +72,7 @@ func LoadTestM365UserID(t *testing.T) string {
|
|||||||
// the delimeter must be a |.
|
// the delimeter must be a |.
|
||||||
func LoadTestM365OrgSites(t *testing.T) []string {
|
func LoadTestM365OrgSites(t *testing.T) []string {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "retrieving load test m365 org sites from test configuration")
|
aw.MustNoErr(t, err, "retrieving load test m365 org sites from test configuration")
|
||||||
|
|
||||||
// TODO: proper handling of site slice input.
|
// TODO: proper handling of site slice input.
|
||||||
// sites := cfg[TestCfgLoadTestOrgSites]
|
// sites := cfg[TestCfgLoadTestOrgSites]
|
||||||
@ -92,7 +92,7 @@ func LoadTestM365OrgSites(t *testing.T) []string {
|
|||||||
// the delimeter may be either a , or |.
|
// the delimeter may be either a , or |.
|
||||||
func LoadTestM365OrgUsers(t *testing.T) []string {
|
func LoadTestM365OrgUsers(t *testing.T) []string {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "retrieving load test m365 org users from test configuration")
|
aw.MustNoErr(t, err, "retrieving load test m365 org users from test configuration")
|
||||||
|
|
||||||
users := cfg[TestCfgLoadTestOrgUsers]
|
users := cfg[TestCfgLoadTestOrgUsers]
|
||||||
users = strings.TrimPrefix(users, "[")
|
users = strings.TrimPrefix(users, "[")
|
||||||
@ -128,7 +128,7 @@ func LoadTestM365OrgUsers(t *testing.T) []string {
|
|||||||
// last-attempt fallback that will only work on alcion's testing org.
|
// last-attempt fallback that will only work on alcion's testing org.
|
||||||
func M365SiteID(t *testing.T) string {
|
func M365SiteID(t *testing.T) string {
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "retrieving m365 site id from test configuration")
|
aw.MustNoErr(t, err, "retrieving m365 site id from test configuration")
|
||||||
|
|
||||||
return cfg[TestCfgSiteID]
|
return cfg[TestCfgSiteID]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,8 +3,7 @@ package tester
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/pkg/credentials"
|
"github.com/alcionai/corso/src/pkg/credentials"
|
||||||
"github.com/alcionai/corso/src/pkg/storage"
|
"github.com/alcionai/corso/src/pkg/storage"
|
||||||
)
|
)
|
||||||
@ -27,7 +26,7 @@ func NewPrefixedS3Storage(t *testing.T) storage.Storage {
|
|||||||
now := LogTimeOfTest(t)
|
now := LogTimeOfTest(t)
|
||||||
|
|
||||||
cfg, err := readTestConfig()
|
cfg, err := readTestConfig()
|
||||||
require.NoError(t, err, "configuring storage from test file")
|
aw.MustNoErr(t, err, "configuring storage from test file")
|
||||||
|
|
||||||
prefix := testRepoRootPrefix + t.Name() + "-" + now
|
prefix := testRepoRootPrefix + t.Name() + "-" + now
|
||||||
t.Logf("testing at s3 bucket [%s] prefix [%s]", cfg[TestCfgBucket], prefix)
|
t.Logf("testing at s3 bucket [%s] prefix [%s]", cfg[TestCfgBucket], prefix)
|
||||||
@ -43,7 +42,7 @@ func NewPrefixedS3Storage(t *testing.T) storage.Storage {
|
|||||||
KopiaCfgDir: t.TempDir(),
|
KopiaCfgDir: t.TempDir(),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
require.NoError(t, err, "creating storage")
|
aw.MustNoErr(t, err, "creating storage")
|
||||||
|
|
||||||
return st
|
return st
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package account
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
)
|
)
|
||||||
@ -36,10 +37,10 @@ func (suite *AccountSuite) TestNewAccount() {
|
|||||||
c testConfig
|
c testConfig
|
||||||
errCheck assert.ErrorAssertionFunc
|
errCheck assert.ErrorAssertionFunc
|
||||||
}{
|
}{
|
||||||
{"unknown no error", ProviderUnknown, testConfig{"configVal", "", nil}, assert.NoError},
|
{"unknown no error", ProviderUnknown, testConfig{"configVal", "", nil}, aw.NoErr},
|
||||||
{"m365 no error", ProviderM365, testConfig{"configVal", "", nil}, assert.NoError},
|
{"m365 no error", ProviderM365, testConfig{"configVal", "", nil}, aw.NoErr},
|
||||||
{"unknown w/ error", ProviderUnknown, testConfig{"configVal", "", assert.AnError}, assert.Error},
|
{"unknown w/ error", ProviderUnknown, testConfig{"configVal", "", assert.AnError}, aw.Err},
|
||||||
{"m365 w/ error", ProviderM365, testConfig{"configVal", "", assert.AnError}, assert.Error},
|
{"m365 w/ error", ProviderM365, testConfig{"configVal", "", assert.AnError}, aw.Err},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
|
|||||||
@ -4,9 +4,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/credentials"
|
"github.com/alcionai/corso/src/pkg/credentials"
|
||||||
)
|
)
|
||||||
@ -30,7 +30,7 @@ var goodM365Config = account.M365Config{
|
|||||||
func (suite *M365CfgSuite) TestM365Config_Config() {
|
func (suite *M365CfgSuite) TestM365Config_Config() {
|
||||||
m365 := goodM365Config
|
m365 := goodM365Config
|
||||||
c, err := m365.StringConfig()
|
c, err := m365.StringConfig()
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
key string
|
key string
|
||||||
@ -50,9 +50,9 @@ func (suite *M365CfgSuite) TestAccount_M365Config() {
|
|||||||
|
|
||||||
in := goodM365Config
|
in := goodM365Config
|
||||||
a, err := account.NewAccount(account.ProviderM365, in)
|
a, err := account.NewAccount(account.ProviderM365, in)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
out, err := a.M365Config()
|
out, err := a.M365Config()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, in.AzureClientID, out.AzureClientID)
|
assert.Equal(t, in.AzureClientID, out.AzureClientID)
|
||||||
assert.Equal(t, in.AzureClientSecret, out.AzureClientSecret)
|
assert.Equal(t, in.AzureClientSecret, out.AzureClientSecret)
|
||||||
@ -82,7 +82,7 @@ func (suite *M365CfgSuite) TestAccount_M365Config_InvalidCases() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
_, err := account.NewAccount(account.ProviderUnknown, test.cfg)
|
_, err := account.NewAccount(account.ProviderUnknown, test.cfg)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,10 +113,10 @@ func (suite *M365CfgSuite) TestAccount_M365Config_InvalidCases() {
|
|||||||
for _, test := range table2 {
|
for _, test := range table2 {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
st, err := account.NewAccount(account.ProviderUnknown, goodM365Config)
|
st, err := account.NewAccount(account.ProviderUnknown, goodM365Config)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
test.amend(st)
|
test.amend(st)
|
||||||
_, err = st.M365Config()
|
_, err = st.M365Config()
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -28,7 +29,7 @@ func (suite *DetailsUnitSuite) TestDetailsEntry_HeadersValues() {
|
|||||||
initial := time.Now()
|
initial := time.Now()
|
||||||
nowStr := common.FormatTimeWith(initial, common.TabularOutput)
|
nowStr := common.FormatTimeWith(initial, common.TabularOutput)
|
||||||
now, err := common.ParseTime(nowStr)
|
now, err := common.ParseTime(nowStr)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
name string
|
name string
|
||||||
@ -558,7 +559,7 @@ func makeItemPath(
|
|||||||
category,
|
category,
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
@ -613,7 +614,7 @@ func (suite *DetailsUnitSuite) TestUpdateItem() {
|
|||||||
ItemType: ExchangeEvent,
|
ItemType: ExchangeEvent,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedItem: ItemInfo{
|
expectedItem: ItemInfo{
|
||||||
Exchange: &ExchangeInfo{
|
Exchange: &ExchangeInfo{
|
||||||
ItemType: ExchangeEvent,
|
ItemType: ExchangeEvent,
|
||||||
@ -627,7 +628,7 @@ func (suite *DetailsUnitSuite) TestUpdateItem() {
|
|||||||
ItemType: ExchangeContact,
|
ItemType: ExchangeContact,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedItem: ItemInfo{
|
expectedItem: ItemInfo{
|
||||||
Exchange: &ExchangeInfo{
|
Exchange: &ExchangeInfo{
|
||||||
ItemType: ExchangeContact,
|
ItemType: ExchangeContact,
|
||||||
@ -641,7 +642,7 @@ func (suite *DetailsUnitSuite) TestUpdateItem() {
|
|||||||
ItemType: ExchangeMail,
|
ItemType: ExchangeMail,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedItem: ItemInfo{
|
expectedItem: ItemInfo{
|
||||||
Exchange: &ExchangeInfo{
|
Exchange: &ExchangeInfo{
|
||||||
ItemType: ExchangeMail,
|
ItemType: ExchangeMail,
|
||||||
@ -658,7 +659,7 @@ func (suite *DetailsUnitSuite) TestUpdateItem() {
|
|||||||
},
|
},
|
||||||
repoPath: newOneDrivePath,
|
repoPath: newOneDrivePath,
|
||||||
locPath: newOneDrivePath,
|
locPath: newOneDrivePath,
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedItem: ItemInfo{
|
expectedItem: ItemInfo{
|
||||||
OneDrive: &OneDriveInfo{
|
OneDrive: &OneDriveInfo{
|
||||||
ItemType: OneDriveItem,
|
ItemType: OneDriveItem,
|
||||||
@ -676,7 +677,7 @@ func (suite *DetailsUnitSuite) TestUpdateItem() {
|
|||||||
},
|
},
|
||||||
repoPath: newOneDrivePath,
|
repoPath: newOneDrivePath,
|
||||||
locPath: newOneDrivePath,
|
locPath: newOneDrivePath,
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
expectedItem: ItemInfo{
|
expectedItem: ItemInfo{
|
||||||
SharePoint: &SharePointInfo{
|
SharePoint: &SharePointInfo{
|
||||||
ItemType: SharePointItem,
|
ItemType: SharePointItem,
|
||||||
@ -694,7 +695,7 @@ func (suite *DetailsUnitSuite) TestUpdateItem() {
|
|||||||
},
|
},
|
||||||
repoPath: badOneDrivePath,
|
repoPath: badOneDrivePath,
|
||||||
locPath: badOneDrivePath,
|
locPath: badOneDrivePath,
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "SharePointBadPath",
|
name: "SharePointBadPath",
|
||||||
@ -706,7 +707,7 @@ func (suite *DetailsUnitSuite) TestUpdateItem() {
|
|||||||
},
|
},
|
||||||
repoPath: badOneDrivePath,
|
repoPath: badOneDrivePath,
|
||||||
locPath: badOneDrivePath,
|
locPath: badOneDrivePath,
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -41,41 +42,41 @@ func (suite *FaultErrorsUnitSuite) TestErr() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "nil",
|
name: "nil",
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "nil, failFast",
|
name: "nil, failFast",
|
||||||
failFast: true,
|
failFast: true,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "failed",
|
name: "failed",
|
||||||
fail: assert.AnError,
|
fail: assert.AnError,
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "failed, failFast",
|
name: "failed, failFast",
|
||||||
fail: assert.AnError,
|
fail: assert.AnError,
|
||||||
failFast: true,
|
failFast: true,
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "added",
|
name: "added",
|
||||||
add: assert.AnError,
|
add: assert.AnError,
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "added, failFast",
|
name: "added, failFast",
|
||||||
add: assert.AnError,
|
add: assert.AnError,
|
||||||
failFast: true,
|
failFast: true,
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
n := fault.New(test.failFast)
|
n := fault.New(test.failFast)
|
||||||
require.NotNil(t, n)
|
require.NotNil(t, n)
|
||||||
require.NoError(t, n.Failure())
|
aw.MustNoErr(t, n.Failure())
|
||||||
require.Empty(t, n.Recovered())
|
require.Empty(t, n.Recovered())
|
||||||
|
|
||||||
e := n.Fail(test.fail)
|
e := n.Fail(test.fail)
|
||||||
@ -94,15 +95,15 @@ func (suite *FaultErrorsUnitSuite) TestFail() {
|
|||||||
|
|
||||||
n := fault.New(false)
|
n := fault.New(false)
|
||||||
require.NotNil(t, n)
|
require.NotNil(t, n)
|
||||||
require.NoError(t, n.Failure())
|
aw.MustNoErr(t, n.Failure())
|
||||||
require.Empty(t, n.Recovered())
|
require.Empty(t, n.Recovered())
|
||||||
|
|
||||||
n.Fail(assert.AnError)
|
n.Fail(assert.AnError)
|
||||||
assert.Error(t, n.Failure())
|
aw.Err(t, n.Failure())
|
||||||
assert.Empty(t, n.Recovered())
|
assert.Empty(t, n.Recovered())
|
||||||
|
|
||||||
n.Fail(assert.AnError)
|
n.Fail(assert.AnError)
|
||||||
assert.Error(t, n.Failure())
|
aw.Err(t, n.Failure())
|
||||||
assert.NotEmpty(t, n.Recovered())
|
assert.NotEmpty(t, n.Recovered())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,11 +170,11 @@ func (suite *FaultErrorsUnitSuite) TestAdd() {
|
|||||||
require.NotNil(t, n)
|
require.NotNil(t, n)
|
||||||
|
|
||||||
n.AddRecoverable(assert.AnError)
|
n.AddRecoverable(assert.AnError)
|
||||||
assert.Error(t, n.Failure())
|
aw.Err(t, n.Failure())
|
||||||
assert.Len(t, n.Recovered(), 1)
|
assert.Len(t, n.Recovered(), 1)
|
||||||
|
|
||||||
n.AddRecoverable(assert.AnError)
|
n.AddRecoverable(assert.AnError)
|
||||||
assert.Error(t, n.Failure())
|
aw.Err(t, n.Failure())
|
||||||
assert.Len(t, n.Recovered(), 2)
|
assert.Len(t, n.Recovered(), 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,10 +219,10 @@ func (suite *FaultErrorsUnitSuite) TestMarshalUnmarshal() {
|
|||||||
n.AddRecoverable(errors.New("2"))
|
n.AddRecoverable(errors.New("2"))
|
||||||
|
|
||||||
bs, err := json.Marshal(n.Errors())
|
bs, err := json.Marshal(n.Errors())
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
err = json.Unmarshal(bs, &fault.Errors{})
|
err = json.Unmarshal(bs, &fault.Errors{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
type legacyErrorsData struct {
|
type legacyErrorsData struct {
|
||||||
@ -238,14 +239,14 @@ func (suite *FaultErrorsUnitSuite) TestUnmarshalLegacy() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
jsonStr, err := json.Marshal(oldData)
|
jsonStr, err := json.Marshal(oldData)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
t.Logf("jsonStr is %s\n", jsonStr)
|
t.Logf("jsonStr is %s\n", jsonStr)
|
||||||
|
|
||||||
um := fault.Errors{}
|
um := fault.Errors{}
|
||||||
|
|
||||||
err = json.Unmarshal(jsonStr, &um)
|
err = json.Unmarshal(jsonStr, &um)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *FaultErrorsUnitSuite) TestTracker() {
|
func (suite *FaultErrorsUnitSuite) TestTracker() {
|
||||||
@ -254,22 +255,22 @@ func (suite *FaultErrorsUnitSuite) TestTracker() {
|
|||||||
eb := fault.New(false)
|
eb := fault.New(false)
|
||||||
|
|
||||||
lb := eb.Local()
|
lb := eb.Local()
|
||||||
assert.NoError(t, lb.Failure())
|
aw.NoErr(t, lb.Failure())
|
||||||
assert.Empty(t, eb.Recovered())
|
assert.Empty(t, eb.Recovered())
|
||||||
|
|
||||||
lb.AddRecoverable(assert.AnError)
|
lb.AddRecoverable(assert.AnError)
|
||||||
assert.NoError(t, lb.Failure())
|
aw.NoErr(t, lb.Failure())
|
||||||
assert.NoError(t, eb.Failure())
|
aw.NoErr(t, eb.Failure())
|
||||||
assert.NotEmpty(t, eb.Recovered())
|
assert.NotEmpty(t, eb.Recovered())
|
||||||
|
|
||||||
ebt := fault.New(true)
|
ebt := fault.New(true)
|
||||||
|
|
||||||
lbt := ebt.Local()
|
lbt := ebt.Local()
|
||||||
assert.NoError(t, lbt.Failure())
|
aw.NoErr(t, lbt.Failure())
|
||||||
assert.Empty(t, ebt.Recovered())
|
assert.Empty(t, ebt.Recovered())
|
||||||
|
|
||||||
lbt.AddRecoverable(assert.AnError)
|
lbt.AddRecoverable(assert.AnError)
|
||||||
assert.Error(t, lbt.Failure())
|
aw.Err(t, lbt.Failure())
|
||||||
assert.Error(t, ebt.Failure())
|
aw.Err(t, ebt.Failure())
|
||||||
assert.NotEmpty(t, ebt.Recovered())
|
assert.NotEmpty(t, ebt.Recovered())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,9 +4,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -28,25 +28,25 @@ func (suite *OneDrivePathSuite) Test_ToOneDrivePath() {
|
|||||||
{
|
{
|
||||||
name: "Not enough path elements",
|
name: "Not enough path elements",
|
||||||
pathElements: []string{"drive", "driveID"},
|
pathElements: []string{"drive", "driveID"},
|
||||||
errCheck: assert.Error,
|
errCheck: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Root path",
|
name: "Root path",
|
||||||
pathElements: []string{"drive", "driveID", "root:"},
|
pathElements: []string{"drive", "driveID", "root:"},
|
||||||
expected: &path.DrivePath{DriveID: "driveID", Folders: []string{}},
|
expected: &path.DrivePath{DriveID: "driveID", Folders: []string{}},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Deeper path",
|
name: "Deeper path",
|
||||||
pathElements: []string{"drive", "driveID", "root:", "folder1", "folder2"},
|
pathElements: []string{"drive", "driveID", "root:", "folder1", "folder2"},
|
||||||
expected: &path.DrivePath{DriveID: "driveID", Folders: []string{"folder1", "folder2"}},
|
expected: &path.DrivePath{DriveID: "driveID", Folders: []string{"folder1", "folder2"}},
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
suite.T().Run(tt.name, func(t *testing.T) {
|
suite.T().Run(tt.name, func(t *testing.T) {
|
||||||
p, err := path.Builder{}.Append(tt.pathElements...).ToDataLayerOneDrivePath("tenant", "user", false)
|
p, err := path.Builder{}.Append(tt.pathElements...).ToDataLayerOneDrivePath("tenant", "user", false)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
got, err := path.ToOneDrivePath(p)
|
got, err := path.ToOneDrivePath(p)
|
||||||
tt.errCheck(t, err)
|
tt.errCheck(t, err)
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
@ -235,7 +236,7 @@ func (suite *PathUnitSuite) TestUnescapeAndAppend() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
p, err := Builder{}.UnescapeAndAppend(test.input...)
|
p, err := Builder{}.UnescapeAndAppend(test.input...)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, test.expectedString, p.String())
|
assert.Equal(t, test.expectedString, p.String())
|
||||||
})
|
})
|
||||||
@ -250,7 +251,7 @@ func (suite *PathUnitSuite) TestEscapedFailure() {
|
|||||||
tmp := strings.ReplaceAll(target, "_", string(c))
|
tmp := strings.ReplaceAll(target, "_", string(c))
|
||||||
|
|
||||||
_, err := Builder{}.UnescapeAndAppend("this", tmp, "path")
|
_, err := Builder{}.UnescapeAndAppend("this", tmp, "path")
|
||||||
assert.Error(t, err, "path with unescaped %s did not error", string(c))
|
aw.Err(t, err, "path with unescaped %s did not error", string(c))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -264,7 +265,7 @@ func (suite *PathUnitSuite) TestBadEscapeSequenceErrors() {
|
|||||||
tmp := strings.ReplaceAll(target, "_", string(c))
|
tmp := strings.ReplaceAll(target, "_", string(c))
|
||||||
|
|
||||||
_, err := Builder{}.UnescapeAndAppend("this", tmp, "path")
|
_, err := Builder{}.UnescapeAndAppend("this", tmp, "path")
|
||||||
assert.Error(
|
aw.Err(
|
||||||
t,
|
t,
|
||||||
err,
|
err,
|
||||||
"path with bad escape sequence %c%c did not error",
|
"path with bad escape sequence %c%c did not error",
|
||||||
@ -285,7 +286,7 @@ func (suite *PathUnitSuite) TestTrailingEscapeChar() {
|
|||||||
path[i] = path[i] + string(escapeCharacter)
|
path[i] = path[i] + string(escapeCharacter)
|
||||||
|
|
||||||
_, err := Builder{}.UnescapeAndAppend(path...)
|
_, err := Builder{}.UnescapeAndAppend(path...)
|
||||||
assert.Error(
|
aw.Err(
|
||||||
t,
|
t,
|
||||||
err,
|
err,
|
||||||
"path with trailing escape character did not error",
|
"path with trailing escape character did not error",
|
||||||
@ -329,7 +330,7 @@ func (suite *PathUnitSuite) TestElements() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
p, err := test.pathFunc(test.input)
|
p, err := test.pathFunc(test.input)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, test.output, p.Elements())
|
assert.Equal(t, test.output, p.Elements())
|
||||||
})
|
})
|
||||||
@ -475,7 +476,7 @@ func (suite *PathUnitSuite) TestFromStringErrors() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
_, err := FromDataLayerPath(test.escapedPath, false)
|
_, err := FromDataLayerPath(test.escapedPath, false)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -494,7 +495,7 @@ func (suite *PathUnitSuite) TestFolder() {
|
|||||||
p, err := Builder{}.
|
p, err := Builder{}.
|
||||||
Append("a", "b", "c").
|
Append("a", "b", "c").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", EmailCategory, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
},
|
},
|
||||||
@ -507,7 +508,7 @@ func (suite *PathUnitSuite) TestFolder() {
|
|||||||
p, err := Builder{}.
|
p, err := Builder{}.
|
||||||
Append("a", "b", "c").
|
Append("a", "b", "c").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", EmailCategory, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
},
|
},
|
||||||
@ -521,7 +522,7 @@ func (suite *PathUnitSuite) TestFolder() {
|
|||||||
p, err := Builder{}.
|
p, err := Builder{}.
|
||||||
Append("a/", "b", "c").
|
Append("a/", "b", "c").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", EmailCategory, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
},
|
},
|
||||||
@ -534,7 +535,7 @@ func (suite *PathUnitSuite) TestFolder() {
|
|||||||
p, err := Builder{}.
|
p, err := Builder{}.
|
||||||
Append("a/", "b", "c").
|
Append("a/", "b", "c").
|
||||||
ToDataLayerExchangePathForCategory("t", "u", EmailCategory, false)
|
ToDataLayerExchangePathForCategory("t", "u", EmailCategory, false)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
},
|
},
|
||||||
@ -666,7 +667,7 @@ func (suite *PathUnitSuite) TestFromString() {
|
|||||||
testPath := fmt.Sprintf(test.unescapedPath, service, cat)
|
testPath := fmt.Sprintf(test.unescapedPath, service, cat)
|
||||||
|
|
||||||
p, err := FromDataLayerPath(testPath, item.isItem)
|
p, err := FromDataLayerPath(testPath, item.isItem)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, service, p.Service(), "service")
|
assert.Equal(t, service, p.Service(), "service")
|
||||||
assert.Equal(t, cat, p.Category(), "category")
|
assert.Equal(t, cat, p.Category(), "category")
|
||||||
|
|||||||
@ -6,9 +6,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ func (suite *DataLayerResourcePath) TestMissingInfoErrors() {
|
|||||||
test.user,
|
test.user,
|
||||||
m.isItem,
|
m.isItem,
|
||||||
)
|
)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -170,7 +170,7 @@ func (suite *DataLayerResourcePath) TestMailItemNoFolder() {
|
|||||||
testUser,
|
testUser,
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
assert.Empty(t, p.Folder(false))
|
assert.Empty(t, p.Folder(false))
|
||||||
assert.Empty(t, p.Folders())
|
assert.Empty(t, p.Folders())
|
||||||
@ -194,7 +194,7 @@ func (suite *DataLayerResourcePath) TestPopFront() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
m.isItem,
|
m.isItem,
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
b := p.PopFront()
|
b := p.PopFront()
|
||||||
assert.Equal(t, expected.String(), b.String())
|
assert.Equal(t, expected.String(), b.String())
|
||||||
@ -219,12 +219,12 @@ func (suite *DataLayerResourcePath) TestDir() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
m.isItem,
|
m.isItem,
|
||||||
)
|
)
|
||||||
require.NoError(t1, err)
|
aw.MustNoErr(t1, err)
|
||||||
|
|
||||||
for i := 1; i <= len(rest); i++ {
|
for i := 1; i <= len(rest); i++ {
|
||||||
t1.Run(fmt.Sprintf("%v", i), func(t *testing.T) {
|
t1.Run(fmt.Sprintf("%v", i), func(t *testing.T) {
|
||||||
p, err = p.Dir()
|
p, err = p.Dir()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expected := path.Builder{}.Append(elements...).Append(rest[:len(rest)-i]...)
|
expected := path.Builder{}.Append(elements...).Append(rest[:len(rest)-i]...)
|
||||||
assert.Equal(t, expected.String(), p.String())
|
assert.Equal(t, expected.String(), p.String())
|
||||||
@ -234,7 +234,7 @@ func (suite *DataLayerResourcePath) TestDir() {
|
|||||||
|
|
||||||
t1.Run("All", func(t *testing.T) {
|
t1.Run("All", func(t *testing.T) {
|
||||||
p, err = p.Dir()
|
p, err = p.Dir()
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -256,7 +256,7 @@ func (suite *DataLayerResourcePath) TestToServiceCategoryMetadataPath() {
|
|||||||
service: path.ExchangeService,
|
service: path.ExchangeService,
|
||||||
category: path.EmailCategory,
|
category: path.EmailCategory,
|
||||||
expectedService: path.ExchangeMetadataService,
|
expectedService: path.ExchangeMetadataService,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "PostfixPasses",
|
name: "PostfixPasses",
|
||||||
@ -264,55 +264,55 @@ func (suite *DataLayerResourcePath) TestToServiceCategoryMetadataPath() {
|
|||||||
category: path.EmailCategory,
|
category: path.EmailCategory,
|
||||||
postfix: []string{"a", "b"},
|
postfix: []string{"a", "b"},
|
||||||
expectedService: path.ExchangeMetadataService,
|
expectedService: path.ExchangeMetadataService,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Fails",
|
name: "Fails",
|
||||||
service: path.ExchangeService,
|
service: path.ExchangeService,
|
||||||
category: path.FilesCategory,
|
category: path.FilesCategory,
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Passes",
|
name: "Passes",
|
||||||
service: path.ExchangeService,
|
service: path.ExchangeService,
|
||||||
category: path.ContactsCategory,
|
category: path.ContactsCategory,
|
||||||
expectedService: path.ExchangeMetadataService,
|
expectedService: path.ExchangeMetadataService,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Passes",
|
name: "Passes",
|
||||||
service: path.ExchangeService,
|
service: path.ExchangeService,
|
||||||
category: path.EventsCategory,
|
category: path.EventsCategory,
|
||||||
expectedService: path.ExchangeMetadataService,
|
expectedService: path.ExchangeMetadataService,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Passes",
|
name: "Passes",
|
||||||
service: path.OneDriveService,
|
service: path.OneDriveService,
|
||||||
category: path.FilesCategory,
|
category: path.FilesCategory,
|
||||||
expectedService: path.OneDriveMetadataService,
|
expectedService: path.OneDriveMetadataService,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Passes",
|
name: "Passes",
|
||||||
service: path.SharePointService,
|
service: path.SharePointService,
|
||||||
category: path.LibrariesCategory,
|
category: path.LibrariesCategory,
|
||||||
expectedService: path.SharePointMetadataService,
|
expectedService: path.SharePointMetadataService,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Passes",
|
name: "Passes",
|
||||||
service: path.SharePointService,
|
service: path.SharePointService,
|
||||||
category: path.ListsCategory,
|
category: path.ListsCategory,
|
||||||
expectedService: path.SharePointMetadataService,
|
expectedService: path.SharePointMetadataService,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Passes",
|
name: "Passes",
|
||||||
service: path.SharePointService,
|
service: path.SharePointService,
|
||||||
category: path.PagesCategory,
|
category: path.PagesCategory,
|
||||||
expectedService: path.SharePointMetadataService,
|
expectedService: path.SharePointMetadataService,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,23 +350,23 @@ func (suite *DataLayerResourcePath) TestToExchangePathForCategory() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
category: path.UnknownCategory,
|
category: path.UnknownCategory,
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
category: path.CategoryType(-1),
|
category: path.CategoryType(-1),
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
category: path.EmailCategory,
|
category: path.EmailCategory,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
category: path.ContactsCategory,
|
category: path.ContactsCategory,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
category: path.EventsCategory,
|
category: path.EventsCategory,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -421,7 +421,7 @@ func (suite *PopulatedDataLayerResourcePath) SetupSuite() {
|
|||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
t,
|
t,
|
||||||
)
|
)
|
||||||
require.NoError(suite.T(), err)
|
aw.MustNoErr(suite.T(), err)
|
||||||
|
|
||||||
suite.paths[t] = p
|
suite.paths[t] = p
|
||||||
}
|
}
|
||||||
@ -521,7 +521,7 @@ func (suite *PopulatedDataLayerResourcePath) TestAppend() {
|
|||||||
|
|
||||||
// Items don't allow appending.
|
// Items don't allow appending.
|
||||||
if m.isItem {
|
if m.isItem {
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,7 +587,7 @@ func (suite *PopulatedDataLayerResourcePath) TestUpdateParent() {
|
|||||||
buildPath := func(t *testing.T, pth string, isItem bool) path.Path {
|
buildPath := func(t *testing.T, pth string, isItem bool) path.Path {
|
||||||
pathBuilder := path.Builder{}.Append(strings.Split(pth, "/")...)
|
pathBuilder := path.Builder{}.Append(strings.Split(pth, "/")...)
|
||||||
item, err := pathBuilder.ToDataLayerOneDrivePath("tenant", "user", isItem)
|
item, err := pathBuilder.ToDataLayerOneDrivePath("tenant", "user", isItem)
|
||||||
require.NoError(t, err, "err building path")
|
aw.MustNoErr(t, err, "err building path")
|
||||||
|
|
||||||
return item
|
return item
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
)
|
)
|
||||||
@ -36,7 +37,7 @@ func (suite *ServiceCategoryUnitSuite) TestValidateServiceAndCategoryBadStringEr
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
_, _, err := validateServiceAndCategoryStrings(test.service, test.category)
|
_, _, err := validateServiceAndCategoryStrings(test.service, test.category)
|
||||||
assert.Error(suite.T(), err)
|
aw.Err(suite.T(), err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,25 +55,25 @@ func (suite *ServiceCategoryUnitSuite) TestValidateServiceAndCategory() {
|
|||||||
name: "UnknownService",
|
name: "UnknownService",
|
||||||
service: UnknownService.String(),
|
service: UnknownService.String(),
|
||||||
category: EmailCategory.String(),
|
category: EmailCategory.String(),
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "UnknownCategory",
|
name: "UnknownCategory",
|
||||||
service: ExchangeService.String(),
|
service: ExchangeService.String(),
|
||||||
category: UnknownCategory.String(),
|
category: UnknownCategory.String(),
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "BadServiceString",
|
name: "BadServiceString",
|
||||||
service: "foo",
|
service: "foo",
|
||||||
category: EmailCategory.String(),
|
category: EmailCategory.String(),
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "BadCategoryString",
|
name: "BadCategoryString",
|
||||||
service: ExchangeService.String(),
|
service: ExchangeService.String(),
|
||||||
category: "foo",
|
category: "foo",
|
||||||
check: assert.Error,
|
check: aw.Err,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "ExchangeEmail",
|
name: "ExchangeEmail",
|
||||||
@ -80,7 +81,7 @@ func (suite *ServiceCategoryUnitSuite) TestValidateServiceAndCategory() {
|
|||||||
category: EmailCategory.String(),
|
category: EmailCategory.String(),
|
||||||
expectedService: ExchangeService,
|
expectedService: ExchangeService,
|
||||||
expectedCategory: EmailCategory,
|
expectedCategory: EmailCategory,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "ExchangeContacts",
|
name: "ExchangeContacts",
|
||||||
@ -88,7 +89,7 @@ func (suite *ServiceCategoryUnitSuite) TestValidateServiceAndCategory() {
|
|||||||
category: ContactsCategory.String(),
|
category: ContactsCategory.String(),
|
||||||
expectedService: ExchangeService,
|
expectedService: ExchangeService,
|
||||||
expectedCategory: ContactsCategory,
|
expectedCategory: ContactsCategory,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "ExchangeEvents",
|
name: "ExchangeEvents",
|
||||||
@ -96,7 +97,7 @@ func (suite *ServiceCategoryUnitSuite) TestValidateServiceAndCategory() {
|
|||||||
category: EventsCategory.String(),
|
category: EventsCategory.String(),
|
||||||
expectedService: ExchangeService,
|
expectedService: ExchangeService,
|
||||||
expectedCategory: EventsCategory,
|
expectedCategory: EventsCategory,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "OneDriveFiles",
|
name: "OneDriveFiles",
|
||||||
@ -104,7 +105,7 @@ func (suite *ServiceCategoryUnitSuite) TestValidateServiceAndCategory() {
|
|||||||
category: FilesCategory.String(),
|
category: FilesCategory.String(),
|
||||||
expectedService: OneDriveService,
|
expectedService: OneDriveService,
|
||||||
expectedCategory: FilesCategory,
|
expectedCategory: FilesCategory,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "SharePointLibraries",
|
name: "SharePointLibraries",
|
||||||
@ -112,7 +113,7 @@ func (suite *ServiceCategoryUnitSuite) TestValidateServiceAndCategory() {
|
|||||||
category: LibrariesCategory.String(),
|
category: LibrariesCategory.String(),
|
||||||
expectedService: SharePointService,
|
expectedService: SharePointService,
|
||||||
expectedCategory: LibrariesCategory,
|
expectedCategory: LibrariesCategory,
|
||||||
check: assert.NoError,
|
check: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import (
|
|||||||
D "github.com/alcionai/corso/src/internal/diagnostics"
|
D "github.com/alcionai/corso/src/internal/diagnostics"
|
||||||
"github.com/alcionai/corso/src/internal/operations"
|
"github.com/alcionai/corso/src/internal/operations"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"github.com/alcionai/corso/src/pkg/account"
|
||||||
"github.com/alcionai/corso/src/pkg/backup"
|
"github.com/alcionai/corso/src/pkg/backup"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
@ -98,7 +99,7 @@ func initM365Repo(t *testing.T) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
repo, err := repository.Initialize(ctx, ac, st, opts)
|
repo, err := repository.Initialize(ctx, ac, st, opts)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return ctx, repo, ac, st
|
return ctx, repo, ac, st
|
||||||
}
|
}
|
||||||
@ -120,7 +121,7 @@ func runLoadTest(
|
|||||||
//revive:enable:context-as-argument
|
//revive:enable:context-as-argument
|
||||||
t.Run(prefix+"_load_test_main", func(t *testing.T) {
|
t.Run(prefix+"_load_test_main", func(t *testing.T) {
|
||||||
b, err := r.NewBackup(ctx, bupSel)
|
b, err := r.NewBackup(ctx, bupSel)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
runBackupLoadTest(t, ctx, &b, service, usersUnderTest)
|
runBackupLoadTest(t, ctx, &b, service, usersUnderTest)
|
||||||
bid := string(b.Results.BackupID)
|
bid := string(b.Results.BackupID)
|
||||||
@ -152,7 +153,7 @@ func runRestoreLoadTest(
|
|||||||
dest := tester.DefaultTestRestoreDestination()
|
dest := tester.DefaultTestRestoreDestination()
|
||||||
|
|
||||||
rst, err := r.NewRestore(ctx, backupID, restSel, dest)
|
rst, err := r.NewRestore(ctx, backupID, restSel, dest)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
doRestoreLoadTest(t, ctx, rst, service, bup.Results.ItemsWritten, usersUnderTest)
|
doRestoreLoadTest(t, ctx, rst, service, bup.Results.ItemsWritten, usersUnderTest)
|
||||||
})
|
})
|
||||||
@ -177,7 +178,7 @@ func runBackupLoadTest(
|
|||||||
err = b.Run(ctx)
|
err = b.Run(ctx)
|
||||||
})
|
})
|
||||||
|
|
||||||
require.NoError(t, err, "running backup")
|
aw.MustNoErr(t, err, "running backup")
|
||||||
require.NotEmpty(t, b.Results, "has results after run")
|
require.NotEmpty(t, b.Results, "has results after run")
|
||||||
assert.NotEmpty(t, b.Results.BackupID, "has an ID after run")
|
assert.NotEmpty(t, b.Results.BackupID, "has an ID after run")
|
||||||
assert.Equal(t, b.Status, operations.Completed, "backup status")
|
assert.Equal(t, b.Status, operations.Completed, "backup status")
|
||||||
@ -185,7 +186,7 @@ func runBackupLoadTest(
|
|||||||
assert.Less(t, 0, b.Results.ItemsWritten, "items written")
|
assert.Less(t, 0, b.Results.ItemsWritten, "items written")
|
||||||
assert.Less(t, int64(0), b.Results.BytesUploaded, "bytes uploaded")
|
assert.Less(t, int64(0), b.Results.BytesUploaded, "bytes uploaded")
|
||||||
assert.Equal(t, len(users), b.Results.ResourceOwners, "resource owners")
|
assert.Equal(t, len(users), b.Results.ResourceOwners, "resource owners")
|
||||||
assert.NoError(t, b.Errors.Failure(), "non-recoverable error")
|
aw.NoErr(t, b.Errors.Failure(), "non-recoverable error")
|
||||||
assert.Empty(t, b.Errors.Recovered(), "recoverable errors")
|
assert.Empty(t, b.Errors.Recovered(), "recoverable errors")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -209,7 +210,7 @@ func runBackupListLoadTest(
|
|||||||
bs, err = r.BackupsByTag(ctx)
|
bs, err = r.BackupsByTag(ctx)
|
||||||
})
|
})
|
||||||
|
|
||||||
require.NoError(t, err, "retrieving backups")
|
aw.MustNoErr(t, err, "retrieving backups")
|
||||||
require.Less(t, 0, len(bs), "at least one backup is recorded")
|
require.Less(t, 0, len(bs), "at least one backup is recorded")
|
||||||
|
|
||||||
var found bool
|
var found bool
|
||||||
@ -250,7 +251,7 @@ func runBackupDetailsLoadTest(
|
|||||||
ds, b, errs = r.BackupDetails(ctx, backupID)
|
ds, b, errs = r.BackupDetails(ctx, backupID)
|
||||||
})
|
})
|
||||||
|
|
||||||
require.NoError(t, errs.Failure(), "retrieving details in backup "+backupID)
|
aw.MustNoErr(t, errs.Failure(), "retrieving details in backup "+backupID)
|
||||||
require.Empty(t, errs.Recovered(), "retrieving details in backup "+backupID)
|
require.Empty(t, errs.Recovered(), "retrieving details in backup "+backupID)
|
||||||
require.NotNil(t, ds, "backup details must exist")
|
require.NotNil(t, ds, "backup details must exist")
|
||||||
require.NotNil(t, b, "backup must exist")
|
require.NotNil(t, b, "backup must exist")
|
||||||
@ -284,7 +285,7 @@ func doRestoreLoadTest(
|
|||||||
ds, err = r.Run(ctx)
|
ds, err = r.Run(ctx)
|
||||||
})
|
})
|
||||||
|
|
||||||
require.NoError(t, err, "running restore")
|
aw.MustNoErr(t, err, "running restore")
|
||||||
require.NotEmpty(t, r.Results, "has results after run")
|
require.NotEmpty(t, r.Results, "has results after run")
|
||||||
require.NotNil(t, ds, "has restored details")
|
require.NotNil(t, ds, "has restored details")
|
||||||
assert.Equal(t, r.Status, operations.Completed, "restore status")
|
assert.Equal(t, r.Status, operations.Completed, "restore status")
|
||||||
@ -292,7 +293,7 @@ func doRestoreLoadTest(
|
|||||||
assert.Less(t, 0, r.Results.ItemsRead, "items read")
|
assert.Less(t, 0, r.Results.ItemsRead, "items read")
|
||||||
assert.Less(t, 0, r.Results.ItemsWritten, "items written")
|
assert.Less(t, 0, r.Results.ItemsWritten, "items written")
|
||||||
assert.Equal(t, len(users), r.Results.ResourceOwners, "resource owners")
|
assert.Equal(t, len(users), r.Results.ResourceOwners, "resource owners")
|
||||||
assert.NoError(t, r.Errors.Failure(), "non-recoverable error")
|
aw.NoErr(t, r.Errors.Failure(), "non-recoverable error")
|
||||||
assert.Empty(t, r.Errors.Recovered(), "recoverable errors")
|
assert.Empty(t, r.Errors.Recovered(), "recoverable errors")
|
||||||
assert.Equal(t, expectItemCount, r.Results.ItemsWritten, "backup and restore wrote the same count of items")
|
assert.Equal(t, expectItemCount, r.Results.ItemsWritten, "backup and restore wrote the same count of items")
|
||||||
|
|
||||||
@ -338,7 +339,7 @@ func ensureAllUsersInDetails(
|
|||||||
rr := e.RepoRef
|
rr := e.RepoRef
|
||||||
|
|
||||||
p, err := path.FromDataLayerPath(rr, true)
|
p, err := path.FromDataLayerPath(rr, true)
|
||||||
if !assert.NoError(t, err, "converting to path: "+rr) {
|
if !aw.NoErr(t, err, "converting to path: "+rr) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/account"
|
"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/repository"
|
"github.com/alcionai/corso/src/pkg/repository"
|
||||||
@ -40,7 +41,7 @@ func (suite *RepositorySuite) TestInitialize() {
|
|||||||
return storage.NewStorage(storage.ProviderUnknown)
|
return storage.NewStorage(storage.ProviderUnknown)
|
||||||
},
|
},
|
||||||
account.Account{},
|
account.Account{},
|
||||||
assert.Error,
|
aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -49,7 +50,7 @@ func (suite *RepositorySuite) TestInitialize() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
st, err := test.storage()
|
st, err := test.storage()
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
_, err = repository.Initialize(ctx, test.account, st, control.Options{})
|
_, err = repository.Initialize(ctx, test.account, st, control.Options{})
|
||||||
test.errCheck(t, err, "")
|
test.errCheck(t, err, "")
|
||||||
})
|
})
|
||||||
@ -71,7 +72,7 @@ func (suite *RepositorySuite) TestConnect() {
|
|||||||
return storage.NewStorage(storage.ProviderUnknown)
|
return storage.NewStorage(storage.ProviderUnknown)
|
||||||
},
|
},
|
||||||
account.Account{},
|
account.Account{},
|
||||||
assert.Error,
|
aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -80,7 +81,7 @@ func (suite *RepositorySuite) TestConnect() {
|
|||||||
defer flush()
|
defer flush()
|
||||||
|
|
||||||
st, err := test.storage()
|
st, err := test.storage()
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
_, err = repository.Connect(ctx, test.account, st, control.Options{})
|
_, err = repository.Connect(ctx, test.account, st, control.Options{})
|
||||||
test.errCheck(t, err)
|
test.errCheck(t, err)
|
||||||
})
|
})
|
||||||
@ -122,7 +123,7 @@ func (suite *RepositoryIntegrationSuite) TestInitialize() {
|
|||||||
{
|
{
|
||||||
name: "success",
|
name: "success",
|
||||||
storage: tester.NewPrefixedS3Storage,
|
storage: tester.NewPrefixedS3Storage,
|
||||||
errCheck: assert.NoError,
|
errCheck: aw.NoErr,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -131,7 +132,7 @@ func (suite *RepositoryIntegrationSuite) TestInitialize() {
|
|||||||
r, err := repository.Initialize(ctx, test.account, st, control.Options{})
|
r, err := repository.Initialize(ctx, test.account, st, control.Options{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
defer func() {
|
defer func() {
|
||||||
assert.NoError(t, r.Close(ctx))
|
aw.NoErr(t, r.Close(ctx))
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,11 +151,11 @@ func (suite *RepositoryIntegrationSuite) TestConnect() {
|
|||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
_, err := repository.Initialize(ctx, account.Account{}, st, control.Options{})
|
_, err := repository.Initialize(ctx, account.Account{}, st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
// now re-connect
|
// now re-connect
|
||||||
_, err = repository.Connect(ctx, account.Account{}, st, control.Options{})
|
_, err = repository.Connect(ctx, account.Account{}, st, control.Options{})
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *RepositoryIntegrationSuite) TestConnect_sameID() {
|
func (suite *RepositoryIntegrationSuite) TestConnect_sameID() {
|
||||||
@ -167,15 +168,15 @@ func (suite *RepositoryIntegrationSuite) TestConnect_sameID() {
|
|||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
r, err := repository.Initialize(ctx, account.Account{}, st, control.Options{})
|
r, err := repository.Initialize(ctx, account.Account{}, st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
oldID := r.GetID()
|
oldID := r.GetID()
|
||||||
|
|
||||||
require.NoError(t, r.Close(ctx))
|
aw.MustNoErr(t, r.Close(ctx))
|
||||||
|
|
||||||
// now re-connect
|
// now re-connect
|
||||||
r, err = repository.Connect(ctx, account.Account{}, st, control.Options{})
|
r, err = repository.Connect(ctx, account.Account{}, st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, oldID, r.GetID())
|
assert.Equal(t, oldID, r.GetID())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,10 +192,10 @@ func (suite *RepositoryIntegrationSuite) TestNewBackup() {
|
|||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
r, err := repository.Initialize(ctx, acct, st, control.Options{})
|
r, err := repository.Initialize(ctx, acct, st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
bo, err := r.NewBackup(ctx, selectors.Selector{DiscreteOwner: "test"})
|
bo, err := r.NewBackup(ctx, selectors.Selector{DiscreteOwner: "test"})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotNil(t, bo)
|
require.NotNil(t, bo)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,9 +212,9 @@ func (suite *RepositoryIntegrationSuite) TestNewRestore() {
|
|||||||
st := tester.NewPrefixedS3Storage(t)
|
st := tester.NewPrefixedS3Storage(t)
|
||||||
|
|
||||||
r, err := repository.Initialize(ctx, acct, st, control.Options{})
|
r, err := repository.Initialize(ctx, acct, st, control.Options{})
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
ro, err := r.NewRestore(ctx, "backup-id", selectors.Selector{DiscreteOwner: "test"}, dest)
|
ro, err := r.NewRestore(ctx, "backup-id", selectors.Selector{DiscreteOwner: "test"}, dest)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotNil(t, ro)
|
require.NotNil(t, ro)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,11 +4,11 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/kopia"
|
"github.com/alcionai/corso/src/internal/kopia"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RepositoryModelSuite struct {
|
type RepositoryModelSuite struct {
|
||||||
@ -39,19 +39,19 @@ func (suite *RepositoryModelSuite) TestWriteGetModel() {
|
|||||||
kopiaRef = kopia.NewConn(s)
|
kopiaRef = kopia.NewConn(s)
|
||||||
)
|
)
|
||||||
|
|
||||||
require.NoError(t, kopiaRef.Initialize(ctx))
|
aw.MustNoErr(t, kopiaRef.Initialize(ctx))
|
||||||
require.NoError(t, kopiaRef.Connect(ctx))
|
aw.MustNoErr(t, kopiaRef.Connect(ctx))
|
||||||
|
|
||||||
defer kopiaRef.Close(ctx)
|
defer kopiaRef.Close(ctx)
|
||||||
|
|
||||||
ms, err := kopia.NewModelStore(kopiaRef)
|
ms, err := kopia.NewModelStore(kopiaRef)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
defer ms.Close(ctx)
|
defer ms.Close(ctx)
|
||||||
|
|
||||||
require.NoError(t, newRepoModel(ctx, ms, "fnords"))
|
aw.MustNoErr(t, newRepoModel(ctx, ms, "fnords"))
|
||||||
|
|
||||||
got, err := getRepoModel(ctx, ms)
|
got, err := getRepoModel(ctx, ms)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, "fnords", string(got.ID))
|
assert.Equal(t, "fnords", string(got.ID))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/filters"
|
"github.com/alcionai/corso/src/pkg/filters"
|
||||||
@ -36,7 +37,7 @@ func (suite *ExchangeSelectorSuite) TestToExchangeBackup() {
|
|||||||
eb := NewExchangeBackup(nil)
|
eb := NewExchangeBackup(nil)
|
||||||
s := eb.Selector
|
s := eb.Selector
|
||||||
eb, err := s.ToExchangeBackup()
|
eb, err := s.ToExchangeBackup()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, eb.Service, ServiceExchange)
|
assert.Equal(t, eb.Service, ServiceExchange)
|
||||||
assert.NotZero(t, eb.Scopes())
|
assert.NotZero(t, eb.Scopes())
|
||||||
}
|
}
|
||||||
@ -53,7 +54,7 @@ func (suite *ExchangeSelectorSuite) TestToExchangeRestore() {
|
|||||||
eb := NewExchangeRestore(nil)
|
eb := NewExchangeRestore(nil)
|
||||||
s := eb.Selector
|
s := eb.Selector
|
||||||
eb, err := s.ToExchangeRestore()
|
eb, err := s.ToExchangeRestore()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, eb.Service, ServiceExchange)
|
assert.Equal(t, eb.Service, ServiceExchange)
|
||||||
assert.NotZero(t, eb.Scopes())
|
assert.NotZero(t, eb.Scopes())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,8 +5,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/filters"
|
"github.com/alcionai/corso/src/pkg/filters"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -189,7 +189,7 @@ func stubPath(t *testing.T, user string, s []string, cat path.CategoryType) path
|
|||||||
pth, err := path.Builder{}.
|
pth, err := path.Builder{}.
|
||||||
Append(s...).
|
Append(s...).
|
||||||
ToDataLayerExchangePathForCategory("tid", user, cat, true)
|
ToDataLayerExchangePathForCategory("tid", user, cat, true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
return pth
|
return pth
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/common"
|
"github.com/alcionai/corso/src/internal/common"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -35,7 +36,7 @@ func (suite *OneDriveSelectorSuite) TestToOneDriveBackup() {
|
|||||||
ob := NewOneDriveBackup(Any())
|
ob := NewOneDriveBackup(Any())
|
||||||
s := ob.Selector
|
s := ob.Selector
|
||||||
ob, err := s.ToOneDriveBackup()
|
ob, err := s.ToOneDriveBackup()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, ob.Service, ServiceOneDrive)
|
assert.Equal(t, ob.Service, ServiceOneDrive)
|
||||||
assert.NotZero(t, ob.Scopes())
|
assert.NotZero(t, ob.Scopes())
|
||||||
}
|
}
|
||||||
@ -153,7 +154,7 @@ func (suite *OneDriveSelectorSuite) TestToOneDriveRestore() {
|
|||||||
eb := NewOneDriveRestore(Any())
|
eb := NewOneDriveRestore(Any())
|
||||||
s := eb.Selector
|
s := eb.Selector
|
||||||
or, err := s.ToOneDriveRestore()
|
or, err := s.ToOneDriveRestore()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, or.Service, ServiceOneDrive)
|
assert.Equal(t, or.Service, ServiceOneDrive)
|
||||||
assert.NotZero(t, or.Scopes())
|
assert.NotZero(t, or.Scopes())
|
||||||
}
|
}
|
||||||
@ -255,7 +256,7 @@ func (suite *OneDriveSelectorSuite) TestOneDriveCategory_PathValues() {
|
|||||||
|
|
||||||
pathBuilder := path.Builder{}.Append("drive", "driveID", "root:", "dir1", "dir2", "file")
|
pathBuilder := path.Builder{}.Append("drive", "driveID", "root:", "dir1", "dir2", "file")
|
||||||
filePath, err := pathBuilder.ToDataLayerOneDrivePath("tenant", "user", true)
|
filePath, err := pathBuilder.ToDataLayerOneDrivePath("tenant", "user", true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
|
|
||||||
expected := map[categorizer]string{
|
expected := map[categorizer]string{
|
||||||
OneDriveFolder: "dir1/dir2",
|
OneDriveFolder: "dir1/dir2",
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/filters"
|
"github.com/alcionai/corso/src/pkg/filters"
|
||||||
@ -284,7 +285,7 @@ func (suite *SelectorScopesSuite) TestReduce() {
|
|||||||
dataCats,
|
dataCats,
|
||||||
errs)
|
errs)
|
||||||
require.NotNil(t, result)
|
require.NotNil(t, result)
|
||||||
require.NoError(t, errs.Failure(), "no recoverable errors")
|
aw.MustNoErr(t, errs.Failure(), "no recoverable errors")
|
||||||
assert.Len(t, result.Entries, test.expectLen)
|
assert.Len(t, result.Entries, test.expectLen)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/filters"
|
"github.com/alcionai/corso/src/pkg/filters"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
)
|
)
|
||||||
@ -28,7 +29,7 @@ func (suite *SelectorSuite) TestNewSelector() {
|
|||||||
|
|
||||||
func (suite *SelectorSuite) TestBadCastErr() {
|
func (suite *SelectorSuite) TestBadCastErr() {
|
||||||
err := badCastErr(ServiceUnknown, ServiceExchange)
|
err := badCastErr(ServiceUnknown, ServiceExchange)
|
||||||
assert.Error(suite.T(), err)
|
aw.Err(suite.T(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *SelectorSuite) TestResourceOwnersIn() {
|
func (suite *SelectorSuite) TestResourceOwnersIn() {
|
||||||
@ -251,14 +252,14 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "empty",
|
name: "empty",
|
||||||
isErr: assert.Error,
|
isErr: aw.Err,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
return &Selector{}
|
return &Selector{}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Mail_B",
|
name: "Mail_B",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewExchangeBackup(users)
|
sel := NewExchangeBackup(users)
|
||||||
sel.Include(sel.MailFolders([]string{"MailFolder"}, PrefixMatch()))
|
sel.Include(sel.MailFolders([]string{"MailFolder"}, PrefixMatch()))
|
||||||
@ -268,7 +269,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Mail_R",
|
name: "Mail_R",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewExchangeRestore(users)
|
sel := NewExchangeRestore(users)
|
||||||
sel.Include(sel.MailFolders([]string{"MailFolder"}, PrefixMatch()))
|
sel.Include(sel.MailFolders([]string{"MailFolder"}, PrefixMatch()))
|
||||||
@ -278,7 +279,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Contacts",
|
name: "Contacts",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewExchangeBackup(users)
|
sel := NewExchangeBackup(users)
|
||||||
sel.Include(sel.ContactFolders([]string{"Contact Folder"}, PrefixMatch()))
|
sel.Include(sel.ContactFolders([]string{"Contact Folder"}, PrefixMatch()))
|
||||||
@ -287,7 +288,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Contacts_R",
|
name: "Contacts_R",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewExchangeRestore(users)
|
sel := NewExchangeRestore(users)
|
||||||
sel.Include(sel.ContactFolders([]string{"Contact Folder"}, PrefixMatch()))
|
sel.Include(sel.ContactFolders([]string{"Contact Folder"}, PrefixMatch()))
|
||||||
@ -296,7 +297,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Events",
|
name: "Events",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewExchangeBackup(users)
|
sel := NewExchangeBackup(users)
|
||||||
sel.Include(sel.EventCalendars([]string{"July"}, PrefixMatch()))
|
sel.Include(sel.EventCalendars([]string{"July"}, PrefixMatch()))
|
||||||
@ -305,7 +306,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Events_R",
|
name: "Events_R",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewExchangeRestore(users)
|
sel := NewExchangeRestore(users)
|
||||||
sel.Include(sel.EventCalendars([]string{"July"}, PrefixMatch()))
|
sel.Include(sel.EventCalendars([]string{"July"}, PrefixMatch()))
|
||||||
@ -315,7 +316,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "SharePoint Pages",
|
name: "SharePoint Pages",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewSharePointBackup(users)
|
sel := NewSharePointBackup(users)
|
||||||
sel.Include(sel.Pages([]string{"Something"}, SuffixMatch()))
|
sel.Include(sel.Pages([]string{"Something"}, SuffixMatch()))
|
||||||
@ -326,7 +327,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "SharePoint Lists",
|
name: "SharePoint Lists",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewSharePointBackup(users)
|
sel := NewSharePointBackup(users)
|
||||||
sel.Include(sel.Lists([]string{"Lists from website"}, SuffixMatch()))
|
sel.Include(sel.Lists([]string{"Lists from website"}, SuffixMatch()))
|
||||||
@ -336,7 +337,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "SharePoint Libraries",
|
name: "SharePoint Libraries",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewSharePointBackup(users)
|
sel := NewSharePointBackup(users)
|
||||||
sel.Include(sel.Libraries([]string{"A directory"}, SuffixMatch()))
|
sel.Include(sel.Libraries([]string{"A directory"}, SuffixMatch()))
|
||||||
@ -346,7 +347,7 @@ func (suite *SelectorSuite) TestPathCategories_includes() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "OneDrive",
|
name: "OneDrive",
|
||||||
isErr: assert.NoError,
|
isErr: aw.NoErr,
|
||||||
getSelector: func(t *testing.T) *Selector {
|
getSelector: func(t *testing.T) *Selector {
|
||||||
sel := NewOneDriveBackup(users)
|
sel := NewOneDriveBackup(users)
|
||||||
sel.Include(sel.Folders([]string{"Single Folder"}, PrefixMatch()))
|
sel.Include(sel.Folders([]string{"Single Folder"}, PrefixMatch()))
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup/details"
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
"github.com/alcionai/corso/src/pkg/path"
|
"github.com/alcionai/corso/src/pkg/path"
|
||||||
@ -33,7 +34,7 @@ func (suite *SharePointSelectorSuite) TestToSharePointBackup() {
|
|||||||
ob := NewSharePointBackup(nil)
|
ob := NewSharePointBackup(nil)
|
||||||
s := ob.Selector
|
s := ob.Selector
|
||||||
ob, err := s.ToSharePointBackup()
|
ob, err := s.ToSharePointBackup()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, ob.Service, ServiceSharePoint)
|
assert.Equal(t, ob.Service, ServiceSharePoint)
|
||||||
assert.NotZero(t, ob.Scopes())
|
assert.NotZero(t, ob.Scopes())
|
||||||
}
|
}
|
||||||
@ -187,7 +188,7 @@ func (suite *SharePointSelectorSuite) TestToSharePointRestore() {
|
|||||||
eb := NewSharePointRestore(nil)
|
eb := NewSharePointRestore(nil)
|
||||||
s := eb.Selector
|
s := eb.Selector
|
||||||
or, err := s.ToSharePointRestore()
|
or, err := s.ToSharePointRestore()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, or.Service, ServiceSharePoint)
|
assert.Equal(t, or.Service, ServiceSharePoint)
|
||||||
assert.NotZero(t, or.Scopes())
|
assert.NotZero(t, or.Scopes())
|
||||||
}
|
}
|
||||||
@ -347,7 +348,7 @@ func (suite *SharePointSelectorSuite) TestSharePointCategory_PathValues() {
|
|||||||
"site",
|
"site",
|
||||||
test.sc.PathType(),
|
test.sc.PathType(),
|
||||||
true)
|
true)
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
r, l := test.sc.pathValues(itemPath, itemPath)
|
r, l := test.sc.pathValues(itemPath, itemPath)
|
||||||
assert.Equal(t, test.expected, r)
|
assert.Equal(t, test.expected, r)
|
||||||
assert.Equal(t, test.expected, l)
|
assert.Equal(t, test.expected, l)
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/fault"
|
"github.com/alcionai/corso/src/pkg/fault"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ func (suite *M365IntegrationSuite) TestUsers() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
users, err := Users(ctx, acct, fault.New(true))
|
users, err := Users(ctx, acct, fault.New(true))
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
require.NotNil(t, users)
|
require.NotNil(t, users)
|
||||||
require.Greater(t, len(users), 0)
|
require.Greater(t, len(users), 0)
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/credentials"
|
"github.com/alcionai/corso/src/pkg/credentials"
|
||||||
"github.com/alcionai/corso/src/pkg/storage"
|
"github.com/alcionai/corso/src/pkg/storage"
|
||||||
)
|
)
|
||||||
@ -27,7 +28,7 @@ var goodCommonConfig = storage.CommonConfig{
|
|||||||
func (suite *CommonCfgSuite) TestCommonConfig_Config() {
|
func (suite *CommonCfgSuite) TestCommonConfig_Config() {
|
||||||
cfg := goodCommonConfig
|
cfg := goodCommonConfig
|
||||||
c, err := cfg.StringConfig()
|
c, err := cfg.StringConfig()
|
||||||
assert.NoError(suite.T(), err)
|
aw.NoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
key string
|
key string
|
||||||
@ -47,9 +48,9 @@ func (suite *CommonCfgSuite) TestStorage_CommonConfig() {
|
|||||||
|
|
||||||
in := goodCommonConfig
|
in := goodCommonConfig
|
||||||
s, err := storage.NewStorage(storage.ProviderUnknown, in)
|
s, err := storage.NewStorage(storage.ProviderUnknown, in)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
out, err := s.CommonConfig()
|
out, err := s.CommonConfig()
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, in.CorsoPassphrase, out.CorsoPassphrase)
|
assert.Equal(t, in.CorsoPassphrase, out.CorsoPassphrase)
|
||||||
}
|
}
|
||||||
@ -65,7 +66,7 @@ func (suite *CommonCfgSuite) TestStorage_CommonConfig_InvalidCases() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
_, err := storage.NewStorage(storage.ProviderUnknown, test.cfg)
|
_, err := storage.NewStorage(storage.ProviderUnknown, test.cfg)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,10 +85,10 @@ func (suite *CommonCfgSuite) TestStorage_CommonConfig_InvalidCases() {
|
|||||||
for _, test := range table2 {
|
for _, test := range table2 {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
st, err := storage.NewStorage(storage.ProviderUnknown, goodCommonConfig)
|
st, err := storage.NewStorage(storage.ProviderUnknown, goodCommonConfig)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
test.amend(st)
|
test.amend(st)
|
||||||
_, err = st.CommonConfig()
|
_, err = st.CommonConfig()
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,8 +3,8 @@ package storage
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ var (
|
|||||||
func (suite *S3CfgSuite) TestS3Config_Config() {
|
func (suite *S3CfgSuite) TestS3Config_Config() {
|
||||||
s3 := goodS3Config
|
s3 := goodS3Config
|
||||||
c, err := s3.StringConfig()
|
c, err := s3.StringConfig()
|
||||||
assert.NoError(suite.T(), err)
|
aw.NoErr(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
key string
|
key string
|
||||||
@ -57,9 +57,9 @@ func (suite *S3CfgSuite) TestStorage_S3Config() {
|
|||||||
|
|
||||||
in := goodS3Config
|
in := goodS3Config
|
||||||
s, err := NewStorage(ProviderS3, in)
|
s, err := NewStorage(ProviderS3, in)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
out, err := s.S3Config()
|
out, err := s.S3Config()
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
|
|
||||||
assert.Equal(t, in.Bucket, out.Bucket)
|
assert.Equal(t, in.Bucket, out.Bucket)
|
||||||
assert.Equal(t, in.Endpoint, out.Endpoint)
|
assert.Equal(t, in.Endpoint, out.Endpoint)
|
||||||
@ -85,7 +85,7 @@ func (suite *S3CfgSuite) TestStorage_S3Config_invalidCases() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
_, err := NewStorage(ProviderUnknown, test.cfg)
|
_, err := NewStorage(ProviderUnknown, test.cfg)
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,10 +104,10 @@ func (suite *S3CfgSuite) TestStorage_S3Config_invalidCases() {
|
|||||||
for _, test := range table2 {
|
for _, test := range table2 {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
st, err := NewStorage(ProviderUnknown, goodS3Config)
|
st, err := NewStorage(ProviderUnknown, goodS3Config)
|
||||||
assert.NoError(t, err)
|
aw.NoErr(t, err)
|
||||||
test.amend(st)
|
test.amend(st)
|
||||||
_, err = st.S3Config()
|
_, err = st.S3Config()
|
||||||
assert.Error(t, err)
|
aw.Err(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -149,7 +149,7 @@ func (suite *S3CfgSuite) TestStorage_S3Config_StringConfig() {
|
|||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
result, err := test.input.StringConfig()
|
result, err := test.input.StringConfig()
|
||||||
require.NoError(t, err)
|
aw.MustNoErr(t, err)
|
||||||
assert.Equal(t, test.expect, result)
|
assert.Equal(t, test.expect, result)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package storage
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
)
|
)
|
||||||
@ -31,10 +32,10 @@ func (suite *StorageSuite) TestNewStorage() {
|
|||||||
c testConfig
|
c testConfig
|
||||||
errCheck assert.ErrorAssertionFunc
|
errCheck assert.ErrorAssertionFunc
|
||||||
}{
|
}{
|
||||||
{"unknown no error", ProviderUnknown, testConfig{"configVal", nil}, assert.NoError},
|
{"unknown no error", ProviderUnknown, testConfig{"configVal", nil}, aw.NoErr},
|
||||||
{"s3 no error", ProviderS3, testConfig{"configVal", nil}, assert.NoError},
|
{"s3 no error", ProviderS3, testConfig{"configVal", nil}, aw.NoErr},
|
||||||
{"unknown w/ error", ProviderUnknown, testConfig{"configVal", assert.AnError}, assert.Error},
|
{"unknown w/ error", ProviderUnknown, testConfig{"configVal", assert.AnError}, aw.Err},
|
||||||
{"s3 w/ error", ProviderS3, testConfig{"configVal", assert.AnError}, assert.Error},
|
{"s3 w/ error", ProviderS3, testConfig{"configVal", assert.AnError}, aw.Err},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.T().Run(test.name, func(t *testing.T) {
|
suite.T().Run(test.name, func(t *testing.T) {
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
"github.com/alcionai/corso/src/internal/model"
|
"github.com/alcionai/corso/src/internal/model"
|
||||||
"github.com/alcionai/corso/src/internal/tester"
|
"github.com/alcionai/corso/src/internal/tester"
|
||||||
|
"github.com/alcionai/corso/src/internal/tester/aw"
|
||||||
"github.com/alcionai/corso/src/pkg/backup"
|
"github.com/alcionai/corso/src/pkg/backup"
|
||||||
"github.com/alcionai/corso/src/pkg/store"
|
"github.com/alcionai/corso/src/pkg/store"
|
||||||
storeMock "github.com/alcionai/corso/src/pkg/store/mock"
|
storeMock "github.com/alcionai/corso/src/pkg/store/mock"
|
||||||
@ -53,12 +54,12 @@ func (suite *StoreBackupUnitSuite) TestGetBackup() {
|
|||||||
{
|
{
|
||||||
name: "gets backup",
|
name: "gets backup",
|
||||||
mock: storeMock.NewMock(&bu, nil),
|
mock: storeMock.NewMock(&bu, nil),
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "errors",
|
name: "errors",
|
||||||
mock: storeMock.NewMock(&bu, assert.AnError),
|
mock: storeMock.NewMock(&bu, assert.AnError),
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -86,12 +87,12 @@ func (suite *StoreBackupUnitSuite) TestGetBackups() {
|
|||||||
{
|
{
|
||||||
name: "gets backups",
|
name: "gets backups",
|
||||||
mock: storeMock.NewMock(&bu, nil),
|
mock: storeMock.NewMock(&bu, nil),
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "errors",
|
name: "errors",
|
||||||
mock: storeMock.NewMock(&bu, assert.AnError),
|
mock: storeMock.NewMock(&bu, assert.AnError),
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -120,12 +121,12 @@ func (suite *StoreBackupUnitSuite) TestDeleteBackup() {
|
|||||||
{
|
{
|
||||||
name: "deletes backup",
|
name: "deletes backup",
|
||||||
mock: storeMock.NewMock(&bu, nil),
|
mock: storeMock.NewMock(&bu, nil),
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "errors",
|
name: "errors",
|
||||||
mock: storeMock.NewMock(&bu, assert.AnError),
|
mock: storeMock.NewMock(&bu, assert.AnError),
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
@ -149,12 +150,12 @@ func (suite *StoreBackupUnitSuite) TestGetDetailsIDFromBackupID() {
|
|||||||
{
|
{
|
||||||
name: "gets details from backup id",
|
name: "gets details from backup id",
|
||||||
mock: storeMock.NewMock(&bu, nil),
|
mock: storeMock.NewMock(&bu, nil),
|
||||||
expect: assert.NoError,
|
expect: aw.NoErr,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "errors",
|
name: "errors",
|
||||||
mock: storeMock.NewMock(&bu, assert.AnError),
|
mock: storeMock.NewMock(&bu, assert.AnError),
|
||||||
expect: assert.Error,
|
expect: aw.Err,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user