Add RecentEvents tests

This commit is contained in:
Till Faelligen 2023-02-02 09:54:21 +01:00
parent 6e5ac7d3fe
commit b9f5164e64
No known key found for this signature in database
GPG key ID: ACCDC9606D472758
2 changed files with 59 additions and 0 deletions

View file

@ -926,3 +926,61 @@ func TestRoomSummary(t *testing.T) {
} }
}) })
} }
func TestRecentEvents(t *testing.T) {
alice := test.NewUser(t)
room1 := test.NewRoom(t, alice)
room2 := test.NewRoom(t, alice)
roomIDs := []string{room1.ID, room2.ID}
rooms := map[string]*test.Room{
room1.ID: room1,
room2.ID: room2,
}
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
filter := gomatrixserverlib.DefaultRoomEventFilter()
db, close, closeBase := MustCreateDatabase(t, dbType)
t.Cleanup(func() {
close()
closeBase()
})
MustWriteEvents(t, db, room1.Events())
MustWriteEvents(t, db, room2.Events())
transaction, err := db.NewDatabaseTransaction(ctx)
assert.NoError(t, err)
defer transaction.Rollback()
// get all recent events from 0 to 100 (we only created 5 events, so we should get 5 back)
roomEvs, err := transaction.RecentEvents(ctx, roomIDs, types.Range{From: 0, To: 100}, &filter, true, true)
assert.NoError(t, err)
assert.Equal(t, len(roomEvs), 2, "unexpected recent events response")
for _, recentEvents := range roomEvs {
assert.Equal(t, 5, len(recentEvents.Events), "unexpected recent events for room")
}
// update the filter to only return one event
filter.Limit = 1
roomEvs, err = transaction.RecentEvents(ctx, roomIDs, types.Range{From: 0, To: 100}, &filter, true, true)
assert.NoError(t, err)
assert.Equal(t, len(roomEvs), 2, "unexpected recent events response")
for roomID, recentEvents := range roomEvs {
origEvents := rooms[roomID].Events()
assert.Equal(t, true, recentEvents.Limited, "expected events to be limited")
assert.Equal(t, 1, len(recentEvents.Events), "unexpected recent events for room")
assert.Equal(t, origEvents[len(origEvents)-1].EventID(), recentEvents.Events[0].EventID())
}
// not chronologically ordered still returns the events in order (given ORDER BY id DESC)
roomEvs, err = transaction.RecentEvents(ctx, roomIDs, types.Range{From: 0, To: 100}, &filter, false, true)
assert.NoError(t, err)
assert.Equal(t, len(roomEvs), 2, "unexpected recent events response")
for roomID, recentEvents := range roomEvs {
origEvents := rooms[roomID].Events()
assert.Equal(t, true, recentEvents.Limited, "expected events to be limited")
assert.Equal(t, 1, len(recentEvents.Events), "unexpected recent events for room")
assert.Equal(t, origEvents[len(origEvents)-1].EventID(), recentEvents.Events[0].EventID())
}
})
}

View file

@ -449,6 +449,7 @@ func testHistoryVisibility(t *testing.T, dbType test.DBType) {
base.PublicClientAPIMux.ServeHTTP(w, test.NewRequest(t, "GET", fmt.Sprintf("/_matrix/client/v3/rooms/%s/messages", room.ID), test.WithQueryParams(map[string]string{ base.PublicClientAPIMux.ServeHTTP(w, test.NewRequest(t, "GET", fmt.Sprintf("/_matrix/client/v3/rooms/%s/messages", room.ID), test.WithQueryParams(map[string]string{
"access_token": bobDev.AccessToken, "access_token": bobDev.AccessToken,
"dir": "b", "dir": "b",
"filter": `{"lazy_load_members":true}`, // check that lazy loading doesn't break history visibility
}))) })))
if w.Code != 200 { if w.Code != 200 {
t.Logf("%s", w.Body.String()) t.Logf("%s", w.Body.String())