From bc404d9208fb360ad4f0b1c9ff10209342933ed8 Mon Sep 17 00:00:00 2001 From: Abin Simon Date: Thu, 31 Aug 2023 16:07:36 +0530 Subject: [PATCH] Tests for group handler (#4158) --- #### Does this PR need a docs update or release note? - [ ] :white_check_mark: Yes, it's included - [ ] :clock1: Yes, but in a later PR - [x] :no_entry: No #### Type of change - [ ] :sunflower: Feature - [ ] :bug: Bugfix - [ ] :world_map: Documentation - [x] :robot: Supportability/Tests - [ ] :computer: CI/Deployment - [ ] :broom: Tech Debt/Cleanup #### Issue(s) * https://github.com/alcionai/corso/issues/4154 #### Test Plan - [ ] :muscle: Manual - [x] :zap: Unit test - [ ] :green_heart: E2E --- .../collection/drive/group_handler_test.go | 119 ++++++++++++++++++ .../collection/drive/item_handler_test.go | 58 +++++++++ .../collection/drive/library_handler_test.go | 58 +++++++++ 3 files changed, 235 insertions(+) create mode 100644 src/internal/m365/collection/drive/group_handler_test.go diff --git a/src/internal/m365/collection/drive/group_handler_test.go b/src/internal/m365/collection/drive/group_handler_test.go new file mode 100644 index 000000000..bd44d5796 --- /dev/null +++ b/src/internal/m365/collection/drive/group_handler_test.go @@ -0,0 +1,119 @@ +package drive + +import ( + "testing" + + "github.com/alcionai/clues" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/suite" + + "github.com/alcionai/corso/src/internal/tester" + "github.com/alcionai/corso/src/pkg/path" + "github.com/alcionai/corso/src/pkg/services/m365/api" +) + +type GroupBackupHandlerUnitSuite struct { + tester.Suite +} + +func TestGroupBackupHandlerUnitSuite(t *testing.T) { + suite.Run(t, &GroupBackupHandlerUnitSuite{Suite: tester.NewUnitSuite(t)}) +} + +func (suite *GroupBackupHandlerUnitSuite) TestPathPrefix() { + tenantID, resourceOwner := "tenant", "resourceOwner" + + table := []struct { + name string + expect string + expectErr assert.ErrorAssertionFunc + }{ + { + name: "group", + expect: "tenant/groups/resourceOwner/libraries/sites/site-id/drives/drive-id/root:", + expectErr: assert.NoError, + }, + } + for _, test := range table { + suite.Run(test.name, func() { + t := suite.T() + h := NewGroupBackupHandler(resourceOwner, "site-id", api.Drives{}, nil) + + result, err := h.PathPrefix(tenantID, "drive-id") + test.expectErr(t, err, clues.ToCore(err)) + + if result != nil { + assert.Equal(t, test.expect, result.String()) + } + }) + } +} + +func (suite *GroupBackupHandlerUnitSuite) TestMetadataPathPrefix() { + tenantID, resourceOwner := "tenant", "resourceOwner" + + table := []struct { + name string + expect string + expectErr assert.ErrorAssertionFunc + }{ + { + name: "group", + expect: "tenant/groupsMetadata/resourceOwner/libraries", + expectErr: assert.NoError, + }, + } + for _, test := range table { + suite.Run(test.name, func() { + t := suite.T() + h := NewGroupBackupHandler(resourceOwner, "site-id", api.Drives{}, nil) + + result, err := h.MetadataPathPrefix(tenantID) + test.expectErr(t, err, clues.ToCore(err)) + + if result != nil { + assert.Equal(t, test.expect, result.String()) + } + }) + } +} + +func (suite *GroupBackupHandlerUnitSuite) TestCanonicalPath() { + tenantID, resourceOwner := "tenant", "resourceOwner" + + table := []struct { + name string + expect string + expectErr assert.ErrorAssertionFunc + }{ + { + name: "group", + expect: "tenant/groups/resourceOwner/libraries/sites/site-id/prefix", + expectErr: assert.NoError, + }, + } + for _, test := range table { + suite.Run(test.name, func() { + t := suite.T() + h := NewGroupBackupHandler(resourceOwner, "site-id", api.Drives{}, nil) + p := path.Builder{}.Append("prefix") + + result, err := h.CanonicalPath(p, tenantID) + test.expectErr(t, err, clues.ToCore(err)) + + if result != nil { + assert.Equal(t, test.expect, result.String()) + } + }) + } +} + +func (suite *GroupBackupHandlerUnitSuite) TestServiceCat() { + t := suite.T() + + s, c := groupBackupHandler{ + libraryBackupHandler: libraryBackupHandler{service: path.GroupsService}, + }.ServiceCat() + assert.Equal(t, path.GroupsService, s) + assert.Equal(t, path.LibrariesCategory, c) +} diff --git a/src/internal/m365/collection/drive/item_handler_test.go b/src/internal/m365/collection/drive/item_handler_test.go index e8657abac..055cb82ac 100644 --- a/src/internal/m365/collection/drive/item_handler_test.go +++ b/src/internal/m365/collection/drive/item_handler_test.go @@ -19,6 +19,64 @@ func TestItemBackupHandlerUnitSuite(t *testing.T) { suite.Run(t, &ItemBackupHandlerUnitSuite{Suite: tester.NewUnitSuite(t)}) } +func (suite *ItemBackupHandlerUnitSuite) TestPathPrefix() { + tenantID, resourceOwner := "tenant", "resourceOwner" + + table := []struct { + name string + expect string + expectErr assert.ErrorAssertionFunc + }{ + { + name: "onedrive", + expect: "tenant/onedrive/resourceOwner/files/drives/driveID/root:", + expectErr: assert.NoError, + }, + } + for _, test := range table { + suite.Run(test.name, func() { + t := suite.T() + h := itemBackupHandler{userID: resourceOwner} + + result, err := h.PathPrefix(tenantID, "driveID") + test.expectErr(t, err, clues.ToCore(err)) + + if result != nil { + assert.Equal(t, test.expect, result.String()) + } + }) + } +} + +func (suite *ItemBackupHandlerUnitSuite) TestMetadataPathPrefix() { + tenantID, resourceOwner := "tenant", "resourceOwner" + + table := []struct { + name string + expect string + expectErr assert.ErrorAssertionFunc + }{ + { + name: "onedrive", + expect: "tenant/onedriveMetadata/resourceOwner/files", + expectErr: assert.NoError, + }, + } + for _, test := range table { + suite.Run(test.name, func() { + t := suite.T() + h := itemBackupHandler{userID: resourceOwner} + + result, err := h.MetadataPathPrefix(tenantID) + test.expectErr(t, err, clues.ToCore(err)) + + if result != nil { + assert.Equal(t, test.expect, result.String()) + } + }) + } +} + func (suite *ItemBackupHandlerUnitSuite) TestCanonicalPath() { tenantID, resourceOwner := "tenant", "resourceOwner" diff --git a/src/internal/m365/collection/drive/library_handler_test.go b/src/internal/m365/collection/drive/library_handler_test.go index 47163b610..f31e78984 100644 --- a/src/internal/m365/collection/drive/library_handler_test.go +++ b/src/internal/m365/collection/drive/library_handler_test.go @@ -19,6 +19,64 @@ func TestLibraryBackupHandlerUnitSuite(t *testing.T) { suite.Run(t, &LibraryBackupHandlerUnitSuite{Suite: tester.NewUnitSuite(t)}) } +func (suite *LibraryBackupHandlerUnitSuite) TestPathPrefix() { + tenantID, resourceOwner := "tenant", "resourceOwner" + + table := []struct { + name string + expect string + expectErr assert.ErrorAssertionFunc + }{ + { + name: "sharepoint", + expect: "tenant/sharepoint/resourceOwner/libraries/drives/driveID/root:", + expectErr: assert.NoError, + }, + } + for _, test := range table { + suite.Run(test.name, func() { + t := suite.T() + h := libraryBackupHandler{service: path.SharePointService, siteID: resourceOwner} + + result, err := h.PathPrefix(tenantID, "driveID") + test.expectErr(t, err, clues.ToCore(err)) + + if result != nil { + assert.Equal(t, test.expect, result.String()) + } + }) + } +} + +func (suite *LibraryBackupHandlerUnitSuite) TestMetadataPathPrefix() { + tenantID, resourceOwner := "tenant", "resourceOwner" + + table := []struct { + name string + expect string + expectErr assert.ErrorAssertionFunc + }{ + { + name: "sharepoint", + expect: "tenant/sharepointMetadata/resourceOwner/libraries", + expectErr: assert.NoError, + }, + } + for _, test := range table { + suite.Run(test.name, func() { + t := suite.T() + h := libraryBackupHandler{service: path.SharePointService, siteID: resourceOwner} + + result, err := h.MetadataPathPrefix(tenantID) + test.expectErr(t, err, clues.ToCore(err)) + + if result != nil { + assert.Equal(t, test.expect, result.String()) + } + }) + } +} + func (suite *LibraryBackupHandlerUnitSuite) TestCanonicalPath() { tenantID, resourceOwner := "tenant", "resourceOwner"