Fix sanity tests for SharePoint and Groups (#4740)
<!-- PR description--> --- #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No #### Type of change <!--- Please check the type of change your PR introduces: ---> - [ ] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [x] 🤖 Supportability/Tests - [ ] 💻 CI/Deployment - [ ] 🧹 Tech Debt/Cleanup #### Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #<issue> #### Test Plan <!-- How will this be tested prior to merging.--> - [ ] 💪 Manual - [ ] ⚡ Unit test - [ ] 💚 E2E
This commit is contained in:
parent
1ae9c05651
commit
925c70d9d2
2
.github/workflows/sanity-test.yaml
vendored
2
.github/workflows/sanity-test.yaml
vendored
@ -391,7 +391,7 @@ jobs:
|
|||||||
log-dir: ${{ env.CORSO_LOG_DIR }}
|
log-dir: ${{ env.CORSO_LOG_DIR }}
|
||||||
with-export: true
|
with-export: true
|
||||||
|
|
||||||
# generate some more enteries for incremental check
|
# generate some more entries for incremental check
|
||||||
- name: Groups - Create new data (for incremental)
|
- name: Groups - Create new data (for incremental)
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
working-directory: ./src/cmd/factory
|
working-directory: ./src/cmd/factory
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package export
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
|
|
||||||
@ -21,21 +23,31 @@ func CheckGroupsExport(
|
|||||||
// assumes we only need to sanity check the default site.
|
// assumes we only need to sanity check the default site.
|
||||||
// should we expand this to check all sites in the group?
|
// should we expand this to check all sites in the group?
|
||||||
// are we backing up / restoring more than the default site?
|
// are we backing up / restoring more than the default site?
|
||||||
|
site, err := ac.Sites().GetByID(ctx, envs.TeamSiteID, api.CallConfig{})
|
||||||
|
if err != nil {
|
||||||
|
common.Fatal(ctx, "getting the drive:", err)
|
||||||
|
}
|
||||||
|
|
||||||
drive, err := ac.Sites().GetDefaultDrive(ctx, envs.TeamSiteID)
|
drive, err := ac.Sites().GetDefaultDrive(ctx, envs.TeamSiteID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
common.Fatal(ctx, "getting the drive:", err)
|
common.Fatal(ctx, "getting the drive:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkChannelMessagesExport(
|
||||||
|
ctx,
|
||||||
|
ac,
|
||||||
|
envs)
|
||||||
|
|
||||||
|
envs.RestoreContainer = filepath.Join(
|
||||||
|
envs.RestoreContainer,
|
||||||
|
"Libraries",
|
||||||
|
ptr.Val(site.GetName()),
|
||||||
|
"Documents") // check in default loc
|
||||||
driveish.CheckExport(
|
driveish.CheckExport(
|
||||||
ctx,
|
ctx,
|
||||||
ac,
|
ac,
|
||||||
drive,
|
drive,
|
||||||
envs)
|
envs)
|
||||||
|
|
||||||
checkChannelMessagesExport(
|
|
||||||
ctx,
|
|
||||||
ac,
|
|
||||||
envs)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkChannelMessagesExport(
|
func checkChannelMessagesExport(
|
||||||
@ -55,7 +67,19 @@ func checkChannelMessagesExport(
|
|||||||
expect *common.Sanitree[models.Channelable, models.ChatMessageable],
|
expect *common.Sanitree[models.Channelable, models.ChatMessageable],
|
||||||
result *common.Sanitree[fs.FileInfo, fs.FileInfo],
|
result *common.Sanitree[fs.FileInfo, fs.FileInfo],
|
||||||
) {
|
) {
|
||||||
common.CompareLeaves(ctx, expect.Leaves, result.Leaves, nil)
|
for key := range expect.Leaves {
|
||||||
|
expect.Leaves[key].Size = 0 // msg sizes cannot be compared
|
||||||
|
}
|
||||||
|
|
||||||
|
updatedResultLeaves := map[string]*common.Sanileaf[fs.FileInfo, fs.FileInfo]{}
|
||||||
|
|
||||||
|
for key, leaf := range result.Leaves {
|
||||||
|
key = strings.TrimSuffix(key, ".json")
|
||||||
|
leaf.Size = 0 // we cannot compare sizes
|
||||||
|
updatedResultLeaves[key] = leaf
|
||||||
|
}
|
||||||
|
|
||||||
|
common.CompareLeaves(ctx, expect.Leaves, updatedResultLeaves, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
common.CompareDiffTrees(
|
common.CompareDiffTrees(
|
||||||
@ -107,7 +131,21 @@ func populateMessagesSanitree(
|
|||||||
common.Fatal(ctx, "getting channel messages", err)
|
common.Fatal(ctx, "getting channel messages", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filteredMsgs := []models.ChatMessageable{}
|
||||||
|
|
||||||
for _, msg := range msgs {
|
for _, msg := range msgs {
|
||||||
|
// filter out system messages (we don't really work with them)
|
||||||
|
if api.IsNotSystemMessage(msg) {
|
||||||
|
filteredMsgs = append(filteredMsgs, msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(filteredMsgs) == 0 {
|
||||||
|
common.Infof(ctx, "skipped empty channel: %s", ptr.Val(ch.GetDisplayName()))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, msg := range filteredMsgs {
|
||||||
child.Leaves[ptr.Val(msg.GetId())] = &common.Sanileaf[
|
child.Leaves[ptr.Val(msg.GetId())] = &common.Sanileaf[
|
||||||
models.Channelable,
|
models.Channelable,
|
||||||
models.ChatMessageable,
|
models.ChatMessageable,
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package export
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/alcionai/corso/src/cmd/sanity_test/common"
|
"github.com/alcionai/corso/src/cmd/sanity_test/common"
|
||||||
"github.com/alcionai/corso/src/cmd/sanity_test/driveish"
|
"github.com/alcionai/corso/src/cmd/sanity_test/driveish"
|
||||||
@ -18,6 +19,7 @@ func CheckSharePointExport(
|
|||||||
common.Fatal(ctx, "getting the drive:", err)
|
common.Fatal(ctx, "getting the drive:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
envs.RestoreContainer = filepath.Join(envs.RestoreContainer, "Libraries/Documents") // check in default loc
|
||||||
driveish.CheckExport(
|
driveish.CheckExport(
|
||||||
ctx,
|
ctx,
|
||||||
ac,
|
ac,
|
||||||
|
|||||||
@ -165,7 +165,7 @@ func (c Channels) NewChannelMessageDeltaPager(
|
|||||||
// unknownFutureValue.
|
// unknownFutureValue.
|
||||||
const channelMessageSystemMessageContent = "<systemEventMessage/>"
|
const channelMessageSystemMessageContent = "<systemEventMessage/>"
|
||||||
|
|
||||||
func filterOutSystemMessages(cm models.ChatMessageable) bool {
|
func IsNotSystemMessage(cm models.ChatMessageable) bool {
|
||||||
if ptr.Val(cm.GetMessageType()) == models.SYSTEMEVENTMESSAGE_CHATMESSAGETYPE {
|
if ptr.Val(cm.GetMessageType()) == models.SYSTEMEVENTMESSAGE_CHATMESSAGETYPE {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -195,7 +195,7 @@ func (c Channels) GetChannelMessageIDs(
|
|||||||
cc.CanMakeDeltaQueries,
|
cc.CanMakeDeltaQueries,
|
||||||
0,
|
0,
|
||||||
pagers.AddedAndRemovedByDeletedDateTime[models.ChatMessageable],
|
pagers.AddedAndRemovedByDeletedDateTime[models.ChatMessageable],
|
||||||
filterOutSystemMessages)
|
IsNotSystemMessage)
|
||||||
|
|
||||||
return aar, clues.Stack(err).OrNil()
|
return aar, clues.Stack(err).OrNil()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -152,7 +152,7 @@ func testEnumerateChannelMessageReplies(
|
|||||||
assert.Equal(t, replyIDs, msgReplyIDs)
|
assert.Equal(t, replyIDs, msgReplyIDs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ChannelsPagerIntgSuite) TestFilterOutSystemMessages() {
|
func (suite *ChannelsPagerIntgSuite) TestIsSystemMessage() {
|
||||||
systemMessage := models.NewChatMessage()
|
systemMessage := models.NewChatMessage()
|
||||||
systemMessage.SetMessageType(ptr.To(models.SYSTEMEVENTMESSAGE_CHATMESSAGETYPE))
|
systemMessage.SetMessageType(ptr.To(models.SYSTEMEVENTMESSAGE_CHATMESSAGETYPE))
|
||||||
|
|
||||||
@ -211,7 +211,7 @@ func (suite *ChannelsPagerIntgSuite) TestFilterOutSystemMessages() {
|
|||||||
}
|
}
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
suite.Run(test.name, func() {
|
suite.Run(test.name, func() {
|
||||||
test.expect(suite.T(), filterOutSystemMessages(test.cm))
|
test.expect(suite.T(), IsNotSystemMessage(test.cm))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user