Use CreateConnectedWebSocketClient test util (#30036)

Этот коммит содержится в:
Claudio Costa
2025-01-29 07:58:43 -06:00
коммит произвёл GitHub
родитель f1acdce42c
Коммит 528026d6fb
10 изменённых файлов: 123 добавлений и 250 удалений

Просмотреть файл

@@ -78,7 +78,8 @@ func SetMainHelper(mh *testlib.MainHelper) {
} }
func setupTestHelper(dbStore store.Store, searchEngine *searchengine.Broker, enterprise bool, includeCache bool, func setupTestHelper(dbStore store.Store, searchEngine *searchengine.Broker, enterprise bool, includeCache bool,
updateConfig func(*model.Config), options []app.Option) *TestHelper { updateConfig func(*model.Config), options []app.Option,
) *TestHelper {
tempWorkspace, err := os.MkdirTemp("", "apptest") tempWorkspace, err := os.MkdirTemp("", "apptest")
if err != nil { if err != nil {
panic(err) panic(err)
@@ -421,14 +422,16 @@ func closeBody(r *http.Response) {
} }
} }
var initBasicOnce sync.Once var (
var userCache struct { initBasicOnce sync.Once
userCache struct {
SystemAdminUser *model.User SystemAdminUser *model.User
SystemManagerUser *model.User SystemManagerUser *model.User
TeamAdminUser *model.User TeamAdminUser *model.User
BasicUser *model.User BasicUser *model.User
BasicUser2 *model.User BasicUser2 *model.User
} }
)
func (th *TestHelper) InitLogin() *TestHelper { func (th *TestHelper) InitLogin() *TestHelper {
th.waitForConnectivity() th.waitForConnectivity()
@@ -555,9 +558,9 @@ func (th *TestHelper) CreateLocalClient(socketPath string) *model.Client4 {
} }
} }
func (th *TestHelper) CreateConnectedWebSocketClient(t *testing.T) *model.WebSocketClient { func (th *TestHelper) createConnectedWebSocketClient(t *testing.T, client *model.Client4) *model.WebSocketClient {
t.Helper() t.Helper()
wsClient, err := th.CreateWebSocketClient() wsClient, err := th.CreateWebSocketClientWithClient(client)
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, wsClient, "webSocketClient should not be nil") require.NotNil(t, wsClient, "webSocketClient should not be nil")
wsClient.Listen() wsClient.Listen()
@@ -574,6 +577,14 @@ func (th *TestHelper) CreateConnectedWebSocketClient(t *testing.T) *model.WebSoc
return wsClient return wsClient
} }
func (th *TestHelper) CreateConnectedWebSocketClient(t *testing.T) *model.WebSocketClient {
return th.createConnectedWebSocketClient(t, th.Client)
}
func (th *TestHelper) CreateConnectedWebSocketClientWithClient(t *testing.T, client *model.Client4) *model.WebSocketClient {
return th.createConnectedWebSocketClient(t, client)
}
func (th *TestHelper) CreateWebSocketClient() (*model.WebSocketClient, error) { func (th *TestHelper) CreateWebSocketClient() (*model.WebSocketClient, error) {
return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port), th.Client.AuthToken) return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port), th.Client.AuthToken)
} }
@@ -582,10 +593,6 @@ func (th *TestHelper) CreateReliableWebSocketClient(connID string, seqNo int) (*
return model.NewReliableWebSocketClientWithDialer(websocket.DefaultDialer, fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port), th.Client.AuthToken, connID, seqNo, true) return model.NewReliableWebSocketClientWithDialer(websocket.DefaultDialer, fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port), th.Client.AuthToken, connID, seqNo, true)
} }
func (th *TestHelper) CreateWebSocketSystemAdminClient() (*model.WebSocketClient, error) {
return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port), th.SystemAdminClient.AuthToken)
}
func (th *TestHelper) CreateWebSocketClientWithClient(client *model.Client4) (*model.WebSocketClient, error) { func (th *TestHelper) CreateWebSocketClientWithClient(client *model.Client4) (*model.WebSocketClient, error) {
return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port), client.AuthToken) return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port), client.AuthToken)
} }
@@ -877,7 +884,6 @@ func (th *TestHelper) CreateMessagePostNoClient(channel *model.Channel, message
Message: message, Message: message,
CreateAt: createAtTime, CreateAt: createAtTime,
}) })
if err != nil { if err != nil {
panic(err) panic(err)
} }

Просмотреть файл

@@ -106,11 +106,7 @@ func TestCreateCategoryForTeamForUser(t *testing.T) {
}) })
t.Run("should publish expected WS payload", func(t *testing.T) { t.Run("should publish expected WS payload", func(t *testing.T) {
t.Skip("MM-42652") userWSClient := th.CreateConnectedWebSocketClient(t)
userWSClient, err := th.CreateWebSocketClient()
require.NoError(t, err)
defer userWSClient.Close()
userWSClient.Listen()
category := &model.SidebarCategoryWithChannels{ category := &model.SidebarCategoryWithChannels{
SidebarCategory: model.SidebarCategory{ SidebarCategory: model.SidebarCategory{

Просмотреть файл

@@ -11,7 +11,6 @@ import (
"net/http" "net/http"
"sort" "sort"
"strings" "strings"
"sync"
"testing" "testing"
"time" "time"
@@ -532,7 +531,8 @@ func TestChannelUnicodeNames(t *testing.T) {
Name: "\u206cenglish\u206dchannel", Name: "\u206cenglish\u206dchannel",
DisplayName: "The \u206cEnglish\u206d Channel", DisplayName: "The \u206cEnglish\u206d Channel",
Type: model.ChannelTypeOpen, Type: model.ChannelTypeOpen,
TeamId: team.Id} TeamId: team.Id,
}
rchannel, resp, err := client.CreateChannel(context.Background(), channel) rchannel, resp, err := client.CreateChannel(context.Background(), channel)
require.NoError(t, err) require.NoError(t, err)
@@ -3137,9 +3137,7 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) {
require.Nil(t, appError) require.Nil(t, appError)
SystemAdminClient := th.SystemAdminClient SystemAdminClient := th.SystemAdminClient
WebSocketClient, err := th.CreateWebSocketClient() WebSocketClient := th.CreateConnectedWebSocketClient(t)
WebSocketClient.Listen()
require.NoError(t, err)
th.LoginBasic() th.LoginBasic()
@@ -3148,7 +3146,7 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) {
SchemeUser: false, SchemeUser: false,
SchemeGuest: false, SchemeGuest: false,
} }
_, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s1) _, err := SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s1)
require.NoError(t, err) require.NoError(t, err)
waiting := true waiting := true
@@ -3568,10 +3566,7 @@ func TestAddChannelMemberFromThread(t *testing.T) {
_, _, err := th.SystemAdminClient.AddTeamMember(context.Background(), team.Id, user3.Id) _, _, err := th.SystemAdminClient.AddTeamMember(context.Background(), team.Id, user3.Id)
require.NoError(t, err) require.NoError(t, err)
wsClient, err2 := th.CreateWebSocketClient() wsClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err2)
defer wsClient.Close()
wsClient.Listen()
publicChannel := th.CreatePublicChannel() publicChannel := th.CreatePublicChannel()
@@ -3767,16 +3762,7 @@ func TestRemoveChannelMember(t *testing.T) {
_, err = th.SystemAdminClient.UpdateChannelNotifyProps(context.Background(), th.BasicChannel2.Id, th.SystemAdminUser.Id, props) _, err = th.SystemAdminClient.UpdateChannelNotifyProps(context.Background(), th.BasicChannel2.Id, th.SystemAdminUser.Id, props)
require.NoError(t, err) require.NoError(t, err)
wsClient, err2 := th.CreateWebSocketSystemAdminClient() wsClient := th.CreateConnectedWebSocketClientWithClient(t, th.SystemAdminClient)
require.NoError(t, err2)
wsClient.Listen()
var closeWsClient sync.Once
defer closeWsClient.Do(func() {
wsClient.Close()
})
wsr := <-wsClient.EventChannel
require.Equal(t, model.WebsocketEventHello, wsr.EventType())
// requirePost listens for websocket events and tries to find the post matching // requirePost listens for websocket events and tries to find the post matching
// the expected post's channel and message. // the expected post's channel and message.
@@ -3803,7 +3789,7 @@ func TestRemoveChannelMember(t *testing.T) {
} }
th.App.AddUserToChannel(th.Context, th.BasicUser2, th.BasicChannel, false) th.App.AddUserToChannel(th.Context, th.BasicUser2, th.BasicChannel, false)
_, err2 = client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser2.Id) _, err2 := client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser2.Id)
require.NoError(t, err2) require.NoError(t, err2)
requirePost(&model.Post{ requirePost(&model.Post{
@@ -3824,10 +3810,6 @@ func TestRemoveChannelMember(t *testing.T) {
Message: fmt.Sprintf("@%s removed from the channel.", th.BasicUser.Username), Message: fmt.Sprintf("@%s removed from the channel.", th.BasicUser.Username),
ChannelId: th.BasicChannel.Id, ChannelId: th.BasicChannel.Id,
}) })
closeWsClient.Do(func() {
wsClient.Close()
})
}) })
// Leave deleted channel // Leave deleted channel

Просмотреть файл

@@ -336,10 +336,8 @@ func TestNotifyClusterPluginEvent(t *testing.T) {
require.Equal(t, "testplugin", manifest.Id) require.Equal(t, "testplugin", manifest.Id)
// Successful remove // Successful remove
webSocketClient, err := th.CreateWebSocketSystemAdminClient() webSocketClient := th.CreateConnectedWebSocketClientWithClient(t, th.SystemAdminClient)
require.NoError(t, err)
webSocketClient.Listen()
defer webSocketClient.Close()
done := make(chan bool) done := make(chan bool)
go func() { go func() {
for { for {

Просмотреть файл

@@ -1046,8 +1046,10 @@ func TestMoveThread(t *testing.T) {
// Set permitted role as channel admin // Set permitted role as channel admin
enabled := true enabled := true
th.App.UpdateConfig(func(cfg *model.Config) { th.App.UpdateConfig(func(cfg *model.Config) {
cfg.WranglerSettings = model.WranglerSettings{MoveThreadToAnotherTeamEnable: &enabled, cfg.WranglerSettings = model.WranglerSettings{
PermittedWranglerRoles: []string{model.PermissionsChannelAdmin}} MoveThreadToAnotherTeamEnable: &enabled,
PermittedWranglerRoles: []string{model.PermissionsChannelAdmin},
}
}) })
defer th.App.UpdateConfig(func(cfg *model.Config) { defer th.App.UpdateConfig(func(cfg *model.Config) {
cfg.WranglerSettings = model.WranglerSettings{} cfg.WranglerSettings = model.WranglerSettings{}
@@ -1215,9 +1217,7 @@ func TestCreatePostSendOutOfChannelMentions(t *testing.T) {
defer th.TearDown() defer th.TearDown()
client := th.Client client := th.Client
WebSocketClient, err := th.CreateWebSocketClient() WebSocketClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
WebSocketClient.Listen()
inChannelUser := th.CreateUser() inChannelUser := th.CreateUser()
th.LinkUserToTeam(inChannelUser, th.BasicTeam) th.LinkUserToTeam(inChannelUser, th.BasicTeam)
@@ -1286,11 +1286,7 @@ func TestCreatePostCheckOnlineStatus(t *testing.T) {
_, _, err = cli.Login(context.Background(), th.BasicUser2.Username, th.BasicUser2.Password) _, _, err = cli.Login(context.Background(), th.BasicUser2.Username, th.BasicUser2.Password)
require.NoError(t, err) require.NoError(t, err)
wsClient, err := th.CreateWebSocketClientWithClient(cli) wsClient := th.CreateConnectedWebSocketClientWithClient(t, cli)
require.NoError(t, err)
defer wsClient.Close()
wsClient.Listen()
waitForEvent := func(isSetOnline bool) { waitForEvent := func(isSetOnline bool) {
timeout := time.After(5 * time.Second) timeout := time.After(5 * time.Second)
@@ -3394,11 +3390,7 @@ func TestWebHubMembership(t *testing.T) {
_, _, err := cli.Login(context.Background(), obj.user.Username, obj.user.Password) _, _, err := cli.Login(context.Background(), obj.user.Username, obj.user.Password)
require.NoError(t, err) require.NoError(t, err)
wsClient, err := th.CreateWebSocketClientWithClient(cli) wsClient := th.CreateConnectedWebSocketClientWithClient(t, cli)
require.NoError(t, err)
defer wsClient.Close()
wsClient.Listen()
go func(testName string) { go func(testName string) {
defer wg.Done() defer wg.Done()
@@ -3509,12 +3501,9 @@ func TestDeletePostEvent(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
WebSocketClient, err := th.CreateWebSocketClient() WebSocketClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
WebSocketClient.Listen()
defer WebSocketClient.Close()
_, err = th.SystemAdminClient.DeletePost(context.Background(), th.BasicPost.Id) _, err := th.SystemAdminClient.DeletePost(context.Background(), th.BasicPost.Id)
require.NoError(t, err) require.NoError(t, err)
var received, exit bool var received, exit bool
@@ -3554,15 +3543,11 @@ func TestDeletePostMessage(t *testing.T) {
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.description, func(t *testing.T) { t.Run(tc.description, func(t *testing.T) {
wsClient, err := th.CreateWebSocketClientWithClient(tc.client) wsClient := th.CreateConnectedWebSocketClientWithClient(t, tc.client)
require.NoError(t, err)
defer wsClient.Close()
wsClient.Listen()
post := th.CreatePost() post := th.CreatePost()
_, err = th.SystemAdminClient.DeletePost(context.Background(), post.Id) _, err := th.SystemAdminClient.DeletePost(context.Background(), post.Id)
require.NoError(t, err) require.NoError(t, err)
timeout := time.After(5 * time.Second) timeout := time.After(5 * time.Second)
@@ -4310,12 +4295,9 @@ func TestSetPostUnreadWithoutCollapsedThreads(t *testing.T) {
require.Nil(t, appErr) require.Nil(t, appErr)
t.Run("Mark reply post as unread", func(t *testing.T) { t.Run("Mark reply post as unread", func(t *testing.T) {
userWSClient, err := th.CreateWebSocketClient() userWSClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
defer userWSClient.Close()
userWSClient.Listen()
_, err = th.Client.SetPostUnread(context.Background(), th.BasicUser.Id, replyPost1.Id, false) _, err := th.Client.SetPostUnread(context.Background(), th.BasicUser.Id, replyPost1.Id, false)
require.NoError(t, err) require.NoError(t, err)
channelUnread, appErr := th.App.GetChannelUnread(th.Context, th.BasicChannel.Id, th.BasicUser.Id) channelUnread, appErr := th.App.GetChannelUnread(th.Context, th.BasicChannel.Id, th.BasicUser.Id)
require.Nil(t, appErr) require.Nil(t, appErr)
@@ -4375,6 +4357,7 @@ func TestSetPostUnreadWithoutCollapsedThreads(t *testing.T) {
require.Equal(t, int64(3), channelUnread.MsgCountRoot) require.Equal(t, int64(3), channelUnread.MsgCountRoot)
}) })
} }
func TestGetPostsByIds(t *testing.T) { func TestGetPostsByIds(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
@@ -4623,10 +4606,7 @@ func TestCreatePostNotificationsWithCRT(t *testing.T) {
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
userWSClient, err := th.CreateWebSocketClient() userWSClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
defer userWSClient.Close()
userWSClient.Listen()
patch := &model.UserPatch{} patch := &model.UserPatch{}
patch.NotifyProps = model.CopyStringMap(th.BasicUser.NotifyProps) patch.NotifyProps = model.CopyStringMap(th.BasicUser.NotifyProps)
@@ -4635,7 +4615,7 @@ func TestCreatePostNotificationsWithCRT(t *testing.T) {
} }
// update user's notify props // update user's notify props
_, _, err = th.Client.PatchUser(context.Background(), th.BasicUser.Id, patch) _, _, err := th.Client.PatchUser(context.Background(), th.BasicUser.Id, patch)
require.NoError(t, err) require.NoError(t, err)
// post a reply on the thread // post a reply on the thread
@@ -4734,10 +4714,7 @@ func TestPostReminder(t *testing.T) {
defer th.TearDown() defer th.TearDown()
client := th.Client client := th.Client
userWSClient, err := th.CreateWebSocketClient() userWSClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
defer userWSClient.Close()
userWSClient.Listen()
targetTime := time.Now().UTC().Unix() targetTime := time.Now().UTC().Unix()
resp, err := client.SetPostReminder(context.Background(), &model.PostReminder{ resp, err := client.SetPostReminder(context.Background(), &model.PostReminder{

Просмотреть файл

@@ -344,13 +344,7 @@ func TestUpdatePreferencesWebsocket(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
WebSocketClient, err := th.CreateWebSocketClient() WebSocketClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
WebSocketClient.Listen()
time.Sleep(300 * time.Millisecond)
wsResp := <-WebSocketClient.ResponseChannel
require.Equal(t, wsResp.Status, model.StatusOk, "expected OK from auth challenge")
userId := th.BasicUser.Id userId := th.BasicUser.Id
preferences := model.Preferences{ preferences := model.Preferences{
@@ -366,7 +360,7 @@ func TestUpdatePreferencesWebsocket(t *testing.T) {
}, },
} }
_, err = th.Client.UpdatePreferences(context.Background(), userId, preferences) _, err := th.Client.UpdatePreferences(context.Background(), userId, preferences)
require.NoError(t, err) require.NoError(t, err)
timeout := time.After(300 * time.Millisecond) timeout := time.After(300 * time.Millisecond)
@@ -750,12 +744,7 @@ func TestDeletePreferencesWebsocket(t *testing.T) {
_, err := th.Client.UpdatePreferences(context.Background(), userId, preferences) _, err := th.Client.UpdatePreferences(context.Background(), userId, preferences)
require.NoError(t, err) require.NoError(t, err)
WebSocketClient, err := th.CreateWebSocketClient() WebSocketClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
WebSocketClient.Listen()
wsResp := <-WebSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, wsResp.Status, "should have responded OK to authentication challenge")
_, err = th.Client.DeletePreferences(context.Background(), userId, preferences) _, err = th.Client.DeletePreferences(context.Background(), userId, preferences)
require.NoError(t, err) require.NoError(t, err)

Просмотреть файл

@@ -590,9 +590,7 @@ func TestGetAnalyticsOld(t *testing.T) {
assert.Equal(t, "total_websocket_connections", rows2[5].Name) assert.Equal(t, "total_websocket_connections", rows2[5].Name)
assert.Equal(t, float64(0), rows2[5].Value) assert.Equal(t, float64(0), rows2[5].Value)
WebSocketClient, err := th.CreateWebSocketClient() WebSocketClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
time.Sleep(100 * time.Millisecond)
rows2, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "standard", "") rows2, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "standard", "")
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, "total_websocket_connections", rows2[5].Name) assert.Equal(t, "total_websocket_connections", rows2[5].Name)

Просмотреть файл

@@ -915,7 +915,8 @@ func TestTeamUnicodeNames(t *testing.T) {
DisplayName: "Some\u206c Team", DisplayName: "Some\u206c Team",
Description: "A \ufffatest\ufffb channel.", Description: "A \ufffatest\ufffb channel.",
CompanyName: "\ufeffAcme Inc\ufffc", CompanyName: "\ufeffAcme Inc\ufffc",
Type: model.TeamOpen} Type: model.TeamOpen,
}
rteam, resp, err := client.CreateTeam(context.Background(), team) rteam, resp, err := client.CreateTeam(context.Background(), team)
require.NoError(t, err) require.NoError(t, err)
CheckCreatedStatus(t, resp) CheckCreatedStatus(t, resp)
@@ -932,7 +933,8 @@ func TestTeamUnicodeNames(t *testing.T) {
CompanyName: "Bad Company", CompanyName: "Bad Company",
Name: model.NewRandomTeamName(), Name: model.NewRandomTeamName(),
Email: "success+" + model.NewId() + "@simulator.amazonses.com", Email: "success+" + model.NewId() + "@simulator.amazonses.com",
Type: model.TeamOpen} Type: model.TeamOpen,
}
team, _, _ = client.CreateTeam(context.Background(), team) team, _, _ = client.CreateTeam(context.Background(), team)
team.DisplayName = "\u206eThe Team\u206f" team.DisplayName = "\u206eThe Team\u206f"
@@ -953,7 +955,8 @@ func TestTeamUnicodeNames(t *testing.T) {
CompanyName: "Some company name", CompanyName: "Some company name",
Name: model.NewRandomTeamName(), Name: model.NewRandomTeamName(),
Email: "success+" + model.NewId() + "@simulator.amazonses.com", Email: "success+" + model.NewId() + "@simulator.amazonses.com",
Type: model.TeamOpen} Type: model.TeamOpen,
}
team, _, _ = client.CreateTeam(context.Background(), team) team, _, _ = client.CreateTeam(context.Background(), team)
patch := &model.TeamPatch{} patch := &model.TeamPatch{}
@@ -2814,21 +2817,11 @@ func TestRemoveTeamMemberEvents(t *testing.T) {
client1 := th.CreateClient() client1 := th.CreateClient()
th.LoginBasicWithClient(client1) th.LoginBasicWithClient(client1)
WebSocketClient, err := th.CreateWebSocketClientWithClient(client1) WebSocketClient := th.CreateConnectedWebSocketClientWithClient(t, client1)
require.NoError(t, err)
defer WebSocketClient.Close()
WebSocketClient.Listen()
resp := <-WebSocketClient.ResponseChannel
require.Equal(t, resp.Status, model.StatusOk)
client2 := th.CreateClient() client2 := th.CreateClient()
th.LoginBasic2WithClient(client2) th.LoginBasic2WithClient(client2)
WebSocketClient2, err := th.CreateWebSocketClientWithClient(client2) WebSocketClient2 := th.CreateConnectedWebSocketClientWithClient(t, client2)
require.NoError(t, err)
defer WebSocketClient2.Close()
WebSocketClient2.Listen()
resp = <-WebSocketClient2.ResponseChannel
require.Equal(t, resp.Status, model.StatusOk)
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
// remove second user from basic team // remove second user from basic team
@@ -3428,9 +3421,11 @@ func TestInviteUsersToTeam(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
nameFormat := *th.App.Config().TeamSettings.TeammateNameDisplay nameFormat := *th.App.Config().TeamSettings.TeammateNameDisplay
expectedSubject := i18n.T("api.templates.invite_subject", expectedSubject := i18n.T("api.templates.invite_subject",
map[string]any{"SenderName": th.SystemAdminUser.GetDisplayName(nameFormat), map[string]any{
"SenderName": th.SystemAdminUser.GetDisplayName(nameFormat),
"TeamDisplayName": th.BasicTeam.DisplayName, "TeamDisplayName": th.BasicTeam.DisplayName,
"SiteName": th.App.ClientConfig()["SiteName"]}) "SiteName": th.App.ClientConfig()["SiteName"],
})
checkEmail(t, expectedSubject) checkEmail(t, expectedSubject)
// Test the invite to team and channel // Test the invite to team and channel
@@ -3441,10 +3436,12 @@ func TestInviteUsersToTeam(t *testing.T) {
_, _, err = th.SystemAdminClient.InviteUsersToTeamAndChannelsGracefully(context.Background(), th.BasicTeam.Id, []string{user1, user2}, []string{th.BasicChannel.Id}, "") _, _, err = th.SystemAdminClient.InviteUsersToTeamAndChannelsGracefully(context.Background(), th.BasicTeam.Id, []string{user1, user2}, []string{th.BasicChannel.Id}, "")
require.NoError(t, err) require.NoError(t, err)
expectedSubject = i18n.T("api.templates.invite_team_and_channel_subject", expectedSubject = i18n.T("api.templates.invite_team_and_channel_subject",
map[string]any{"SenderName": th.SystemAdminUser.GetDisplayName(nameFormat), map[string]any{
"SenderName": th.SystemAdminUser.GetDisplayName(nameFormat),
"TeamDisplayName": th.BasicTeam.DisplayName, "TeamDisplayName": th.BasicTeam.DisplayName,
"ChannelName": th.BasicChannel.DisplayName, "ChannelName": th.BasicChannel.DisplayName,
"SiteName": th.App.ClientConfig()["SiteName"]}) "SiteName": th.App.ClientConfig()["SiteName"],
})
checkEmail(t, expectedSubject) checkEmail(t, expectedSubject)
err = mail.DeleteMailBox(user1) err = mail.DeleteMailBox(user1)
@@ -3454,9 +3451,11 @@ func TestInviteUsersToTeam(t *testing.T) {
_, err = th.LocalClient.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, emailList) _, err = th.LocalClient.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, emailList)
require.NoError(t, err) require.NoError(t, err)
expectedSubject = i18n.T("api.templates.invite_subject", expectedSubject = i18n.T("api.templates.invite_subject",
map[string]any{"SenderName": "Administrator", map[string]any{
"SenderName": "Administrator",
"TeamDisplayName": th.BasicTeam.DisplayName, "TeamDisplayName": th.BasicTeam.DisplayName,
"SiteName": th.App.ClientConfig()["SiteName"]}) "SiteName": th.App.ClientConfig()["SiteName"],
})
checkEmail(t, expectedSubject) checkEmail(t, expectedSubject)
// Test the invite local to team and channel // Test the invite local to team and channel
@@ -3467,10 +3466,12 @@ func TestInviteUsersToTeam(t *testing.T) {
_, _, err = th.LocalClient.InviteUsersToTeamAndChannelsGracefully(context.Background(), th.BasicTeam.Id, []string{user1, user2}, []string{th.BasicChannel.Id}, "") _, _, err = th.LocalClient.InviteUsersToTeamAndChannelsGracefully(context.Background(), th.BasicTeam.Id, []string{user1, user2}, []string{th.BasicChannel.Id}, "")
require.NoError(t, err) require.NoError(t, err)
expectedSubject = i18n.T("api.templates.invite_team_and_channel_subject", expectedSubject = i18n.T("api.templates.invite_team_and_channel_subject",
map[string]any{"SenderName": "Administrator", map[string]any{
"SenderName": "Administrator",
"TeamDisplayName": th.BasicTeam.DisplayName, "TeamDisplayName": th.BasicTeam.DisplayName,
"ChannelName": th.BasicChannel.DisplayName, "ChannelName": th.BasicChannel.DisplayName,
"SiteName": th.App.ClientConfig()["SiteName"]}) "SiteName": th.App.ClientConfig()["SiteName"],
})
checkEmail(t, expectedSubject) checkEmail(t, expectedSubject)
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictCreationToDomains = "@global.com,@common.com" }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictCreationToDomains = "@global.com,@common.com" })
@@ -3593,9 +3594,11 @@ func TestInviteGuestsToTeam(t *testing.T) {
nameFormat := *th.App.Config().TeamSettings.TeammateNameDisplay nameFormat := *th.App.Config().TeamSettings.TeammateNameDisplay
expectedSubject := i18n.T("api.templates.invite_guest_subject", expectedSubject := i18n.T("api.templates.invite_guest_subject",
map[string]any{"SenderName": th.SystemAdminUser.GetDisplayName(nameFormat), map[string]any{
"SenderName": th.SystemAdminUser.GetDisplayName(nameFormat),
"TeamDisplayName": th.BasicTeam.DisplayName, "TeamDisplayName": th.BasicTeam.DisplayName,
"SiteName": th.App.ClientConfig()["SiteName"]}) "SiteName": th.App.ClientConfig()["SiteName"],
})
// Check if the email was send to the right email address // Check if the email was send to the right email address
for _, email := range emailList { for _, email := range emailList {

Просмотреть файл

@@ -770,15 +770,8 @@ func TestCreateUserWebSocketEvent(t *testing.T) {
_, _, err := guestClient.Login(context.Background(), guest.Email, guestPassword) _, _, err := guestClient.Login(context.Background(), guest.Email, guestPassword)
require.NoError(t, err) require.NoError(t, err)
guestWSClient, err := th.CreateWebSocketClientWithClient(guestClient) guestWSClient := th.CreateConnectedWebSocketClientWithClient(t, guestClient)
require.NoError(t, err) userWSClient := th.CreateConnectedWebSocketClient(t)
defer guestWSClient.Close()
guestWSClient.Listen()
userWSClient, err := th.CreateWebSocketClient()
require.NoError(t, err)
defer userWSClient.Close()
userWSClient.Listen()
user := model.User{Email: th.GenerateTestEmail(), Nickname: "Corey Hulen", Password: "hello1", Username: GenerateTestUsername(), Roles: model.SystemAdminRoleId + " " + model.SystemUserRoleId} user := model.User{Email: th.GenerateTestEmail(), Nickname: "Corey Hulen", Password: "hello1", Username: GenerateTestUsername(), Roles: model.SystemAdminRoleId + " " + model.SystemUserRoleId}
@@ -2802,25 +2795,12 @@ func TestUpdateUserActive(t *testing.T) {
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserDeactivation = true }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserDeactivation = true })
webSocketClient, err := th.CreateWebSocketClient() webSocketClient := th.CreateConnectedWebSocketClient(t)
assert.NoError(t, err)
defer webSocketClient.Close()
webSocketClient.Listen()
time.Sleep(300 * time.Millisecond)
resp := <-webSocketClient.ResponseChannel resp := <-webSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, resp.Status) require.Equal(t, model.StatusOk, resp.Status)
adminWebSocketClient, err := th.CreateWebSocketSystemAdminClient() adminWebSocketClient := th.CreateConnectedWebSocketClientWithClient(t, th.SystemAdminClient)
assert.NoError(t, err)
defer adminWebSocketClient.Close()
adminWebSocketClient.Listen()
time.Sleep(300 * time.Millisecond)
resp = <-adminWebSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, resp.Status)
// Verify that both admins and regular users see the email when privacy settings allow same, // Verify that both admins and regular users see the email when privacy settings allow same,
// and confirm event is fired for SystemAdmin and Local mode // and confirm event is fired for SystemAdmin and Local mode
@@ -6288,27 +6268,13 @@ func TestDemoteUserToGuest(t *testing.T) {
}, "demote a user to guest") }, "demote a user to guest")
t.Run("websocket update user event", func(t *testing.T) { t.Run("websocket update user event", func(t *testing.T) {
webSocketClient, err := th.CreateWebSocketClient() webSocketClient := th.CreateConnectedWebSocketClient(t)
assert.NoError(t, err)
defer webSocketClient.Close()
webSocketClient.Listen()
time.Sleep(300 * time.Millisecond)
resp := <-webSocketClient.ResponseChannel resp := <-webSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, resp.Status) require.Equal(t, model.StatusOk, resp.Status)
adminWebSocketClient, err := th.CreateWebSocketSystemAdminClient() adminWebSocketClient := th.CreateConnectedWebSocketClientWithClient(t, th.SystemAdminClient)
assert.NoError(t, err)
defer adminWebSocketClient.Close()
adminWebSocketClient.Listen() _, _, err := th.SystemAdminClient.GetUser(context.Background(), user.Id, "")
time.Sleep(300 * time.Millisecond)
resp = <-adminWebSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, resp.Status)
_, _, err = th.SystemAdminClient.GetUser(context.Background(), user.Id, "")
require.NoError(t, err) require.NoError(t, err)
_, err = th.SystemAdminClient.DemoteUserToGuest(context.Background(), user.Id) _, err = th.SystemAdminClient.DemoteUserToGuest(context.Background(), user.Id)
require.NoError(t, err) require.NoError(t, err)
@@ -6358,28 +6324,14 @@ func TestPromoteGuestToUser(t *testing.T) {
}, "promote a guest to user") }, "promote a guest to user")
t.Run("websocket update user event", func(t *testing.T) { t.Run("websocket update user event", func(t *testing.T) {
t.Skip("https://mattermost.atlassian.net/browse/MM-61736") webSocketClient := th.CreateConnectedWebSocketClient(t)
webSocketClient, err := th.CreateWebSocketClient()
assert.NoError(t, err)
defer webSocketClient.Close()
webSocketClient.Listen()
time.Sleep(300 * time.Millisecond)
resp := <-webSocketClient.ResponseChannel resp := <-webSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, resp.Status) require.Equal(t, model.StatusOk, resp.Status)
adminWebSocketClient, err := th.CreateWebSocketSystemAdminClient() adminWebSocketClient := th.CreateConnectedWebSocketClientWithClient(t, th.SystemAdminClient)
assert.NoError(t, err)
defer adminWebSocketClient.Close()
adminWebSocketClient.Listen() _, _, err := th.SystemAdminClient.GetUser(context.Background(), user.Id, "")
time.Sleep(300 * time.Millisecond)
resp = <-adminWebSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, resp.Status)
_, _, err = th.SystemAdminClient.GetUser(context.Background(), user.Id, "")
require.NoError(t, err) require.NoError(t, err)
_, err = th.SystemAdminClient.PromoteGuestToUser(context.Background(), user.Id) _, err = th.SystemAdminClient.PromoteGuestToUser(context.Background(), user.Id)
require.NoError(t, err) require.NoError(t, err)
@@ -6584,17 +6536,12 @@ func TestPublishUserTyping(t *testing.T) {
}) })
t.Run("should send typing event via websocket when triggering a typing event for a user with a common channel", func(t *testing.T) { t.Run("should send typing event via websocket when triggering a typing event for a user with a common channel", func(t *testing.T) {
webSocketClient, err := th.CreateWebSocketClient() webSocketClient := th.CreateConnectedWebSocketClient(t)
assert.NoError(t, err)
defer webSocketClient.Close()
webSocketClient.Listen()
time.Sleep(300 * time.Millisecond)
wsResp := <-webSocketClient.ResponseChannel wsResp := <-webSocketClient.ResponseChannel
require.Equal(t, model.StatusOk, wsResp.Status) require.Equal(t, model.StatusOk, wsResp.Status)
_, err = th.SystemAdminClient.PublishUserTyping(context.Background(), th.BasicUser2.Id, tr) _, err := th.SystemAdminClient.PublishUserTyping(context.Background(), th.BasicUser2.Id, tr)
require.NoError(t, err) require.NoError(t, err)
assertExpectedWebsocketEvent(t, webSocketClient, model.WebsocketEventTyping, func(resp *model.WebSocketEvent) { assertExpectedWebsocketEvent(t, webSocketClient, model.WebsocketEventTyping, func(resp *model.WebSocketEvent) {
@@ -7240,10 +7187,7 @@ func TestThreadSocketEvents(t *testing.T) {
*cfg.ServiceSettings.CollapsedThreads = model.CollapsedThreadsDefaultOn *cfg.ServiceSettings.CollapsedThreads = model.CollapsedThreadsDefaultOn
}) })
userWSClient, err := th.CreateWebSocketClient() userWSClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
defer userWSClient.Close()
userWSClient.Listen()
client := th.Client client := th.Client
@@ -8280,19 +8224,13 @@ func TestUserUpdateEvents(t *testing.T) {
client1 := th.CreateClient() client1 := th.CreateClient()
th.LoginBasicWithClient(client1) th.LoginBasicWithClient(client1)
WebSocketClient, err := th.CreateWebSocketClientWithClient(client1) WebSocketClient := th.CreateConnectedWebSocketClientWithClient(t, client1)
require.NoError(t, err)
defer WebSocketClient.Close()
WebSocketClient.Listen()
resp := <-WebSocketClient.ResponseChannel resp := <-WebSocketClient.ResponseChannel
require.Equal(t, resp.Status, model.StatusOk) require.Equal(t, resp.Status, model.StatusOk)
client2 := th.CreateClient() client2 := th.CreateClient()
th.LoginBasic2WithClient(client2) th.LoginBasic2WithClient(client2)
WebSocketClient2, err := th.CreateWebSocketClientWithClient(client2) WebSocketClient2 := th.CreateConnectedWebSocketClientWithClient(t, client2)
require.NoError(t, err)
defer WebSocketClient2.Close()
WebSocketClient2.Listen()
resp = <-WebSocketClient2.ResponseChannel resp = <-WebSocketClient2.ResponseChannel
require.Equal(t, resp.Status, model.StatusOk) require.Equal(t, resp.Status, model.StatusOk)

Просмотреть файл

@@ -33,11 +33,7 @@ func TestWebSocketEvent(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
WebSocketClient, err := th.CreateWebSocketClient() WebSocketClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
defer WebSocketClient.Close()
WebSocketClient.Listen()
resp := <-WebSocketClient.ResponseChannel resp := <-WebSocketClient.ResponseChannel
require.Equal(t, resp.Status, model.StatusOk, "should have responded OK to authentication challenge") require.Equal(t, resp.Status, model.StatusOk, "should have responded OK to authentication challenge")
@@ -243,22 +239,18 @@ func TestWebSocketSendBinary(t *testing.T) {
client := th.CreateClient() client := th.CreateClient()
th.LoginBasicWithClient(client) th.LoginBasicWithClient(client)
WebSocketClient, err := th.CreateWebSocketClientWithClient(client) WebSocketClient := th.CreateConnectedWebSocketClientWithClient(t, client)
require.NoError(t, err)
defer WebSocketClient.Close()
WebSocketClient.Listen()
resp := <-WebSocketClient.ResponseChannel resp := <-WebSocketClient.ResponseChannel
require.Equal(t, resp.Status, model.StatusOk) require.Equal(t, resp.Status, model.StatusOk)
client2 := th.CreateClient() client2 := th.CreateClient()
th.LoginBasic2WithClient(client2) th.LoginBasic2WithClient(client2)
WebSocketClient2, err := th.CreateWebSocketClientWithClient(client2) _ = th.CreateConnectedWebSocketClientWithClient(t, client2)
require.NoError(t, err)
defer WebSocketClient2.Close()
time.Sleep(1000 * time.Millisecond) // Wait for statuses to be updated
time.Sleep(time.Second)
err = WebSocketClient.SendBinaryMessage("get_statuses", nil) err := WebSocketClient.SendBinaryMessage("get_statuses", nil)
require.NoError(t, err) require.NoError(t, err)
resp = <-WebSocketClient.ResponseChannel resp = <-WebSocketClient.ResponseChannel
require.Nil(t, resp.Error, resp.Error) require.Nil(t, resp.Error, resp.Error)
@@ -285,10 +277,7 @@ func TestWebSocketStatuses(t *testing.T) {
defer th.TearDown() defer th.TearDown()
client := th.Client client := th.Client
WebSocketClient, err := th.CreateWebSocketClient() WebSocketClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
defer WebSocketClient.Close()
WebSocketClient.Listen()
resp := <-WebSocketClient.ResponseChannel resp := <-WebSocketClient.ResponseChannel
require.Equal(t, resp.Status, model.StatusOk, "should have responded OK to authentication challenge") require.Equal(t, resp.Status, model.StatusOk, "should have responded OK to authentication challenge")
@@ -315,10 +304,10 @@ func TestWebSocketStatuses(t *testing.T) {
th.LoginBasic2() th.LoginBasic2()
WebSocketClient2, err := th.CreateWebSocketClient() WebSocketClient2 := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
time.Sleep(1000 * time.Millisecond) // Wait for statuses to be updated
time.Sleep(time.Second)
WebSocketClient.GetStatuses() WebSocketClient.GetStatuses()
resp = <-WebSocketClient.ResponseChannel resp = <-WebSocketClient.ResponseChannel
@@ -426,10 +415,7 @@ func TestWebSocketPresence(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
wsClient, err := th.CreateWebSocketClient() wsClient := th.CreateConnectedWebSocketClient(t)
require.NoError(t, err)
defer wsClient.Close()
wsClient.Listen()
resp := <-wsClient.ResponseChannel resp := <-wsClient.ResponseChannel
require.Equal(t, resp.Status, model.StatusOk, "should have responded OK to authentication challenge") require.Equal(t, resp.Status, model.StatusOk, "should have responded OK to authentication challenge")