aboutsummaryrefslogtreecommitdiff
path: root/federationapi/routing/threepid.go
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2023-04-27 08:07:13 +0200
committerGitHub <noreply@github.com>2023-04-27 08:07:13 +0200
commit2475cf4b61747e76a524af6f71a4eb7e112812af (patch)
treec2446b71a0538fc340a7fb23e8a6c75a48b0a7dd /federationapi/routing/threepid.go
parentdd5e47a9a75f717381c27adebdee18aa80a1f256 (diff)
Add some roomserver UTs (#3067)
Adds tests for `QueryRestrictedJoinAllowed`, `IsServerAllowed` and `PerformRoomUpgrade`. Refactors the `QueryRoomVersionForRoom` method to accept a string and return a `gmsl.RoomVersion` instead of req/resp structs. Adds some more caching for `GetStateEvent` This should also fix #2912 by ignoring state events belonging to other users.
Diffstat (limited to 'federationapi/routing/threepid.go')
-rw-r--r--federationapi/routing/threepid.go26
1 files changed, 9 insertions, 17 deletions
diff --git a/federationapi/routing/threepid.go b/federationapi/routing/threepid.go
index aaee939e..e075bab0 100644
--- a/federationapi/routing/threepid.go
+++ b/federationapi/routing/threepid.go
@@ -69,9 +69,8 @@ func CreateInvitesFrom3PIDInvites(
evs := []*gomatrixserverlib.HeaderedEvent{}
for _, inv := range body.Invites {
- verReq := api.QueryRoomVersionForRoomRequest{RoomID: inv.RoomID}
- verRes := api.QueryRoomVersionForRoomResponse{}
- if err := rsAPI.QueryRoomVersionForRoom(req.Context(), &verReq, &verRes); err != nil {
+ roomVersion, err := rsAPI.QueryRoomVersionForRoom(req.Context(), inv.RoomID)
+ if err != nil {
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.UnsupportedRoomVersion(err.Error()),
@@ -86,7 +85,7 @@ func CreateInvitesFrom3PIDInvites(
return jsonerror.InternalServerError()
}
if event != nil {
- evs = append(evs, event.Headered(verRes.RoomVersion))
+ evs = append(evs, event.Headered(roomVersion))
}
}
@@ -162,9 +161,8 @@ func ExchangeThirdPartyInvite(
}
}
- verReq := api.QueryRoomVersionForRoomRequest{RoomID: roomID}
- verRes := api.QueryRoomVersionForRoomResponse{}
- if err = rsAPI.QueryRoomVersionForRoom(httpReq.Context(), &verReq, &verRes); err != nil {
+ roomVersion, err := rsAPI.QueryRoomVersionForRoom(httpReq.Context(), roomID)
+ if err != nil {
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.UnsupportedRoomVersion(err.Error()),
@@ -185,7 +183,7 @@ func ExchangeThirdPartyInvite(
// Ask the requesting server to sign the newly created event so we know it
// acknowledged it
- inviteReq, err := fclient.NewInviteV2Request(event.Headered(verRes.RoomVersion), nil)
+ inviteReq, err := fclient.NewInviteV2Request(event.Headered(roomVersion), nil)
if err != nil {
util.GetLogger(httpReq.Context()).WithError(err).Error("failed to make invite v2 request")
return jsonerror.InternalServerError()
@@ -195,9 +193,9 @@ func ExchangeThirdPartyInvite(
util.GetLogger(httpReq.Context()).WithError(err).Error("federation.SendInvite failed")
return jsonerror.InternalServerError()
}
- verImpl, err := gomatrixserverlib.GetRoomVersion(verRes.RoomVersion)
+ verImpl, err := gomatrixserverlib.GetRoomVersion(roomVersion)
if err != nil {
- util.GetLogger(httpReq.Context()).WithError(err).Errorf("unknown room version: %s", verRes.RoomVersion)
+ util.GetLogger(httpReq.Context()).WithError(err).Errorf("unknown room version: %s", roomVersion)
return jsonerror.InternalServerError()
}
inviteEvent, err := verImpl.NewEventFromUntrustedJSON(signedEvent.Event)
@@ -211,7 +209,7 @@ func ExchangeThirdPartyInvite(
httpReq.Context(), rsAPI,
api.KindNew,
[]*gomatrixserverlib.HeaderedEvent{
- inviteEvent.Headered(verRes.RoomVersion),
+ inviteEvent.Headered(roomVersion),
},
request.Destination(),
request.Origin(),
@@ -239,12 +237,6 @@ func createInviteFrom3PIDInvite(
inv invite, federation fclient.FederationClient,
userAPI userapi.FederationUserAPI,
) (*gomatrixserverlib.Event, error) {
- verReq := api.QueryRoomVersionForRoomRequest{RoomID: inv.RoomID}
- verRes := api.QueryRoomVersionForRoomResponse{}
- if err := rsAPI.QueryRoomVersionForRoom(ctx, &verReq, &verRes); err != nil {
- return nil, err
- }
-
_, server, err := gomatrixserverlib.SplitID('@', inv.MXID)
if err != nil {
return nil, err