Files
im_server/server/im_p2p_events_test.go
T

69 lines
2.2 KiB
Go

package main
import (
"encoding/json"
"testing"
"github.com/golang/mock/gomock"
"github.com/tinode/chat/server/store/types"
)
func TestHandleP2PPermissionsRefreshReloadsLoadedTopic(t *testing.T) {
helper := TopicTestHelper{}
helper.setUp(t, 2, types.TopicCatP2P, "p2p-test", true)
defer helper.tearDown()
uid := helper.uids[0]
stale := types.ModeCP2P &^ types.ModeWrite
pud := helper.topic.perUser[uid]
pud.modeWant = stale
pud.modeGiven = stale
helper.topic.perUser[uid] = pud
helper.ss.EXPECT().Get(types.TenantID(1), "p2p-test", uid, true).Return(&types.Subscription{
TenantID: 1, User: uid.String(), Topic: "p2p-test",
ModeWant: types.ModeCP2P, ModeGiven: types.ModeCP2P,
}, nil)
payload, err := json.Marshal(p2pPermissionsPayload{UserIDs: []string{uid.UserId()}})
if err != nil {
t.Fatal(err)
}
helper.topic.handleServerMsg(&ServerComMessage{
TenantID: 1,
Info: &MsgServerInfo{What: "p2p", Event: p2pPermissionsRefreshedEvent, Payload: payload},
})
helper.finish()
got := helper.topic.perUser[uid]
if !got.modeWant.IsWriter() || !got.modeGiven.IsWriter() {
t.Fatalf("permissions were not refreshed: want=%s given=%s", got.modeWant, got.modeGiven)
}
}
func TestP2PPublishReloadsStalePermissions(t *testing.T) {
helper := TopicTestHelper{}
helper.setUp(t, 2, types.TopicCatP2P, "p2p-test", true)
defer helper.tearDown()
uid := helper.uids[0]
stale := types.ModeCP2P &^ types.ModeWrite
pud := helper.topic.perUser[uid]
pud.modeWant = stale
pud.modeGiven = stale
helper.topic.perUser[uid] = pud
helper.ss.EXPECT().Get(types.TenantID(1), "p2p-test", uid, true).Return(&types.Subscription{
TenantID: 1, User: uid.String(), Topic: "p2p-test",
ModeWant: types.ModeCP2P, ModeGiven: types.ModeCP2P,
}, nil)
helper.mm.EXPECT().Save(types.TenantID(1), gomock.Any(), gomock.Any(), gomock.Any()).
Return(&types.MessageSaveResult{SeqId: 1, MarkedReadBySender: true}, nil)
err := helper.topic.saveAndBroadcastMessage(&ClientComMessage{
Id: "pub-1", Original: "p2p-test", Timestamp: types.TimeNow(), sess: helper.sessions[0],
}, uid, true, nil, nil, "test")
helper.finish()
if err != nil {
t.Fatalf("publish failed after permission reload: %v", err)
}
}