Skip to content

Commit 723fd49

Browse files
committed
Fix parsing of "events_default" level in m.room.power_levels events
1 parent 6a49c18 commit 723fd49

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

eventauth_test.go

+59
Original file line numberDiff line numberDiff line change
@@ -1137,3 +1137,62 @@ func newMemberContent(
11371137
ThirdPartyInvite: thirdPartyInvite,
11381138
}
11391139
}
1140+
1141+
var negativePowerLevelTestRoom = &testAuthEvents{
1142+
CreateJSON: json.RawMessage(`{
1143+
"type": "m.room.create",
1144+
"state_key": "",
1145+
"sender": "@u1:a",
1146+
"room_id": "!r1:a",
1147+
"event_id": "$e1:a",
1148+
"content": {
1149+
"room_version": "10"
1150+
}
1151+
}`),
1152+
PowerLevelsJSON: json.RawMessage(`{
1153+
"type": "m.room.power_levels",
1154+
"state_key": "",
1155+
"sender": "@u1:a",
1156+
"room_id": "!r1:a",
1157+
"event_id": "$e3:a",
1158+
"content": {
1159+
"events_default": -9007199254740990,
1160+
"state_default": -9007199254740990,
1161+
"users_default": -9007199254740990,
1162+
"users": {
1163+
}
1164+
}
1165+
}`),
1166+
MemberJSON: map[string]json.RawMessage{
1167+
"@u1:a": json.RawMessage(`{
1168+
"type": "m.room.member",
1169+
"state_key": "@u1:a",
1170+
"sender": "@u1:a",
1171+
"room_id": "!r1:a",
1172+
"event_id": "$e2:a",
1173+
"content": {
1174+
"membership": "join"
1175+
}
1176+
}`),
1177+
},
1178+
}
1179+
1180+
func TestNegativePowerLevels(t *testing.T) {
1181+
// User should be able to demote the user default level
1182+
// below their own effective level.
1183+
eventShouldSucceed, err := NewEventFromTrustedJSON(RawJSON(`{
1184+
"type": "m.room.message",
1185+
"sender": "@u1:a",
1186+
"room_id": "!r1:a",
1187+
"event_id": "$e5:a",
1188+
"content": {
1189+
"stuff": "i am a message event"
1190+
}
1191+
}`), false, RoomVersionV1)
1192+
if err != nil {
1193+
t.Fatal(err)
1194+
}
1195+
if err = Allowed(eventShouldSucceed, negativePowerLevelTestRoom); err != nil {
1196+
t.Error("TestNegativePowerLevels should have succeeded but it didn't:", err)
1197+
}
1198+
}

eventcontent.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ func NewPowerLevelContentFromEvent(event *Event) (c PowerLevelContent, err error
431431
UsersDefaultLevel levelJSONValue `json:"users_default"`
432432
EventLevels map[string]levelJSONValue `json:"events"`
433433
StateDefaultLevel levelJSONValue `json:"state_default"`
434-
EventDefaultLevel levelJSONValue `json:"event_default"`
434+
EventDefaultLevel levelJSONValue `json:"events_default"`
435435
NotificationLevels map[string]levelJSONValue `json:"notifications"`
436436
}
437437
if err = json.Unmarshal(event.Content(), &content); err != nil {

0 commit comments

Comments
 (0)