package ws import ( "testing" authMocks "github.com/mattermost/focalboard/server/auth/mocks" wsMocks "github.com/mattermost/focalboard/server/ws/mocks" mmModel "github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/shared/mlog" "github.com/golang/mock/gomock" ) type TestHelper struct { api *wsMocks.MockAPI auth *authMocks.MockAuthInterface store *wsMocks.MockStore ctrl *gomock.Controller pa *PluginAdapter } func SetupTestHelper(t *testing.T) *TestHelper { ctrl := gomock.NewController(t) mockAPI := wsMocks.NewMockAPI(ctrl) mockAuth := authMocks.NewMockAuthInterface(ctrl) mockStore := wsMocks.NewMockStore(ctrl) mockAPI.EXPECT().LogDebug(gomock.Any(), gomock.Any()).AnyTimes() mockAPI.EXPECT().LogInfo(gomock.Any(), gomock.Any()).AnyTimes() mockAPI.EXPECT().LogError(gomock.Any(), gomock.Any()).AnyTimes() mockAPI.EXPECT().LogWarn(gomock.Any(), gomock.Any()).AnyTimes() return &TestHelper{ api: mockAPI, auth: mockAuth, store: mockStore, ctrl: ctrl, pa: NewPluginAdapter(mockAPI, mockAuth, mockStore, mlog.CreateConsoleTestLogger(true, mlog.LvlDebug)), } } func (th *TestHelper) ReceiveWebSocketMessage(webConnID, userID, action string, data map[string]interface{}) { req := &mmModel.WebSocketRequest{Action: websocketMessagePrefix + action, Data: data} th.pa.WebSocketMessageHasBeenPosted(webConnID, userID, req) } func (th *TestHelper) SubscribeWebConnToTeam(webConnID, userID, teamID string) { th.auth.EXPECT(). DoesUserHaveTeamAccess(userID, teamID). Return(true) msgData := map[string]interface{}{"teamId": teamID} th.ReceiveWebSocketMessage(webConnID, userID, websocketActionSubscribeTeam, msgData) } func (th *TestHelper) UnsubscribeWebConnFromTeam(webConnID, userID, teamID string) { msgData := map[string]interface{}{"teamId": teamID} th.ReceiveWebSocketMessage(webConnID, userID, websocketActionUnsubscribeTeam, msgData) }