mirror of
https://github.com/mattermost/mattermost.git
synced 2026-02-03 20:40:00 -05:00
New plugin APIs and hooks for accessing Shared Channels service via plugin. - RegisterPluginForSharedChannels(opts model.RegisterPluginOpts) (remoteID string, err error) - UnregisterPluginForSharedChannels(pluginID string) error - ShareChannel(sc *model.SharedChannel) (*model.SharedChannel, error) - UpdateSharedChannel(sc *model.SharedChannel) (*model.SharedChannel, error) - UnshareChannel(channelID string) (unshared bool, err error) - UpdateSharedChannelCursor(channelID, remoteID string, cusror model.GetPostsSinceForSyncCursor) error - SyncSharedChannel(channelID string) error - InviteRemoteToChannel(channelID string, remoteID string, userID string) error - UninviteRemoteFromChannel(channelID string, remoteID string) error Hooks - OnSharedChannelsSyncMsg(msg *model.SyncMsg, rc *model.RemoteCluster) (model.SyncResponse, error) - OnSharedChannelsPing(rc *model.RemoteCluster) bool
73 lines
2 KiB
Go
73 lines
2 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package remotecluster
|
|
|
|
import (
|
|
"sync/atomic"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/mattermost/mattermost/server/public/model"
|
|
)
|
|
|
|
func TestService_AddTopicListener(t *testing.T) {
|
|
var count int32
|
|
|
|
l1 := func(msg model.RemoteClusterMsg, rc *model.RemoteCluster, resp *Response) error {
|
|
atomic.AddInt32(&count, 1)
|
|
return nil
|
|
}
|
|
l2 := func(msg model.RemoteClusterMsg, rc *model.RemoteCluster, resp *Response) error {
|
|
atomic.AddInt32(&count, 1)
|
|
return nil
|
|
}
|
|
l3 := func(msg model.RemoteClusterMsg, rc *model.RemoteCluster, resp *Response) error {
|
|
atomic.AddInt32(&count, 1)
|
|
return nil
|
|
}
|
|
|
|
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, "", false))
|
|
mockApp := newMockApp(t, nil)
|
|
|
|
service, err := NewRemoteClusterService(mockServer, mockApp)
|
|
require.NoError(t, err)
|
|
|
|
l1id := service.AddTopicListener("test", l1)
|
|
l2id := service.AddTopicListener("test", l2)
|
|
l3id := service.AddTopicListener("different", l3)
|
|
|
|
listeners := service.getTopicListeners("test")
|
|
assert.Len(t, listeners, 2)
|
|
|
|
rc := &model.RemoteCluster{}
|
|
msg1 := model.RemoteClusterMsg{Topic: "test"}
|
|
msg2 := model.RemoteClusterMsg{Topic: "different"}
|
|
|
|
service.ReceiveIncomingMsg(rc, msg1)
|
|
assert.Equal(t, int32(2), atomic.LoadInt32(&count))
|
|
|
|
service.ReceiveIncomingMsg(rc, msg2)
|
|
assert.Equal(t, int32(3), atomic.LoadInt32(&count))
|
|
|
|
service.RemoveTopicListener(l1id)
|
|
service.ReceiveIncomingMsg(rc, msg1)
|
|
assert.Equal(t, int32(4), atomic.LoadInt32(&count))
|
|
|
|
service.RemoveTopicListener(l2id)
|
|
service.ReceiveIncomingMsg(rc, msg1)
|
|
assert.Equal(t, int32(4), atomic.LoadInt32(&count))
|
|
|
|
service.ReceiveIncomingMsg(rc, msg2)
|
|
assert.Equal(t, int32(5), atomic.LoadInt32(&count))
|
|
|
|
service.RemoveTopicListener(l3id)
|
|
service.ReceiveIncomingMsg(rc, msg1)
|
|
service.ReceiveIncomingMsg(rc, msg2)
|
|
assert.Equal(t, int32(5), atomic.LoadInt32(&count))
|
|
|
|
listeners = service.getTopicListeners("test")
|
|
assert.Empty(t, listeners)
|
|
}
|