Skip to content

Commit 10d9f2e

Browse files
authored
Add ServerRoom.MustHaveMembershipForUser (#229)
* Add ServerRoom.MustHaveMembershipForUser As per https://github.com/matrix-org/complement/pull/131/files#r658674594 * Docstring
1 parent eb57e1e commit 10d9f2e

File tree

2 files changed

+19
-24
lines changed

2 files changed

+19
-24
lines changed

internal/federation/server_room.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package federation
33
import (
44
"encoding/json"
55
"fmt"
6+
"testing"
67

78
"github.com/matrix-org/gomatrixserverlib"
89

@@ -112,6 +113,22 @@ func (r *ServerRoom) AuthChain() (chain []*gomatrixserverlib.Event) {
112113
return
113114
}
114115

116+
// Check that the user currently has the membership provided in this room. Fails the test if not.
117+
func (r *ServerRoom) MustHaveMembershipForUser(t *testing.T, userID, wantMembership string) {
118+
t.Helper()
119+
state := r.CurrentState("m.room.member", userID)
120+
if state == nil {
121+
t.Fatalf("no membership state for %s", userID)
122+
}
123+
m, err := state.Membership()
124+
if err != nil {
125+
t.Fatalf("m.room.member event exists for %s but cannot read membership field: %s", userID, err)
126+
}
127+
if m != wantMembership {
128+
t.Fatalf("incorrect membership state for %s: got %s, want %s", userID, m, wantMembership)
129+
}
130+
}
131+
115132
func initialPowerLevelsContent(roomCreator string) (c gomatrixserverlib.PowerLevelContent) {
116133
c.Defaults()
117134
c.Events = map[string]int64{

tests/federation_room_invite_test.go

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package tests
22

33
import (
4-
"fmt"
54
"testing"
65
"time"
76

@@ -52,32 +51,11 @@ func TestFederationRejectInvite(t *testing.T) {
5251
waiter = NewWaiter()
5352
alice.InviteRoom(t, roomID, charlie.UserID)
5453
waiter.Wait(t, 5*time.Second)
55-
if err := checkMembershipForUser(room, charlie.UserID, "invite"); err != nil {
56-
t.Errorf("Membership state for charlie after invite: %v", err)
57-
}
54+
room.MustHaveMembershipForUser(t, charlie.UserID, "invite")
5855

5956
// Charlie rejects the invite; Delia should see the rejection.
6057
waiter = NewWaiter()
6158
charlie.LeaveRoom(t, roomID)
6259
waiter.Wait(t, 5*time.Second)
63-
if err := checkMembershipForUser(room, charlie.UserID, "leave"); err != nil {
64-
t.Errorf("Membership state for charlie after reject: %v", err)
65-
}
66-
}
67-
68-
func checkMembershipForUser(room *federation.ServerRoom, userID, wantMembership string) (err error) {
69-
state := room.CurrentState("m.room.member", userID)
70-
if state == nil {
71-
err = fmt.Errorf("no membership state for %s", userID)
72-
return
73-
}
74-
m, err := state.Membership()
75-
if err != nil {
76-
return
77-
}
78-
if m != wantMembership {
79-
err = fmt.Errorf("incorrect membership state: got %s, want %s", m, wantMembership)
80-
return
81-
}
82-
return
60+
room.MustHaveMembershipForUser(t, charlie.UserID, "leave")
8361
}

0 commit comments

Comments
 (0)