diff --git a/src/internal/operations/test/exchange_test.go b/src/internal/operations/test/exchange_test.go index f534c19a7..b0a9ac2ec 100644 --- a/src/internal/operations/test/exchange_test.go +++ b/src/internal/operations/test/exchange_test.go @@ -233,117 +233,6 @@ func (suite *ExchangeBackupIntgSuite) TestBackup_Run_exchange() { } } -func (suite *ExchangeBackupIntgSuite) TestBackup_Run_exchangeBasic_groups9VersionBump() { - t := suite.T() - - ctx, flush := tester.NewContext(t) - defer flush() - - var ( - mb = evmock.NewBus() - counter = count.New() - sel = selectors.NewExchangeBackup([]string{suite.its.user.ID}) - opts = control.DefaultOptions() - ws = deeTD.DriveIDFromRepoRef - ) - - sel.Include( - sel.ContactFolders([]string{api.DefaultContacts}, selectors.PrefixMatch()), - // sel.EventCalendars([]string{api.DefaultCalendar}, selectors.PrefixMatch()), - sel.MailFolders([]string{api.MailInbox}, selectors.PrefixMatch())) - - bo, bod := prepNewTestBackupOp( - t, - ctx, - mb, - sel.Selector, - opts, - version.All8MigrateUserPNToID, - counter) - defer bod.close(t, ctx) - - runAndCheckBackup(t, ctx, &bo, mb, false) - checkBackupIsInManifests( - t, - ctx, - bod.kw, - bod.sw, - &bo, - bod.sel, - bod.sel.ID(), - path.EmailCategory) - - _, expectDeets := deeTD.GetDeetsInBackup( - t, - ctx, - bo.Results.BackupID, - bod.acct.ID(), - bod.sel.ID(), - path.ExchangeService, - ws, - bod.kms, - bod.sss) - deeTD.CheckBackupDetails( - t, - ctx, - bo.Results.BackupID, - ws, - bod.kms, - bod.sss, - expectDeets, - false) - - mb = evmock.NewBus() - counter = count.New() - notForcedFull := newTestBackupOp( - t, - ctx, - bod, - mb, - opts, - counter) - notForcedFull.BackupVersion = version.Groups9Update - - runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) - checkBackupIsInManifests( - t, - ctx, - bod.kw, - bod.sw, - ¬ForcedFull, - bod.sel, - bod.sel.ID(), - path.EmailCategory) - - _, expectDeets = deeTD.GetDeetsInBackup( - t, - ctx, - notForcedFull.Results.BackupID, - bod.acct.ID(), - bod.sel.ID(), - path.ExchangeService, - ws, - bod.kms, - bod.sss) - deeTD.CheckBackupDetails( - t, - ctx, - notForcedFull.Results.BackupID, - ws, - bod.kms, - bod.sss, - expectDeets, - false) - - // The number of items backed up in the second backup should be less than the - // number of items in the original backup. - assert.Greater( - t, - bo.Results.Counts[string(count.PersistedNonCachedFiles)], - notForcedFull.Results.Counts[string(count.PersistedNonCachedFiles)], - "items written") -} - func (suite *ExchangeBackupIntgSuite) TestBackup_Run_incrementalExchange() { testExchangeContinuousBackups(suite, control.Toggles{}) } @@ -998,6 +887,134 @@ func testExchangeContinuousBackups(suite *ExchangeBackupIntgSuite, toggles contr } } +type ExchangeBackupNightlyIntgSuite struct { + tester.Suite + its intgTesterSetup +} + +func TestExchangeBackupNightlyIntgSuite(t *testing.T) { + suite.Run(t, &ExchangeBackupNightlyIntgSuite{ + Suite: tester.NewNightlySuite( + t, + [][]string{tconfig.M365AcctCredEnvs, storeTD.AWSStorageCredEnvs}), + }) +} + +func (suite *ExchangeBackupNightlyIntgSuite) SetupSuite() { + suite.its = newIntegrationTesterSetup(suite.T()) +} + +func (suite *ExchangeBackupNightlyIntgSuite) TestBackup_Run_exchangeBasic_groups9VersionBump() { + t := suite.T() + + ctx, flush := tester.NewContext(t) + defer flush() + + var ( + mb = evmock.NewBus() + counter = count.New() + sel = selectors.NewExchangeBackup([]string{suite.its.user.ID}) + opts = control.DefaultOptions() + ws = deeTD.DriveIDFromRepoRef + ) + + sel.Include( + sel.ContactFolders([]string{api.DefaultContacts}, selectors.PrefixMatch()), + // sel.EventCalendars([]string{api.DefaultCalendar}, selectors.PrefixMatch()), + sel.MailFolders([]string{api.MailInbox}, selectors.PrefixMatch())) + + bo, bod := prepNewTestBackupOp( + t, + ctx, + mb, + sel.Selector, + opts, + version.All8MigrateUserPNToID, + counter) + defer bod.close(t, ctx) + + runAndCheckBackup(t, ctx, &bo, mb, false) + checkBackupIsInManifests( + t, + ctx, + bod.kw, + bod.sw, + &bo, + bod.sel, + bod.sel.ID(), + path.EmailCategory) + + _, expectDeets := deeTD.GetDeetsInBackup( + t, + ctx, + bo.Results.BackupID, + bod.acct.ID(), + bod.sel.ID(), + path.ExchangeService, + ws, + bod.kms, + bod.sss) + deeTD.CheckBackupDetails( + t, + ctx, + bo.Results.BackupID, + ws, + bod.kms, + bod.sss, + expectDeets, + false) + + mb = evmock.NewBus() + counter = count.New() + notForcedFull := newTestBackupOp( + t, + ctx, + bod, + mb, + opts, + counter) + notForcedFull.BackupVersion = version.Groups9Update + + runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) + checkBackupIsInManifests( + t, + ctx, + bod.kw, + bod.sw, + ¬ForcedFull, + bod.sel, + bod.sel.ID(), + path.EmailCategory) + + _, expectDeets = deeTD.GetDeetsInBackup( + t, + ctx, + notForcedFull.Results.BackupID, + bod.acct.ID(), + bod.sel.ID(), + path.ExchangeService, + ws, + bod.kms, + bod.sss) + deeTD.CheckBackupDetails( + t, + ctx, + notForcedFull.Results.BackupID, + ws, + bod.kms, + bod.sss, + expectDeets, + false) + + // The number of items backed up in the second backup should be less than the + // number of items in the original backup. + assert.Greater( + t, + bo.Results.Counts[string(count.PersistedNonCachedFiles)], + notForcedFull.Results.Counts[string(count.PersistedNonCachedFiles)], + "items written") +} + type ExchangeRestoreNightlyIntgSuite struct { tester.Suite its intgTesterSetup diff --git a/src/internal/operations/test/group_test.go b/src/internal/operations/test/group_test.go index 81c083882..1d9afc924 100644 --- a/src/internal/operations/test/group_test.go +++ b/src/internal/operations/test/group_test.go @@ -80,125 +80,6 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_incrementalGroups() { true) } -func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsBasic_groups9VersionBump() { - t := suite.T() - - ctx, flush := tester.NewContext(t) - defer flush() - - var ( - mb = evmock.NewBus() - counter = count.New() - sel = selectors.NewGroupsBackup([]string{suite.its.group.ID}) - opts = control.DefaultOptions() - whatSet = deeTD.CategoryFromRepoRef - ) - - sel.Include( - selTD.GroupsBackupLibraryFolderScope(sel), - selTD.GroupsBackupChannelScope(sel)) - - bo, bod := prepNewTestBackupOp( - t, - ctx, - mb, - sel.Selector, - opts, - version.All8MigrateUserPNToID, - counter) - defer bod.close(t, ctx) - - runAndCheckBackup(t, ctx, &bo, mb, false) - checkBackupIsInManifests( - t, - ctx, - bod.kw, - bod.sw, - &bo, - bod.sel, - bod.sel.ID(), - path.ChannelMessagesCategory) - - _, expectDeets := deeTD.GetDeetsInBackup( - t, - ctx, - bo.Results.BackupID, - bod.acct.ID(), - bod.sel.ID(), - path.GroupsService, - whatSet, - bod.kms, - bod.sss) - deeTD.CheckBackupDetails( - t, - ctx, - bo.Results.BackupID, - whatSet, - bod.kms, - bod.sss, - expectDeets, - false) - - mb = evmock.NewBus() - counter = count.New() - forcedFull := newTestBackupOp( - t, - ctx, - bod, - mb, - opts, - counter) - forcedFull.BackupVersion = version.Groups9Update - - runAndCheckBackup(t, ctx, &forcedFull, mb, false) - checkBackupIsInManifests( - t, - ctx, - bod.kw, - bod.sw, - &forcedFull, - bod.sel, - bod.sel.ID(), - path.ChannelMessagesCategory) - - _, expectDeets = deeTD.GetDeetsInBackup( - t, - ctx, - forcedFull.Results.BackupID, - bod.acct.ID(), - bod.sel.ID(), - path.GroupsService, - whatSet, - bod.kms, - bod.sss) - deeTD.CheckBackupDetails( - t, - ctx, - forcedFull.Results.BackupID, - whatSet, - bod.kms, - bod.sss, - expectDeets, - false) - - // The number of items backed up in the forced full backup should be roughly - // the same as the number of items in the original backup. - assert.Equal( - t, - bo.Results.Counts[string(count.PersistedNonCachedFiles)], - forcedFull.Results.Counts[string(count.PersistedNonCachedFiles)], - "items written") -} - -func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsVersion9AssistBases() { - sel := selectors.NewGroupsBackup([]string{suite.its.group.ID}) - sel.Include( - selTD.GroupsBackupLibraryFolderScope(sel), - selTD.GroupsBackupChannelScope(sel)) - - runDriveAssistBaseGroupsUpdate(suite, sel.Selector, false) -} - func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsBasic() { t := suite.T() @@ -317,6 +198,142 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsExtensions() { } } +type GroupsBackupNightlyIntgSuite struct { + tester.Suite + its intgTesterSetup +} + +func TestGroupsBackupNightlyIntgSuite(t *testing.T) { + suite.Run(t, &GroupsBackupNightlyIntgSuite{ + Suite: tester.NewNightlySuite( + t, + [][]string{tconfig.M365AcctCredEnvs, storeTD.AWSStorageCredEnvs}), + }) +} + +func (suite *GroupsBackupNightlyIntgSuite) SetupSuite() { + suite.its = newIntegrationTesterSetup(suite.T()) +} + +func (suite *GroupsBackupNightlyIntgSuite) TestBackup_Run_groupsBasic_groups9VersionBump() { + t := suite.T() + + ctx, flush := tester.NewContext(t) + defer flush() + + var ( + mb = evmock.NewBus() + counter = count.New() + sel = selectors.NewGroupsBackup([]string{suite.its.group.ID}) + opts = control.DefaultOptions() + whatSet = deeTD.CategoryFromRepoRef + ) + + sel.Include( + selTD.GroupsBackupLibraryFolderScope(sel), + selTD.GroupsBackupChannelScope(sel)) + + bo, bod := prepNewTestBackupOp( + t, + ctx, + mb, + sel.Selector, + opts, + version.All8MigrateUserPNToID, + counter) + defer bod.close(t, ctx) + + runAndCheckBackup(t, ctx, &bo, mb, false) + checkBackupIsInManifests( + t, + ctx, + bod.kw, + bod.sw, + &bo, + bod.sel, + bod.sel.ID(), + path.ChannelMessagesCategory) + + _, expectDeets := deeTD.GetDeetsInBackup( + t, + ctx, + bo.Results.BackupID, + bod.acct.ID(), + bod.sel.ID(), + path.GroupsService, + whatSet, + bod.kms, + bod.sss) + deeTD.CheckBackupDetails( + t, + ctx, + bo.Results.BackupID, + whatSet, + bod.kms, + bod.sss, + expectDeets, + false) + + mb = evmock.NewBus() + counter = count.New() + forcedFull := newTestBackupOp( + t, + ctx, + bod, + mb, + opts, + counter) + forcedFull.BackupVersion = version.Groups9Update + + runAndCheckBackup(t, ctx, &forcedFull, mb, false) + checkBackupIsInManifests( + t, + ctx, + bod.kw, + bod.sw, + &forcedFull, + bod.sel, + bod.sel.ID(), + path.ChannelMessagesCategory) + + _, expectDeets = deeTD.GetDeetsInBackup( + t, + ctx, + forcedFull.Results.BackupID, + bod.acct.ID(), + bod.sel.ID(), + path.GroupsService, + whatSet, + bod.kms, + bod.sss) + deeTD.CheckBackupDetails( + t, + ctx, + forcedFull.Results.BackupID, + whatSet, + bod.kms, + bod.sss, + expectDeets, + false) + + // The number of items backed up in the forced full backup should be roughly + // the same as the number of items in the original backup. + assert.Equal( + t, + bo.Results.Counts[string(count.PersistedNonCachedFiles)], + forcedFull.Results.Counts[string(count.PersistedNonCachedFiles)], + "items written") +} + +func (suite *GroupsBackupNightlyIntgSuite) TestBackup_Run_groupsVersion9AssistBases() { + sel := selectors.NewGroupsBackup([]string{suite.its.group.ID}) + sel.Include( + selTD.GroupsBackupLibraryFolderScope(sel), + selTD.GroupsBackupChannelScope(sel)) + + runDriveAssistBaseGroupsUpdate(suite, sel.Selector, false) +} + type GroupsRestoreNightlyIntgSuite struct { tester.Suite its intgTesterSetup diff --git a/src/internal/operations/test/onedrive_test.go b/src/internal/operations/test/onedrive_test.go index 16d3a6518..8f3a610c1 100644 --- a/src/internal/operations/test/onedrive_test.go +++ b/src/internal/operations/test/onedrive_test.go @@ -111,122 +111,6 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDrive() { false) } -func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveBasic_groups9VersionBump() { - t := suite.T() - - ctx, flush := tester.NewContext(t) - defer flush() - - var ( - mb = evmock.NewBus() - counter = count.New() - userID = tconfig.SecondaryM365UserID(t) - osel = selectors.NewOneDriveBackup([]string{userID}) - ws = deeTD.DriveIDFromRepoRef - opts = control.DefaultOptions() - ) - - osel.Include(selTD.OneDriveBackupFolderScope(osel)) - - bo, bod := prepNewTestBackupOp( - t, - ctx, - mb, - osel.Selector, - opts, - version.All8MigrateUserPNToID, - counter) - defer bod.close(t, ctx) - - runAndCheckBackup(t, ctx, &bo, mb, false) - checkBackupIsInManifests( - t, - ctx, - bod.kw, - bod.sw, - &bo, - bod.sel, - bod.sel.ID(), - path.FilesCategory) - - _, expectDeets := deeTD.GetDeetsInBackup( - t, - ctx, - bo.Results.BackupID, - bod.acct.ID(), - bod.sel.ID(), - path.OneDriveService, - ws, - bod.kms, - bod.sss) - deeTD.CheckBackupDetails( - t, - ctx, - bo.Results.BackupID, - ws, - bod.kms, - bod.sss, - expectDeets, - false) - - mb = evmock.NewBus() - counter = count.New() - notForcedFull := newTestBackupOp( - t, - ctx, - bod, - mb, - opts, - counter) - notForcedFull.BackupVersion = version.Groups9Update - - runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) - checkBackupIsInManifests( - t, - ctx, - bod.kw, - bod.sw, - ¬ForcedFull, - bod.sel, - bod.sel.ID(), - path.FilesCategory) - - _, expectDeets = deeTD.GetDeetsInBackup( - t, - ctx, - notForcedFull.Results.BackupID, - bod.acct.ID(), - bod.sel.ID(), - path.OneDriveService, - ws, - bod.kms, - bod.sss) - deeTD.CheckBackupDetails( - t, - ctx, - notForcedFull.Results.BackupID, - ws, - bod.kms, - bod.sss, - expectDeets, - false) - - // The number of items backed up in the second backup should be less than the - // number of items in the original backup. - assert.Greater( - t, - bo.Results.Counts[string(count.PersistedNonCachedFiles)], - notForcedFull.Results.Counts[string(count.PersistedNonCachedFiles)], - "items written") -} - -//func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveVersion9AssistBases() { -// sel := selectors.NewOneDriveBackup([]string{tconfig.SecondaryM365UserID(suite.T())}) -// sel.Include(selTD.OneDriveBackupFolderScope(sel)) -// -// runDriveAssistBaseGroupsUpdate(suite, sel.Selector, true) -//} - func (suite *OneDriveBackupIntgSuite) TestBackup_Run_incrementalOneDrive() { sel := selectors.NewOneDriveRestore([]string{suite.its.user.ID}) @@ -1299,6 +1183,139 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveExtensions() { } } +type OneDriveBackupNightlyIntgSuite struct { + tester.Suite + its intgTesterSetup +} + +func TestOneDriveBackupNightlyIntgSuite(t *testing.T) { + suite.Run(t, &OneDriveBackupIntgSuite{ + Suite: tester.NewNightlySuite( + t, + [][]string{tconfig.M365AcctCredEnvs, storeTD.AWSStorageCredEnvs}), + }) +} + +func (suite *OneDriveBackupNightlyIntgSuite) SetupSuite() { + suite.its = newIntegrationTesterSetup(suite.T()) +} + +func (suite *OneDriveBackupNightlyIntgSuite) TestBackup_Run_oneDriveBasic_groups9VersionBump() { + t := suite.T() + + ctx, flush := tester.NewContext(t) + defer flush() + + var ( + mb = evmock.NewBus() + counter = count.New() + userID = tconfig.SecondaryM365UserID(t) + osel = selectors.NewOneDriveBackup([]string{userID}) + ws = deeTD.DriveIDFromRepoRef + opts = control.DefaultOptions() + ) + + osel.Include(selTD.OneDriveBackupFolderScope(osel)) + + bo, bod := prepNewTestBackupOp( + t, + ctx, + mb, + osel.Selector, + opts, + version.All8MigrateUserPNToID, + counter) + defer bod.close(t, ctx) + + runAndCheckBackup(t, ctx, &bo, mb, false) + checkBackupIsInManifests( + t, + ctx, + bod.kw, + bod.sw, + &bo, + bod.sel, + bod.sel.ID(), + path.FilesCategory) + + _, expectDeets := deeTD.GetDeetsInBackup( + t, + ctx, + bo.Results.BackupID, + bod.acct.ID(), + bod.sel.ID(), + path.OneDriveService, + ws, + bod.kms, + bod.sss) + deeTD.CheckBackupDetails( + t, + ctx, + bo.Results.BackupID, + ws, + bod.kms, + bod.sss, + expectDeets, + false) + + mb = evmock.NewBus() + counter = count.New() + notForcedFull := newTestBackupOp( + t, + ctx, + bod, + mb, + opts, + counter) + notForcedFull.BackupVersion = version.Groups9Update + + runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) + checkBackupIsInManifests( + t, + ctx, + bod.kw, + bod.sw, + ¬ForcedFull, + bod.sel, + bod.sel.ID(), + path.FilesCategory) + + _, expectDeets = deeTD.GetDeetsInBackup( + t, + ctx, + notForcedFull.Results.BackupID, + bod.acct.ID(), + bod.sel.ID(), + path.OneDriveService, + ws, + bod.kms, + bod.sss) + deeTD.CheckBackupDetails( + t, + ctx, + notForcedFull.Results.BackupID, + ws, + bod.kms, + bod.sss, + expectDeets, + false) + + // The number of items backed up in the second backup should be less than the + // number of items in the original backup. + assert.Greater( + t, + bo.Results.Counts[string(count.PersistedNonCachedFiles)], + notForcedFull.Results.Counts[string(count.PersistedNonCachedFiles)], + "items written") +} + +//func (suite *OneDriveBackupNightlyIntgSuite) TestBackup_Run_oneDriveVersion9AssistBases() { +// sel := selectors.NewOneDriveBackup([]string{tconfig.SecondaryM365UserID(suite.T())}) +// sel.Include(selTD.OneDriveBackupFolderScope(sel)) +// +// runDriveAssistBaseGroupsUpdate(suite, sel.Selector, true) +//} + type OneDriveRestoreNightlyIntgSuite struct { tester.Suite its intgTesterSetup diff --git a/src/internal/operations/test/sharepoint_test.go b/src/internal/operations/test/sharepoint_test.go index 1449b0f02..f791b41c3 100644 --- a/src/internal/operations/test/sharepoint_test.go +++ b/src/internal/operations/test/sharepoint_test.go @@ -46,121 +46,6 @@ func (suite *SharePointBackupIntgSuite) SetupSuite() { suite.its = newIntegrationTesterSetup(suite.T()) } -func (suite *SharePointBackupIntgSuite) TestBackup_Run_sharePointBasic_groups9VersionBump() { - t := suite.T() - - ctx, flush := tester.NewContext(t) - defer flush() - - var ( - mb = evmock.NewBus() - counter = count.New() - sel = selectors.NewSharePointBackup([]string{suite.its.site.ID}) - opts = control.DefaultOptions() - ws = deeTD.DriveIDFromRepoRef - ) - - sel.Include(selTD.SharePointBackupFolderScope(sel)) - - bo, bod := prepNewTestBackupOp( - t, - ctx, - mb, - sel.Selector, - opts, - version.All8MigrateUserPNToID, - counter) - defer bod.close(t, ctx) - - runAndCheckBackup(t, ctx, &bo, mb, false) - checkBackupIsInManifests( - t, - ctx, - bod.kw, - bod.sw, - &bo, - bod.sel, - bod.sel.ID(), - path.LibrariesCategory) - - _, expectDeets := deeTD.GetDeetsInBackup( - t, - ctx, - bo.Results.BackupID, - bod.acct.ID(), - bod.sel.ID(), - path.SharePointService, - ws, - bod.kms, - bod.sss) - deeTD.CheckBackupDetails( - t, - ctx, - bo.Results.BackupID, - ws, - bod.kms, - bod.sss, - expectDeets, - false) - - mb = evmock.NewBus() - counter = count.New() - notForcedFull := newTestBackupOp( - t, - ctx, - bod, - mb, - opts, - counter) - notForcedFull.BackupVersion = version.Groups9Update - - runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) - checkBackupIsInManifests( - t, - ctx, - bod.kw, - bod.sw, - ¬ForcedFull, - bod.sel, - bod.sel.ID(), - path.LibrariesCategory) - - _, expectDeets = deeTD.GetDeetsInBackup( - t, - ctx, - notForcedFull.Results.BackupID, - bod.acct.ID(), - bod.sel.ID(), - path.SharePointService, - ws, - bod.kms, - bod.sss) - deeTD.CheckBackupDetails( - t, - ctx, - notForcedFull.Results.BackupID, - ws, - bod.kms, - bod.sss, - expectDeets, - false) - - // The number of items backed up in the second backup should be less than the - // number of items in the original backup. - assert.Greater( - t, - bo.Results.Counts[string(count.PersistedNonCachedFiles)], - notForcedFull.Results.Counts[string(count.PersistedNonCachedFiles)], - "items written") -} - -func (suite *SharePointBackupIntgSuite) TestBackup_Run_sharePointVersion9AssistBases() { - sel := selectors.NewSharePointBackup([]string{suite.its.site.ID}) - sel.Include(selTD.SharePointBackupFolderScope(sel)) - - runDriveAssistBaseGroupsUpdate(suite, sel.Selector, true) -} - func (suite *SharePointBackupIntgSuite) TestBackup_Run_incrementalSharePoint() { sel := selectors.NewSharePointRestore([]string{suite.its.site.ID}) @@ -298,6 +183,138 @@ func (suite *SharePointBackupIntgSuite) TestBackup_Run_sharePointExtensions() { } } +type SharePointBackupNightlyIntgSuite struct { + tester.Suite + its intgTesterSetup +} + +func TestSharePointBackupNightlyIntgSuite(t *testing.T) { + suite.Run(t, &SharePointBackupNightlyIntgSuite{ + Suite: tester.NewNightlySuite( + t, + [][]string{tconfig.M365AcctCredEnvs, storeTD.AWSStorageCredEnvs}), + }) +} + +func (suite *SharePointBackupNightlyIntgSuite) SetupSuite() { + suite.its = newIntegrationTesterSetup(suite.T()) +} + +func (suite *SharePointBackupNightlyIntgSuite) TestBackup_Run_sharePointBasic_groups9VersionBump() { + t := suite.T() + + ctx, flush := tester.NewContext(t) + defer flush() + + var ( + mb = evmock.NewBus() + counter = count.New() + sel = selectors.NewSharePointBackup([]string{suite.its.site.ID}) + opts = control.DefaultOptions() + ws = deeTD.DriveIDFromRepoRef + ) + + sel.Include(selTD.SharePointBackupFolderScope(sel)) + + bo, bod := prepNewTestBackupOp( + t, + ctx, + mb, + sel.Selector, + opts, + version.All8MigrateUserPNToID, + counter) + defer bod.close(t, ctx) + + runAndCheckBackup(t, ctx, &bo, mb, false) + checkBackupIsInManifests( + t, + ctx, + bod.kw, + bod.sw, + &bo, + bod.sel, + bod.sel.ID(), + path.LibrariesCategory) + + _, expectDeets := deeTD.GetDeetsInBackup( + t, + ctx, + bo.Results.BackupID, + bod.acct.ID(), + bod.sel.ID(), + path.SharePointService, + ws, + bod.kms, + bod.sss) + deeTD.CheckBackupDetails( + t, + ctx, + bo.Results.BackupID, + ws, + bod.kms, + bod.sss, + expectDeets, + false) + + mb = evmock.NewBus() + counter = count.New() + notForcedFull := newTestBackupOp( + t, + ctx, + bod, + mb, + opts, + counter) + notForcedFull.BackupVersion = version.Groups9Update + + runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) + checkBackupIsInManifests( + t, + ctx, + bod.kw, + bod.sw, + ¬ForcedFull, + bod.sel, + bod.sel.ID(), + path.LibrariesCategory) + + _, expectDeets = deeTD.GetDeetsInBackup( + t, + ctx, + notForcedFull.Results.BackupID, + bod.acct.ID(), + bod.sel.ID(), + path.SharePointService, + ws, + bod.kms, + bod.sss) + deeTD.CheckBackupDetails( + t, + ctx, + notForcedFull.Results.BackupID, + ws, + bod.kms, + bod.sss, + expectDeets, + false) + + // The number of items backed up in the second backup should be less than the + // number of items in the original backup. + assert.Greater( + t, + bo.Results.Counts[string(count.PersistedNonCachedFiles)], + notForcedFull.Results.Counts[string(count.PersistedNonCachedFiles)], + "items written") +} + +func (suite *SharePointBackupNightlyIntgSuite) TestBackup_Run_sharePointVersion9AssistBases() { + sel := selectors.NewSharePointBackup([]string{suite.its.site.ID}) + sel.Include(selTD.SharePointBackupFolderScope(sel)) + + runDriveAssistBaseGroupsUpdate(suite, sel.Selector, true) +} + type SharePointRestoreNightlyIntgSuite struct { tester.Suite its intgTesterSetup