diff --git a/src/internal/connector/graph_connector_helper_test.go b/src/internal/connector/graph_connector_helper_test.go index ad6ea556e..cbbb9b0f6 100644 --- a/src/internal/connector/graph_connector_helper_test.go +++ b/src/internal/connector/graph_connector_helper_test.go @@ -14,6 +14,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "golang.org/x/exp/maps" + "golang.org/x/exp/slices" "github.com/alcionai/corso/src/internal/connector/mockconnector" "github.com/alcionai/corso/src/internal/connector/onedrive" @@ -652,6 +653,35 @@ func compareExchangeEvent( checkEvent(t, expectedEvent, itemEvent) } +func permissionEqual(expected onedrive.UserPermission, got onedrive.UserPermission) bool { + if !strings.EqualFold(expected.Email, got.Email) { + return false + } + + if (expected.Expiration == nil && got.Expiration != nil) || + (expected.Expiration != nil && got.Expiration == nil) { + return false + } + + if expected.Expiration != nil && + got.Expiration != nil && + !expected.Expiration.Equal(*got.Expiration) { + return false + } + + if len(expected.Roles) != len(got.Roles) { + return false + } + + for _, r := range got.Roles { + if !slices.Contains(expected.Roles, r) { + return false + } + } + + return true +} + func compareOneDriveItem( t *testing.T, expected map[string][]byte, @@ -695,13 +725,7 @@ func compareOneDriveItem( } assert.Equal(t, len(expectedMeta.Permissions), len(itemMeta.Permissions), "number of permissions after restore") - - // FIXME(meain): The permissions before and after might not be in the same order. - for i, p := range expectedMeta.Permissions { - assert.Equal(t, strings.ToLower(p.Email), strings.ToLower(itemMeta.Permissions[i].Email)) - assert.Equal(t, p.Roles, itemMeta.Permissions[i].Roles) - assert.Equal(t, p.Expiration, itemMeta.Permissions[i].Expiration) - } + testElementsMatch(t, expectedMeta.Permissions, itemMeta.Permissions, permissionEqual) } func compareItem(