Add group announcement edit permissions

This commit is contained in:
richjohnrambo
2026-09-04 11:09:29 +08:00
parent 62af772260
commit a191ca0c93
3 changed files with 50 additions and 4 deletions
+33
View File
@@ -4350,6 +4350,39 @@ func TestServeIMGroupAnnouncementGovernanceJoinRequest(t *testing.T) {
}
}
func TestServeIMGroupAnnouncementLatestIncludesEditPermission(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
oldStore := store.Store
oldGroupBusiness := store.GroupBusiness
oldSubs := store.Subs
mockStore := expectIMBearer(t, ctrl, "token-1", 7, 42)
store.Store = mockStore
subs := mock_store.NewMockSubsPersistenceInterface(ctrl)
store.Subs = subs
store.GroupBusiness = &testGroupBusinessStore{}
defer func() {
store.Store = oldStore
store.Subs = oldSubs
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)
req := httptest.NewRequest(http.MethodGet, "/v1/im/groups/grpAlpha/announcements/latest", nil)
req.Header.Set("Authorization", "Bearer token-1")
rec := httptest.NewRecorder()
serveIMGroupResource(rec, req)
if rec.Code != http.StatusOK {
t.Fatalf("latest announcement status: got %d body=%s", rec.Code, rec.Body.String())
}
data := decodeIMHTTPResponse(t, rec).Data.(map[string]any)
permissions := data["permissions"].(map[string]any)
if data["topic"] != "grpAlpha" || data["announcement_id"] != "" || permissions["can_edit"] != true {
t.Fatalf("unexpected latest announcement response: %#v", data)
}
}
func TestServeIMGroupAdminsMutesAndOwnerTransfer(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()