feat: publish text message for group announcements

This commit is contained in:
richjohnrambo
2026-09-10 10:27:38 +08:00
parent 6b2f1e06e0
commit 085a48c3d9
2 changed files with 70 additions and 0 deletions
+18
View File
@@ -4668,6 +4668,7 @@ func TestServeIMGroupAnnouncementGovernanceJoinRequest(t *testing.T) {
defer ctrl.Finish()
oldStore := store.Store
oldGroupBusiness := store.GroupBusiness
oldMessages := store.Messages
mockStore := mock_store.NewMockPersistentStorageInterface(ctrl)
tokenAuth := mock_auth.NewMockAuthHandler(ctrl)
mockStore.EXPECT().GetLogicalAuthHandler("token").Return(tokenAuth).Times(3)
@@ -4681,19 +4682,36 @@ func TestServeIMGroupAnnouncementGovernanceJoinRequest(t *testing.T) {
oldSubs := store.Subs
topics := mock_store.NewMockTopicsPersistenceInterface(ctrl)
subs := mock_store.NewMockSubsPersistenceInterface(ctrl)
messages := mock_store.NewMockMessagesPersistenceInterface(ctrl)
store.Topics = topics
store.Subs = subs
store.Messages = messages
groupStore := &testGroupBusinessStore{}
store.GroupBusiness = groupStore
defer func() {
store.Store = oldStore
store.Topics = oldTopics
store.Subs = oldSubs
store.Messages = oldMessages
store.GroupBusiness = oldGroupBusiness
}()
selfSub := &types.Subscription{TenantID: 7, User: types.Uid(42).String(), Topic: "grpAlpha", ModeWant: types.ModeCFull, ModeGiven: types.ModeCFull}
subs.EXPECT().Get(types.TenantID(7), "grpAlpha", types.Uid(42), false).Return(selfSub, nil).Times(2)
subs.EXPECT().Get(types.TenantID(7), "grpAlpha", types.Uid(42), false).Return(nil, nil)
topics.EXPECT().Get(types.TenantID(7), "grpAlpha").Return(&types.Topic{TenantID: 7, SeqId: 10}, nil)
messages.EXPECT().Save(types.TenantID(7), gomock.Any(), gomock.Nil(), true).DoAndReturn(
func(_ types.TenantID, msg *types.Message, _ []string, _ bool) (*types.MessageSaveResult, error) {
if msg.Topic != "grpAlpha" || msg.From != types.Uid(42).String() || msg.SeqId != 11 {
t.Fatalf("unexpected announcement message: %#v", msg)
}
if msg.Head["mime"] != "application/json" || msg.Head["x-im-type"] != "text" || msg.Head["x-im-client-mid"] != "group_announcement_ann_ann-1" {
t.Fatalf("unexpected announcement message head: %#v", msg.Head)
}
if msg.Content.(map[string]any)["text"] != "群公告\n公告" {
t.Fatalf("unexpected announcement message content: %#v", msg.Content)
}
return &types.MessageSaveResult{SeqId: msg.SeqId, MarkedReadBySender: true}, nil
})
annReq := httptest.NewRequest(http.MethodPut, "/v1/im/groups/grpAlpha/announcements/current", bytes.NewBufferString(`{"content":"公告","version":1}`))
annReq.Header.Set("Authorization", "Bearer token-1")