mirror of
https://github.com/matrix-org/sliding-sync.git
synced 2025-03-10 13:37:11 +00:00
Check for unstable prefix in MSC4115
This commit is contained in:
parent
abf5aeff82
commit
0af85096aa
@ -274,6 +274,7 @@ func (h *Handler) Accumulate(ctx context.Context, userID, deviceID, roomID strin
|
||||
for i := range timeline.Events {
|
||||
// Delete MSC4115 field as it isn't accurate when we reuse the same event for >1 user
|
||||
timeline.Events[i], _ = sjson.DeleteBytes(timeline.Events[i], "unsigned.membership")
|
||||
timeline.Events[i], _ = sjson.DeleteBytes(timeline.Events[i], `unsigned.io\.element\.msc4115\.membership`)
|
||||
parsed := gjson.ParseBytes(timeline.Events[i])
|
||||
eventID := parsed.Get("event_id").Str
|
||||
|
||||
@ -376,6 +377,7 @@ func (h *Handler) Accumulate(ctx context.Context, userID, deviceID, roomID strin
|
||||
func (h *Handler) Initialise(ctx context.Context, roomID string, state []json.RawMessage) error {
|
||||
for i := range state { // Delete MSC4115 field as it isn't accurate when we reuse the same event for >1 user
|
||||
state[i], _ = sjson.DeleteBytes(state[i], "unsigned.membership")
|
||||
state[i], _ = sjson.DeleteBytes(state[i], `unsigned.io\.element\.msc4115\.membership`)
|
||||
}
|
||||
res, err := h.Store.Initialise(roomID, state)
|
||||
if err != nil {
|
||||
|
@ -2,6 +2,7 @@ package syncv3
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@ -364,6 +365,15 @@ func TestBumpEventTypesOnStartup(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeleteMSC4115Field(t *testing.T) {
|
||||
t.Run("stable prefix", func(t *testing.T) {
|
||||
testDeleteMSC4115Field(t, "membership")
|
||||
})
|
||||
t.Run("unstable prefix", func(t *testing.T) {
|
||||
testDeleteMSC4115Field(t, "io.element.msc4115.membership")
|
||||
})
|
||||
}
|
||||
|
||||
func testDeleteMSC4115Field(t *testing.T, fieldName string) {
|
||||
rig := NewTestRig(t)
|
||||
defer rig.Finish()
|
||||
roomID := "!TestDeleteMSC4115Field:localhost"
|
||||
@ -390,11 +400,11 @@ func TestDeleteMSC4115Field(t *testing.T) {
|
||||
|
||||
// ensure live events remove the field.
|
||||
liveEvent := testutils.NewMessageEvent(t, alice, "live event", testutils.WithUnsigned(map[string]interface{}{
|
||||
"membership": "join",
|
||||
fieldName: "join",
|
||||
}))
|
||||
liveEventWithoutMembership := make(json.RawMessage, len(liveEvent))
|
||||
copy(liveEventWithoutMembership, liveEvent)
|
||||
liveEventWithoutMembership, err := sjson.DeleteBytes(liveEventWithoutMembership, "unsigned.membership")
|
||||
liveEventWithoutMembership, err := sjson.DeleteBytes(liveEventWithoutMembership, "unsigned."+strings.ReplaceAll(fieldName, ".", `\.`))
|
||||
if err != nil {
|
||||
t.Fatalf("failed to delete unsigned.membership field")
|
||||
}
|
||||
@ -411,11 +421,11 @@ func TestDeleteMSC4115Field(t *testing.T) {
|
||||
stateEvent := testutils.NewStateEvent(t, "m.room.name", "", alice, map[string]interface{}{
|
||||
"name": "Room Name",
|
||||
}, testutils.WithUnsigned(map[string]interface{}{
|
||||
"membership": "join",
|
||||
fieldName: "join",
|
||||
}))
|
||||
stateEventWithoutMembership := make(json.RawMessage, len(stateEvent))
|
||||
copy(stateEventWithoutMembership, stateEvent)
|
||||
stateEventWithoutMembership, err = sjson.DeleteBytes(stateEventWithoutMembership, "unsigned.membership")
|
||||
stateEventWithoutMembership, err = sjson.DeleteBytes(stateEventWithoutMembership, "unsigned."+strings.ReplaceAll(fieldName, ".", `\.`))
|
||||
if err != nil {
|
||||
t.Fatalf("failed to delete unsigned.membership field")
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user