normalize folders restored in testing (#3363)

Normalize all test folders to use a constant prefix: Corso_Test.  This cleans up and centralizes all per- test variations on the restore destination.

---

#### Does this PR need a docs update or release note?

- [x]  No

#### Type of change

- [x] 🤖 Supportability/Tests

#### Test Plan

- [x]  Unit test
- [x] 💚 E2E
This commit is contained in:
Keepers 2023-05-10 19:02:30 -06:00 committed by GitHub
parent 7b378f6013
commit 833216c8ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 112 additions and 95 deletions

View File

@ -126,7 +126,7 @@ jobs:
go run . exchange emails \ go run . exchange emails \
--user ${TEST_USER} \ --user ${TEST_USER} \
--tenant ${{ env.AZURE_TENANT_ID }} \ --tenant ${{ env.AZURE_TENANT_ID }} \
--destination Corso_Restore_st_${{ steps.repo-init.outputs.result }} \ --destination Corso_Test_sanity${{ steps.repo-init.outputs.result }} \
--count 4 --count 4
- name: Backup exchange test - name: Backup exchange test
@ -192,7 +192,7 @@ jobs:
echo -e "\nBackup Exchange restore test\n" >> ${CORSO_LOG_FILE} echo -e "\nBackup Exchange restore test\n" >> ${CORSO_LOG_FILE}
./corso restore exchange \ ./corso restore exchange \
--no-stats \ --no-stats \
--email-folder Corso_Restore_st_${{ steps.repo-init.outputs.result }} \ --email-folder Corso_Test_sanity${{ steps.repo-init.outputs.result }} \
--hide-progress \ --hide-progress \
--backup "${{ steps.exchange-test.outputs.result }}" \ --backup "${{ steps.exchange-test.outputs.result }}" \
2>&1 | tee $TEST_RESULT/exchange-restore-test.txt 2>&1 | tee $TEST_RESULT/exchange-restore-test.txt
@ -202,7 +202,7 @@ jobs:
env: env:
SANITY_RESTORE_FOLDER: ${{ steps.exchange-restore-test.outputs.result }} SANITY_RESTORE_FOLDER: ${{ steps.exchange-restore-test.outputs.result }}
SANITY_RESTORE_SERVICE: "exchange" SANITY_RESTORE_SERVICE: "exchange"
TEST_DATA: Corso_Restore_st_${{ steps.repo-init.outputs.result }} TEST_DATA: Corso_Test_sanity${{ steps.repo-init.outputs.result }}
run: | run: |
set -euo pipefail set -euo pipefail
./sanityTest ./sanityTest
@ -239,7 +239,7 @@ jobs:
--no-stats \ --no-stats \
--hide-progress \ --hide-progress \
--backup "${{ steps.exchange-incremental-test.outputs.result }}" \ --backup "${{ steps.exchange-incremental-test.outputs.result }}" \
--email-folder Corso_Restore_st_${{ steps.repo-init.outputs.result }} \ --email-folder Corso_Test_sanity${{ steps.repo-init.outputs.result }} \
2>&1 | tee $TEST_RESULT/exchange-incremantal-restore-test.txt 2>&1 | tee $TEST_RESULT/exchange-incremantal-restore-test.txt
echo result=$(grep -i -e 'Restoring to folder ' $TEST_RESULT/exchange-incremantal-restore-test.txt | sed "s/Restoring to folder//" ) >> $GITHUB_OUTPUT echo result=$(grep -i -e 'Restoring to folder ' $TEST_RESULT/exchange-incremantal-restore-test.txt | sed "s/Restoring to folder//" ) >> $GITHUB_OUTPUT
@ -247,7 +247,7 @@ jobs:
env: env:
SANITY_RESTORE_FOLDER: ${{ steps.exchange-incremantal-restore-test.outputs.result }} SANITY_RESTORE_FOLDER: ${{ steps.exchange-incremantal-restore-test.outputs.result }}
SANITY_RESTORE_SERVICE: "exchange" SANITY_RESTORE_SERVICE: "exchange"
TEST_DATA: Corso_Restore_st_${{ steps.repo-init.outputs.result }} TEST_DATA: Corso_Test_sanity${{ steps.repo-init.outputs.result }}
BASE_BACKUP: ${{ steps.exchange-restore-test.outputs.result }} BASE_BACKUP: ${{ steps.exchange-restore-test.outputs.result }}
run: | run: |
set -euo pipefail set -euo pipefail
@ -272,7 +272,7 @@ jobs:
--user ${TEST_USER} \ --user ${TEST_USER} \
--secondaryuser ${{ env.SECONDARY_TEST_USER }} \ --secondaryuser ${{ env.SECONDARY_TEST_USER }} \
--tenant ${{ env.AZURE_TENANT_ID }} \ --tenant ${{ env.AZURE_TENANT_ID }} \
--destination Corso_Restore_st_$suffix \ --destination Corso_Test_sanity$suffix \
--count 4 --count 4
echo result="$suffix" >> $GITHUB_OUTPUT echo result="$suffix" >> $GITHUB_OUTPUT
@ -341,7 +341,7 @@ jobs:
./corso restore onedrive \ ./corso restore onedrive \
--no-stats \ --no-stats \
--restore-permissions \ --restore-permissions \
--folder Corso_Restore_st_${{ steps.new-data-creation-onedrive.outputs.result }} \ --folder Corso_Test_sanity${{ steps.new-data-creation-onedrive.outputs.result }} \
--hide-progress \ --hide-progress \
--backup "${{ steps.onedrive-test.outputs.result }}" \ --backup "${{ steps.onedrive-test.outputs.result }}" \
2>&1 | tee $TEST_RESULT/onedrive-restore-test.txt 2>&1 | tee $TEST_RESULT/onedrive-restore-test.txt
@ -351,7 +351,7 @@ jobs:
env: env:
SANITY_RESTORE_FOLDER: ${{ steps.onedrive-restore-test.outputs.result }} SANITY_RESTORE_FOLDER: ${{ steps.onedrive-restore-test.outputs.result }}
SANITY_RESTORE_SERVICE: "onedrive" SANITY_RESTORE_SERVICE: "onedrive"
TEST_DATA: Corso_Restore_st_${{ steps.new-data-creation-onedrive.outputs.result }} TEST_DATA: Corso_Test_sanity${{ steps.new-data-creation-onedrive.outputs.result }}
run: | run: |
set -euo pipefail set -euo pipefail
./sanityTest ./sanityTest
@ -368,7 +368,7 @@ jobs:
--user ${TEST_USER} \ --user ${TEST_USER} \
--secondaryuser ${{ env.SECONDARY_TEST_USER }} \ --secondaryuser ${{ env.SECONDARY_TEST_USER }} \
--tenant ${{ env.AZURE_TENANT_ID }} \ --tenant ${{ env.AZURE_TENANT_ID }} \
--destination Corso_Restore_st_${{ steps.new-data-creation-onedrive.outputs.result }} \ --destination Corso_Test_sanity${{ steps.new-data-creation-onedrive.outputs.result }} \
--count 4 --count 4
# incremental backup # incremental backup
@ -404,7 +404,7 @@ jobs:
--no-stats \ --no-stats \
--restore-permissions \ --restore-permissions \
--hide-progress \ --hide-progress \
--folder Corso_Restore_st_${{ steps.new-data-creation-onedrive.outputs.result }} \ --folder Corso_Test_sanity${{ steps.new-data-creation-onedrive.outputs.result }} \
--backup "${{ steps.onedrive-incremental-test.outputs.result }}" \ --backup "${{ steps.onedrive-incremental-test.outputs.result }}" \
2>&1 | tee $TEST_RESULT/onedrive-incremental-restore-test.txt 2>&1 | tee $TEST_RESULT/onedrive-incremental-restore-test.txt
echo result=$(grep -i -e 'Restoring to folder ' $TEST_RESULT/onedrive-incremental-restore-test.txt | sed "s/Restoring to folder//") >> $GITHUB_OUTPUT echo result=$(grep -i -e 'Restoring to folder ' $TEST_RESULT/onedrive-incremental-restore-test.txt | sed "s/Restoring to folder//") >> $GITHUB_OUTPUT
@ -413,7 +413,7 @@ jobs:
env: env:
SANITY_RESTORE_FOLDER: ${{ steps.onedrive-incremental-restore-test.outputs.result }} SANITY_RESTORE_FOLDER: ${{ steps.onedrive-incremental-restore-test.outputs.result }}
SANITY_RESTORE_SERVICE: "onedrive" SANITY_RESTORE_SERVICE: "onedrive"
TEST_DATA: Corso_Restore_st_${{ steps.new-data-creation-onedrive.outputs.result }} TEST_DATA: Corso_Test_sanity${{ steps.new-data-creation-onedrive.outputs.result }}
run: | run: |
set -euo pipefail set -euo pipefail
./sanityTest ./sanityTest

View File

@ -22,6 +22,7 @@ import (
"github.com/alcionai/corso/src/pkg/account" "github.com/alcionai/corso/src/pkg/account"
"github.com/alcionai/corso/src/pkg/repository" "github.com/alcionai/corso/src/pkg/repository"
"github.com/alcionai/corso/src/pkg/selectors" "github.com/alcionai/corso/src/pkg/selectors"
selTD "github.com/alcionai/corso/src/pkg/selectors/testdata"
"github.com/alcionai/corso/src/pkg/storage" "github.com/alcionai/corso/src/pkg/storage"
) )
@ -172,7 +173,7 @@ func (suite *BackupDeleteOneDriveE2ESuite) SetupSuite() {
// some tests require an existing backup // some tests require an existing backup
sel := selectors.NewOneDriveBackup(users) sel := selectors.NewOneDriveBackup(users)
sel.Include(sel.Folders(selectors.Any())) sel.Include(selTD.OneDriveBackupFolderScope(sel))
backupOp, err := suite.repo.NewBackupWithLookup(ctx, sel.Selector, ins) backupOp, err := suite.repo.NewBackupWithLookup(ctx, sel.Selector, ins)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))

View File

@ -20,7 +20,7 @@ import (
"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"
"github.com/alcionai/corso/src/pkg/selectors" "github.com/alcionai/corso/src/pkg/selectors"
"github.com/alcionai/corso/src/pkg/selectors/testdata" selTD "github.com/alcionai/corso/src/pkg/selectors/testdata"
) )
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@ -160,7 +160,7 @@ func (suite *DataCollectionIntgSuite) TestDataCollections_invalidResourceOwner()
name: "Invalid onedrive backup user", name: "Invalid onedrive backup user",
getSelector: func(t *testing.T) selectors.Selector { getSelector: func(t *testing.T) selectors.Selector {
sel := selectors.NewOneDriveBackup(owners) sel := selectors.NewOneDriveBackup(owners)
sel.Include(sel.Folders(selectors.Any())) sel.Include(selTD.OneDriveBackupFolderScope(sel))
return sel.Selector return sel.Selector
}, },
}, },
@ -168,7 +168,7 @@ func (suite *DataCollectionIntgSuite) TestDataCollections_invalidResourceOwner()
name: "Invalid sharepoint backup site", name: "Invalid sharepoint backup site",
getSelector: func(t *testing.T) selectors.Selector { getSelector: func(t *testing.T) selectors.Selector {
sel := selectors.NewSharePointBackup(owners) sel := selectors.NewSharePointBackup(owners)
sel.Include(testdata.SharePointBackupFolderScope(sel)) sel.Include(selTD.SharePointBackupFolderScope(sel))
return sel.Selector return sel.Selector
}, },
}, },
@ -185,7 +185,7 @@ func (suite *DataCollectionIntgSuite) TestDataCollections_invalidResourceOwner()
name: "missing onedrive backup user", name: "missing onedrive backup user",
getSelector: func(t *testing.T) selectors.Selector { getSelector: func(t *testing.T) selectors.Selector {
sel := selectors.NewOneDriveBackup(owners) sel := selectors.NewOneDriveBackup(owners)
sel.Include(sel.Folders(selectors.Any())) sel.Include(selTD.OneDriveBackupFolderScope(sel))
sel.DiscreteOwner = "" sel.DiscreteOwner = ""
return sel.Selector return sel.Selector
}, },
@ -194,7 +194,7 @@ func (suite *DataCollectionIntgSuite) TestDataCollections_invalidResourceOwner()
name: "missing sharepoint backup site", name: "missing sharepoint backup site",
getSelector: func(t *testing.T) selectors.Selector { getSelector: func(t *testing.T) selectors.Selector {
sel := selectors.NewSharePointBackup(owners) sel := selectors.NewSharePointBackup(owners)
sel.Include(testdata.SharePointBackupFolderScope(sel)) sel.Include(selTD.SharePointBackupFolderScope(sel))
sel.DiscreteOwner = "" sel.DiscreteOwner = ""
return sel.Selector return sel.Selector
}, },
@ -239,7 +239,7 @@ func (suite *DataCollectionIntgSuite) TestSharePointDataCollection() {
name: "Libraries", name: "Libraries",
getSelector: func() selectors.Selector { getSelector: func() selectors.Selector {
sel := selectors.NewSharePointBackup(selSites) sel := selectors.NewSharePointBackup(selSites)
sel.Include(testdata.SharePointBackupFolderScope(sel)) sel.Include(selTD.SharePointBackupFolderScope(sel))
return sel.Selector return sel.Selector
}, },
}, },

View File

@ -549,7 +549,7 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
var ( var (
user = tester.M365UserID(suite.T()) user = tester.M365UserID(suite.T())
directoryCaches = make(map[path.CategoryType]graph.ContainerResolver) directoryCaches = make(map[path.CategoryType]graph.ContainerResolver)
folderName = tester.DefaultTestRestoreDestination().ContainerName folderName = tester.DefaultTestRestoreDestination("").ContainerName
tests = []struct { tests = []struct {
name string name string
pathFunc1 func(t *testing.T) path.Path pathFunc1 func(t *testing.T) path.Path

View File

@ -3,14 +3,12 @@ package exchange
import ( import (
"context" "context"
"testing" "testing"
"time"
"github.com/alcionai/clues" "github.com/alcionai/clues"
"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"
"github.com/alcionai/corso/src/internal/common/dttm"
"github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/common/ptr"
"github.com/alcionai/corso/src/internal/connector/exchange/api" "github.com/alcionai/corso/src/internal/connector/exchange/api"
exchMock "github.com/alcionai/corso/src/internal/connector/exchange/mock" exchMock "github.com/alcionai/corso/src/internal/connector/exchange/mock"
@ -67,8 +65,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreContact() {
var ( var (
t = suite.T() t = suite.T()
userID = tester.M365UserID(t) userID = tester.M365UserID(t)
now = time.Now() folderName = tester.DefaultTestRestoreDestination("contact").ContainerName
folderName = "TestRestoreContact: " + dttm.FormatTo(now, dttm.SafeForTesting)
) )
aFolder, err := suite.ac.Contacts().CreateContactFolder(ctx, userID, folderName) aFolder, err := suite.ac.Contacts().CreateContactFolder(ctx, userID, folderName)
@ -102,7 +99,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreEvent() {
var ( var (
t = suite.T() t = suite.T()
userID = tester.M365UserID(t) userID = tester.M365UserID(t)
subject = "TestRestoreEvent: " + dttm.FormatNow(dttm.SafeForTesting) subject = tester.DefaultTestRestoreDestination("event").ContainerName
) )
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, subject) calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, subject)
@ -172,7 +169,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
} }
userID := tester.M365UserID(suite.T()) userID := tester.M365UserID(suite.T())
now := time.Now()
tests := []struct { tests := []struct {
name string name string
bytes []byte bytes []byte
@ -184,7 +181,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.MessageBytes("Restore Exchange Object"), bytes: exchMock.MessageBytes("Restore Exchange Object"),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreMailObject: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("mailobj").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -196,7 +193,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.MessageWithDirectAttachment("Restore 1 Attachment"), bytes: exchMock.MessageWithDirectAttachment("Restore 1 Attachment"),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreMailwithAttachment: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("mailwattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -208,7 +205,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.MessageWithItemAttachmentEvent("Event Item Attachment"), bytes: exchMock.MessageWithItemAttachmentEvent("Event Item Attachment"),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreEventItemAttachment: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("eventwattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -220,7 +217,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.MessageWithItemAttachmentMail("Mail Item Attachment"), bytes: exchMock.MessageWithItemAttachmentMail("Mail Item Attachment"),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreMailItemAttachment: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("mailitemattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -235,7 +232,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
), ),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreMailBasicItemAttachment: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("mailbasicattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -250,7 +247,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
), ),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "ItemMailAttachmentwAttachment " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("mailnestattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -265,7 +262,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
), ),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "ItemMailAttachment_Contact " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("mailcontactattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -277,7 +274,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.MessageWithNestedItemAttachmentEvent("Nested Item Attachment"), bytes: exchMock.MessageWithNestedItemAttachmentEvent("Nested Item Attachment"),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreNestedEventItemAttachment: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("nestedattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -289,7 +286,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.MessageWithLargeAttachment("Restore Large Attachment"), bytes: exchMock.MessageWithLargeAttachment("Restore Large Attachment"),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreMailwithLargeAttachment: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("maillargeattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -301,7 +298,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.MessageWithTwoAttachments("Restore 2 Attachments"), bytes: exchMock.MessageWithTwoAttachments("Restore 2 Attachments"),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreMailwithAttachments: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("mailtwoattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -313,7 +310,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.MessageWithOneDriveAttachment("Restore Reference(OneDrive) Attachment"), bytes: exchMock.MessageWithOneDriveAttachment("Restore Reference(OneDrive) Attachment"),
category: path.EmailCategory, category: path.EmailCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreMailwithReferenceAttachment: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("mailrefattch").ContainerName
folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName) folder, err := suite.ac.Mail().CreateMailFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -326,7 +323,7 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.ContactBytes("Test_Omega"), bytes: exchMock.ContactBytes("Test_Omega"),
category: path.ContactsCategory, category: path.ContactsCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
folderName := "TestRestoreContactObject: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("contact").ContainerName
folder, err := suite.ac.Contacts().CreateContactFolder(ctx, userID, folderName) folder, err := suite.ac.Contacts().CreateContactFolder(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -338,8 +335,8 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.EventBytes("Restored Event Object"), bytes: exchMock.EventBytes("Restored Event Object"),
category: path.EventsCategory, category: path.EventsCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
calendarName := "TestRestoreEventObject: " + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("event").ContainerName
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, calendarName) calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
return ptr.Val(calendar.GetId()) return ptr.Val(calendar.GetId())
@ -350,8 +347,8 @@ func (suite *ExchangeRestoreSuite) TestRestoreExchangeObject() {
bytes: exchMock.EventWithAttachment("Restored Event Attachment"), bytes: exchMock.EventWithAttachment("Restored Event Attachment"),
category: path.EventsCategory, category: path.EventsCategory,
destination: func(t *testing.T, ctx context.Context) string { destination: func(t *testing.T, ctx context.Context) string {
calendarName := "TestRestoreEventObject_" + dttm.FormatTo(now, dttm.SafeForTesting) folderName := tester.DefaultTestRestoreDestination("eventobj").ContainerName
calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, calendarName) calendar, err := suite.ac.Events().CreateCalendar(ctx, userID, folderName)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
return ptr.Val(calendar.GetId()) return ptr.Val(calendar.GetId())

View File

@ -11,6 +11,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/pkg/selectors" "github.com/alcionai/corso/src/pkg/selectors"
selTD "github.com/alcionai/corso/src/pkg/selectors/testdata"
) )
// --------------------------------------------------------------- // ---------------------------------------------------------------
@ -82,19 +83,19 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs_allServices
checkError: assert.NoError, checkError: assert.NoError,
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(selTD.OneDriveBackupFolderScope(sel))
sel.DiscreteOwner = "elliotReid@someHospital.org" sel.DiscreteOwner = "elliotReid@someHospital.org"
return sel.Selector return sel.Selector
}, },
filters: func(t *testing.T) selectors.Selector { filters: 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.Filter(sel.Folders(selectors.Any())) sel.Filter(selTD.OneDriveBackupFolderScope(sel))
sel.DiscreteOwner = "elliotReid@someHospital.org" sel.DiscreteOwner = "elliotReid@someHospital.org"
return sel.Selector return sel.Selector
}, },
includes: func(t *testing.T) selectors.Selector { includes: 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.Include(sel.Folders(selectors.Any())) sel.Include(selTD.OneDriveBackupFolderScope(sel))
sel.DiscreteOwner = "elliotReid@someHospital.org" sel.DiscreteOwner = "elliotReid@someHospital.org"
return sel.Selector return sel.Selector
}, },
@ -104,17 +105,17 @@ func (suite *DisconnectedGraphConnectorSuite) TestVerifyBackupInputs_allServices
checkError: assert.NoError, checkError: assert.NoError,
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(selTD.OneDriveBackupFolderScope(sel))
return sel.Selector return sel.Selector
}, },
filters: func(t *testing.T) selectors.Selector { filters: func(t *testing.T) selectors.Selector {
sel := selectors.NewOneDriveBackup([]string{"foo@SomeCompany.org"}) sel := selectors.NewOneDriveBackup([]string{"foo@SomeCompany.org"})
sel.Filter(sel.Folders(selectors.Any())) sel.Filter(selTD.OneDriveBackupFolderScope(sel))
return sel.Selector return sel.Selector
}, },
includes: func(t *testing.T) selectors.Selector { includes: func(t *testing.T) selectors.Selector {
sel := selectors.NewOneDriveBackup([]string{"foo@SomeCompany.org"}) sel := selectors.NewOneDriveBackup([]string{"foo@SomeCompany.org"})
sel.Include(sel.Folders(selectors.Any())) sel.Include(selTD.OneDriveBackupFolderScope(sel))
return sel.Selector return sel.Selector
}, },
}, },

View File

@ -1099,7 +1099,7 @@ func makeSharePointBackupSel(
} }
// backupSelectorForExpected creates a selector that can be used to backup the // backupSelectorForExpected creates a selector that can be used to backup the
// given items in expected based on the item paths. Fails the test if items from // given dests based on the item paths. Fails the test if items from
// multiple services are in expected. // multiple services are in expected.
func backupSelectorForExpected( func backupSelectorForExpected(
t *testing.T, t *testing.T,

View File

@ -295,7 +295,7 @@ func (suite *GraphConnectorIntegrationSuite) TestRestoreFailsBadService() {
var ( var (
t = suite.T() t = suite.T()
acct = tester.NewM365Account(t) acct = tester.NewM365Account(t)
dest = tester.DefaultTestRestoreDestination() dest = tester.DefaultTestRestoreDestination("")
sel = selectors.Selector{ sel = selectors.Selector{
Service: selectors.ServiceUnknown, Service: selectors.ServiceUnknown,
} }
@ -323,7 +323,7 @@ func (suite *GraphConnectorIntegrationSuite) TestRestoreFailsBadService() {
} }
func (suite *GraphConnectorIntegrationSuite) TestEmptyCollections() { func (suite *GraphConnectorIntegrationSuite) TestEmptyCollections() {
dest := tester.DefaultTestRestoreDestination() dest := tester.DefaultTestRestoreDestination("")
table := []struct { table := []struct {
name string name string
col []data.RestoreCollection col []data.RestoreCollection
@ -579,7 +579,7 @@ func runRestoreBackupTest(
service: test.service, service: test.service,
tenant: tenant, tenant: tenant,
resourceOwners: resourceOwners, resourceOwners: resourceOwners,
dest: tester.DefaultTestRestoreDestination(), dest: tester.DefaultTestRestoreDestination(""),
} }
totalItems, totalKopiaItems, collections, expectedData := getCollectionsAndExpected( totalItems, totalKopiaItems, collections, expectedData := getCollectionsAndExpected(
@ -625,7 +625,7 @@ func runRestoreTestWithVerion(
service: test.service, service: test.service,
tenant: tenant, tenant: tenant,
resourceOwners: resourceOwners, resourceOwners: resourceOwners,
dest: tester.DefaultTestRestoreDestination(), dest: tester.DefaultTestRestoreDestination(""),
} }
totalItems, _, collections, _ := getCollectionsAndExpected( totalItems, _, collections, _ := getCollectionsAndExpected(
@ -664,7 +664,7 @@ func runRestoreBackupTestVersions(
service: test.service, service: test.service,
tenant: tenant, tenant: tenant,
resourceOwners: resourceOwners, resourceOwners: resourceOwners,
dest: tester.DefaultTestRestoreDestination(), dest: tester.DefaultTestRestoreDestination(""),
} }
totalItems, _, collections, _ := getCollectionsAndExpected( totalItems, _, collections, _ := getCollectionsAndExpected(
@ -1042,7 +1042,7 @@ func (suite *GraphConnectorIntegrationSuite) TestMultiFolderBackupDifferentNames
for i, collection := range test.collections { for i, collection := range test.collections {
// Get a dest per collection so they're independent. // Get a dest per collection so they're independent.
dest := tester.DefaultTestRestoreDestination() dest := tester.DefaultTestRestoreDestination("")
expectedDests = append(expectedDests, destAndCats{ expectedDests = append(expectedDests, destAndCats{
resourceOwner: suite.user, resourceOwner: suite.user,
dest: dest.ContainerName, dest: dest.ContainerName,
@ -1214,9 +1214,7 @@ func (suite *GraphConnectorIntegrationSuite) TestBackup_CreatesPrefixCollections
resource: Users, resource: Users,
selectorFunc: func(t *testing.T) selectors.Selector { selectorFunc: func(t *testing.T) selectors.Selector {
sel := selectors.NewOneDriveBackup([]string{suite.user}) sel := selectors.NewOneDriveBackup([]string{suite.user})
sel.Include( sel.Include(sel.Folders([]string{selectors.NoneTgt}))
sel.Folders([]string{selectors.NoneTgt}),
)
return sel.Selector return sel.Selector
}, },

View File

@ -279,24 +279,24 @@ func (suite *OneDriveUnitSuite) TestDrives() {
// Integration tests // Integration tests
type OneDriveSuite struct { type OneDriveIntgSuite struct {
tester.Suite tester.Suite
userID string userID string
} }
func TestOneDriveSuite(t *testing.T) { func TestOneDriveSuite(t *testing.T) {
suite.Run(t, &OneDriveSuite{ suite.Run(t, &OneDriveIntgSuite{
Suite: tester.NewIntegrationSuite( Suite: tester.NewIntegrationSuite(
t, t,
[][]string{tester.M365AcctCredEnvs}), [][]string{tester.M365AcctCredEnvs}),
}) })
} }
func (suite *OneDriveSuite) SetupSuite() { func (suite *OneDriveIntgSuite) SetupSuite() {
suite.userID = tester.SecondaryM365UserID(suite.T()) suite.userID = tester.SecondaryM365UserID(suite.T())
} }
func (suite *OneDriveSuite) TestCreateGetDeleteFolder() { func (suite *OneDriveIntgSuite) TestCreateGetDeleteFolder() {
ctx, flush := tester.NewContext() ctx, flush := tester.NewContext()
defer flush() defer flush()
@ -401,7 +401,7 @@ func (fm testFolderMatcher) Matches(p string) bool {
return fm.scope.Matches(selectors.OneDriveFolder, p) return fm.scope.Matches(selectors.OneDriveFolder, p)
} }
func (suite *OneDriveSuite) TestOneDriveNewCollections() { func (suite *OneDriveIntgSuite) TestOneDriveNewCollections() {
creds, err := tester.NewM365Account(suite.T()).M365Config() creds, err := tester.NewM365Account(suite.T()).M365Config()
require.NoError(suite.T(), err, clues.ToCore(err)) require.NoError(suite.T(), err, clues.ToCore(err))

View File

@ -128,8 +128,7 @@ func (suite *ItemIntegrationSuite) TestItemReader_oneDrive() {
} }
// TestItemWriter is an integration test for uploading data to OneDrive // TestItemWriter is an integration test for uploading data to OneDrive
// It creates a new `testfolder_<timestamp` folder with a new // It creates a new folder with a new item and writes data to it
// testitem_<timestamp> item and writes data to it
func (suite *ItemIntegrationSuite) TestItemWriter() { func (suite *ItemIntegrationSuite) TestItemWriter() {
table := []struct { table := []struct {
name string name string
@ -155,24 +154,20 @@ func (suite *ItemIntegrationSuite) TestItemWriter() {
root, err := srv.Client().DrivesById(test.driveID).Root().Get(ctx, nil) root, err := srv.Client().DrivesById(test.driveID).Root().Get(ctx, nil)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
// Test Requirement 2: "Test Folder" should exist newFolderName := tester.DefaultTestRestoreDestination("folder").ContainerName
folder, err := api.GetFolderByName(ctx, srv, test.driveID, ptr.Val(root.GetId()), "Test Folder") t.Logf("creating folder %s", newFolderName)
require.NoError(t, err, clues.ToCore(err))
newFolderName := "testfolder_" + dttm.FormatNow(dttm.SafeForTesting)
t.Logf("Test will create folder %s", newFolderName)
newFolder, err := CreateItem( newFolder, err := CreateItem(
ctx, ctx,
srv, srv,
test.driveID, test.driveID,
ptr.Val(folder.GetId()), ptr.Val(root.GetId()),
newItem(newFolderName, true)) newItem(newFolderName, true))
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
require.NotNil(t, newFolder.GetId()) require.NotNil(t, newFolder.GetId())
newItemName := "testItem_" + dttm.FormatNow(dttm.SafeForTesting) newItemName := "testItem_" + dttm.FormatNow(dttm.SafeForTesting)
t.Logf("Test will create item %s", newItemName) t.Logf("creating item %s", newItemName)
newItem, err := CreateItem( newItem, err := CreateItem(
ctx, ctx,

View File

@ -10,7 +10,6 @@ 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/common/dttm"
"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"
spMock "github.com/alcionai/corso/src/internal/connector/sharepoint/mock" spMock "github.com/alcionai/corso/src/internal/connector/sharepoint/mock"
@ -81,7 +80,7 @@ func (suite *SharePointPageSuite) TestRestoreSinglePage() {
t := suite.T() t := suite.T()
destName := "Corso_Restore_" + dttm.FormatNow(dttm.SafeForTesting) destName := tester.DefaultTestRestoreDestination("").ContainerName
testName := "MockPage" testName := "MockPage"
// Create Test Page // Create Test Page
@ -98,8 +97,7 @@ func (suite *SharePointPageSuite) TestRestoreSinglePage() {
suite.service, suite.service,
pageData, pageData,
suite.siteID, suite.siteID,
destName, destName)
)
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
require.NotNil(t, info) require.NotNil(t, info)

View File

@ -12,7 +12,6 @@ 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/common/dttm"
"github.com/alcionai/corso/src/internal/common/ptr" "github.com/alcionai/corso/src/internal/common/ptr"
"github.com/alcionai/corso/src/internal/connector/sharepoint/api" "github.com/alcionai/corso/src/internal/connector/sharepoint/api"
spMock "github.com/alcionai/corso/src/internal/connector/sharepoint/mock" spMock "github.com/alcionai/corso/src/internal/connector/sharepoint/mock"
@ -193,7 +192,7 @@ func (suite *SharePointCollectionSuite) TestListCollection_Restore() {
info: sharePointListInfo(listing, int64(len(byteArray))), info: sharePointListInfo(listing, int64(len(byteArray))),
} }
destName := "Corso_Restore_" + dttm.FormatNow(dttm.SafeForTesting) destName := tester.DefaultTestRestoreDestination("").ContainerName
deets, err := restoreListItem(ctx, service, listData, suite.siteID, destName) deets, err := restoreListItem(ctx, service, listData, suite.siteID, destName)
assert.NoError(t, err, clues.ToCore(err)) assert.NoError(t, err, clues.ToCore(err))

View File

@ -125,7 +125,7 @@ func RestoreCollections(
} }
// restoreListItem utility function restores a List to the siteID. // restoreListItem utility function restores a List to the siteID.
// The name is changed to to Corso_Restore_{timeStame}_name // The name is changed to to {DestName}_{name}
// API Reference: https://learn.microsoft.com/en-us/graph/api/list-create?view=graph-rest-1.0&tabs=http // API Reference: https://learn.microsoft.com/en-us/graph/api/list-create?view=graph-rest-1.0&tabs=http
// Restored List can be verified within the Site contents. // Restored List can be verified within the Site contents.
func restoreListItem( func restoreListItem(

View File

@ -46,10 +46,13 @@ import (
"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"
"github.com/alcionai/corso/src/pkg/selectors" "github.com/alcionai/corso/src/pkg/selectors"
"github.com/alcionai/corso/src/pkg/selectors/testdata" selTD "github.com/alcionai/corso/src/pkg/selectors/testdata"
"github.com/alcionai/corso/src/pkg/store" "github.com/alcionai/corso/src/pkg/store"
) )
// Does not use the tester.DefaultTestRestoreDestination syntax as some of these
// items are created directly, not as a result of restoration, and we want to ensure
// they get clearly selected without accidental overlap.
const incrementalsDestContainerPrefix = "incrementals_ci_" const incrementalsDestContainerPrefix = "incrementals_ci_"
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
@ -1136,7 +1139,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_oneDrive() {
osel = selectors.NewOneDriveBackup([]string{m365UserID}) osel = selectors.NewOneDriveBackup([]string{m365UserID})
) )
osel.Include(osel.AllData()) osel.Include(selTD.OneDriveBackupFolderScope(osel))
bo, _, _, _, _, _, closer := prepNewTestBackupOp(t, ctx, mb, osel.Selector, control.Toggles{}, version.Backup) bo, _, _, _, _, _, closer := prepNewTestBackupOp(t, ctx, mb, osel.Selector, control.Toggles{}, version.Backup)
defer closer() defer closer()
@ -1694,7 +1697,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_oneDriveOwnerMigration() {
uname := ptr.Val(userable.GetUserPrincipalName()) uname := ptr.Val(userable.GetUserPrincipalName())
oldsel := selectors.NewOneDriveBackup([]string{uname}) oldsel := selectors.NewOneDriveBackup([]string{uname})
oldsel.Include(oldsel.Folders([]string{"test"}, selectors.ExactMatch())) oldsel.Include(selTD.OneDriveBackupFolderScope(oldsel))
bo, _, kw, ms, gc, sel, closer := prepNewTestBackupOp(t, ctx, mb, oldsel.Selector, ffs, 0) bo, _, kw, ms, gc, sel, closer := prepNewTestBackupOp(t, ctx, mb, oldsel.Selector, ffs, 0)
defer closer() defer closer()
@ -1716,7 +1719,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_oneDriveOwnerMigration() {
runAndCheckBackup(t, ctx, &bo, mb, false) runAndCheckBackup(t, ctx, &bo, mb, false)
newsel := selectors.NewOneDriveBackup([]string{uid}) newsel := selectors.NewOneDriveBackup([]string{uid})
newsel.Include(newsel.Folders([]string{"test"}, selectors.ExactMatch())) newsel.Include(selTD.OneDriveBackupFolderScope(newsel))
sel = newsel.SetDiscreteOwnerIDName(uid, uname) sel = newsel.SetDiscreteOwnerIDName(uid, uname)
var ( var (
@ -1795,7 +1798,7 @@ func (suite *BackupOpIntegrationSuite) TestBackup_Run_sharePoint() {
sel = selectors.NewSharePointBackup([]string{suite.site}) sel = selectors.NewSharePointBackup([]string{suite.site})
) )
sel.Include(testdata.SharePointBackupFolderScope(sel)) sel.Include(selTD.SharePointBackupFolderScope(sel))
bo, _, kw, _, _, sels, closer := prepNewTestBackupOp(t, ctx, mb, sel.Selector, control.Toggles{}, version.Backup) bo, _, kw, _, _, sels, closer := prepNewTestBackupOp(t, ctx, mb, sel.Selector, control.Toggles{}, version.Backup)
defer closer() defer closer()

View File

@ -55,7 +55,7 @@ func (suite *RestoreOpSuite) TestRestoreOperation_PersistResults() {
gc = &mock.GraphConnector{} gc = &mock.GraphConnector{}
acct = account.Account{} acct = account.Account{}
now = time.Now() now = time.Now()
dest = tester.DefaultTestRestoreDestination() dest = tester.DefaultTestRestoreDestination("")
) )
table := []struct { table := []struct {
@ -220,7 +220,7 @@ func (suite *RestoreOpIntegrationSuite) TestNewRestoreOperation() {
sw = &store.Wrapper{} sw = &store.Wrapper{}
gc = &mock.GraphConnector{} gc = &mock.GraphConnector{}
acct = tester.NewM365Account(suite.T()) acct = tester.NewM365Account(suite.T())
dest = tester.DefaultTestRestoreDestination() dest = tester.DefaultTestRestoreDestination("")
opts = control.Defaults() opts = control.Defaults()
) )
@ -392,7 +392,7 @@ func (suite *RestoreOpIntegrationSuite) TestRestore_Run() {
{ {
name: "Exchange_Restore", name: "Exchange_Restore",
owner: tester.M365UserID(suite.T()), owner: tester.M365UserID(suite.T()),
dest: tester.DefaultTestRestoreDestination(), dest: tester.DefaultTestRestoreDestination(""),
getSelector: func(t *testing.T, owners []string) selectors.Selector { getSelector: func(t *testing.T, owners []string) selectors.Selector {
rsel := selectors.NewExchangeRestore(owners) rsel := selectors.NewExchangeRestore(owners)
rsel.Include(rsel.AllData()) rsel.Include(rsel.AllData())
@ -464,7 +464,7 @@ func (suite *RestoreOpIntegrationSuite) TestRestore_Run_errorNoResults() {
var ( var (
t = suite.T() t = suite.T()
dest = tester.DefaultTestRestoreDestination() dest = tester.DefaultTestRestoreDestination("")
mb = evmock.NewBus() mb = evmock.NewBus()
) )

View File

@ -1,11 +1,26 @@
package tester package tester
import ( import (
"strings"
"github.com/alcionai/corso/src/internal/common/dttm" "github.com/alcionai/corso/src/internal/common/dttm"
"github.com/alcionai/corso/src/pkg/control" "github.com/alcionai/corso/src/pkg/control"
) )
func DefaultTestRestoreDestination() control.RestoreDestination { const RestoreFolderPrefix = "Corso_Test"
// Use microsecond granularity to help reduce collisions.
return control.DefaultRestoreDestination(dttm.SafeForTesting) func DefaultTestRestoreDestination(namespace string) control.RestoreDestination {
var (
dest = control.DefaultRestoreDestination(dttm.SafeForTesting)
sft = dttm.FormatNow(dttm.SafeForTesting)
)
parts := []string{RestoreFolderPrefix, namespace, sft}
if len(namespace) == 0 {
parts = []string{RestoreFolderPrefix, sft}
}
dest.ContainerName = strings.Join(parts, "_")
return dest
} }

View File

@ -24,6 +24,7 @@ import (
"github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/path"
"github.com/alcionai/corso/src/pkg/repository" "github.com/alcionai/corso/src/pkg/repository"
"github.com/alcionai/corso/src/pkg/selectors" "github.com/alcionai/corso/src/pkg/selectors"
selTD "github.com/alcionai/corso/src/pkg/selectors/testdata"
"github.com/alcionai/corso/src/pkg/storage" "github.com/alcionai/corso/src/pkg/storage"
) )
@ -150,7 +151,7 @@ func runRestoreLoadTest(
t.Skip("restore load test is toggled off") t.Skip("restore load test is toggled off")
} }
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, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
@ -541,7 +542,7 @@ func (suite *LoadOneDriveSuite) TestOneDrive() {
defer flush() defer flush()
bsel := selectors.NewOneDriveBackup(suite.usersUnderTest) bsel := selectors.NewOneDriveBackup(suite.usersUnderTest)
bsel.Include(bsel.AllData()) bsel.Include(selTD.OneDriveBackupFolderScope(bsel))
sel := bsel.Selector sel := bsel.Selector
runLoadTest( runLoadTest(
@ -588,7 +589,7 @@ func (suite *IndividualLoadOneDriveSuite) TestOneDrive() {
defer flush() defer flush()
bsel := selectors.NewOneDriveBackup(suite.usersUnderTest) bsel := selectors.NewOneDriveBackup(suite.usersUnderTest)
bsel.Include(bsel.AllData()) bsel.Include(selTD.OneDriveBackupFolderScope(bsel))
sel := bsel.Selector sel := bsel.Selector
runLoadTest( runLoadTest(

View File

@ -242,7 +242,7 @@ func (suite *RepositoryIntegrationSuite) TestNewRestore() {
t := suite.T() t := suite.T()
acct := tester.NewM365Account(t) acct := tester.NewM365Account(t)
dest := tester.DefaultTestRestoreDestination() dest := tester.DefaultTestRestoreDestination("")
// need to initialize the repository before we can test connecting to it. // need to initialize the repository before we can test connecting to it.
st := tester.NewPrefixedS3Storage(t) st := tester.NewPrefixedS3Storage(t)

View File

@ -0,0 +1,9 @@
package testdata
import "github.com/alcionai/corso/src/pkg/selectors"
// OneDriveBackupFolderScope is the standard folder scope that should be used
// in integration backups with onedrive.
func OneDriveBackupFolderScope(sel *selectors.OneDriveBackup) []selectors.OneDriveScope {
return sel.Folders([]string{"test"}, selectors.PrefixMatch())
}