From fde0c3a2c7fa2f4b53eb4c6a84724312ea9f7609 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 22 Jul 2022 15:01:59 +0100 Subject: [PATCH] Persist the federated invite event so we have a NID, fix test --- roomserver/internal/perform/perform_invite.go | 10 ++++++++-- roomserver/storage/tables/membership_table_test.go | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/roomserver/internal/perform/perform_invite.go b/roomserver/internal/perform/perform_invite.go index fce529305..3e313e454 100644 --- a/roomserver/internal/perform/perform_invite.go +++ b/roomserver/internal/perform/perform_invite.go @@ -107,13 +107,19 @@ func (r *Inviter) PerformInvite( } updateMembershipTableManually := func() ([]api.OutputEvent, error) { + event := event.Unwrap() + var eventNID types.EventNID + eventNID, _, _, _, _, err = r.DB.StoreEvent(ctx, event, nil, false) + if err != nil { + return nil, fmt.Errorf("r.DB.StoreEvent: %w", err) + } var updater *shared.MembershipUpdater if updater, err = r.DB.MembershipUpdater(ctx, roomID, targetUserID, isTargetLocal, req.RoomVersion); err != nil { return nil, fmt.Errorf("r.DB.MembershipUpdater: %w", err) } outputUpdates, err = helpers.UpdateToInviteMembership(updater, &types.Event{ - EventNID: 0, - Event: event.Unwrap(), + EventNID: eventNID, + Event: event, }, outputUpdates, req.Event.RoomVersion) if err != nil { return nil, fmt.Errorf("updateToInviteMembership: %w", err) diff --git a/roomserver/storage/tables/membership_table_test.go b/roomserver/storage/tables/membership_table_test.go index 14e8ce50a..f789ef4ac 100644 --- a/roomserver/storage/tables/membership_table_test.go +++ b/roomserver/storage/tables/membership_table_test.go @@ -60,6 +60,9 @@ func TestMembershipTable(t *testing.T) { // This inserts a left user to the room err = tab.InsertMembership(ctx, nil, 1, stateKeyNID, true) assert.NoError(t, err) + // We must update the membership with a non-zero event NID or it will get filtered out in later queries + _, err = tab.UpdateMembership(ctx, nil, 1, stateKeyNID, userNIDs[0], tables.MembershipStateLeaveOrBan, 1, false) + assert.NoError(t, err) } // ... so this should be false