(t *testing.T, dbType test.DBType)
| 160 | } |
| 161 | |
| 162 | func testFederationAPIJoinThenKeyUpdate(t *testing.T, dbType test.DBType) { |
| 163 | base, close := testrig.CreateBaseDendrite(t, dbType) |
| 164 | base.Cfg.FederationAPI.PreferDirectFetch = true |
| 165 | defer close() |
| 166 | jsctx, _ := base.NATS.Prepare(base.ProcessContext, &base.Cfg.Global.JetStream) |
| 167 | defer jetstream.DeleteAllStreams(jsctx, &base.Cfg.Global.JetStream) |
| 168 | |
| 169 | serverA := gomatrixserverlib.ServerName("server.a") |
| 170 | serverAKeyID := gomatrixserverlib.KeyID("ed25519:servera") |
| 171 | serverAPrivKey := test.PrivateKeyA |
| 172 | creator := test.NewUser(t, test.WithSigningServer(serverA, serverAKeyID, serverAPrivKey)) |
| 173 | |
| 174 | myServer := base.Cfg.Global.ServerName |
| 175 | myServerKeyID := base.Cfg.Global.KeyID |
| 176 | myServerPrivKey := base.Cfg.Global.PrivateKey |
| 177 | joiningUser := test.NewUser(t, test.WithSigningServer(myServer, myServerKeyID, myServerPrivKey)) |
| 178 | fmt.Printf("creator: %v joining user: %v\n", creator.ID, joiningUser.ID) |
| 179 | room := test.NewRoom(t, creator) |
| 180 | |
| 181 | rsapi := &fedRoomserverAPI{ |
| 182 | inputRoomEvents: func(ctx context.Context, req *rsapi.InputRoomEventsRequest, res *rsapi.InputRoomEventsResponse) { |
| 183 | if req.Asynchronous { |
| 184 | t.Errorf("InputRoomEvents from PerformJoin MUST be synchronous") |
| 185 | } |
| 186 | }, |
| 187 | queryRoomsForUser: func(ctx context.Context, req *rsapi.QueryRoomsForUserRequest, res *rsapi.QueryRoomsForUserResponse) error { |
| 188 | if req.UserID == joiningUser.ID && req.WantMembership == "join" { |
| 189 | res.RoomIDs = []string{room.ID} |
| 190 | return nil |
| 191 | } |
| 192 | return fmt.Errorf("unexpected queryRoomsForUser: %+v", *req) |
| 193 | }, |
| 194 | } |
| 195 | fc := &fedClient{ |
| 196 | allowJoins: []*test.Room{room}, |
| 197 | t: t, |
| 198 | keys: map[gomatrixserverlib.ServerName]struct { |
| 199 | key ed25519.PrivateKey |
| 200 | keyID gomatrixserverlib.KeyID |
| 201 | }{ |
| 202 | serverA: { |
| 203 | key: serverAPrivKey, |
| 204 | keyID: serverAKeyID, |
| 205 | }, |
| 206 | myServer: { |
| 207 | key: myServerPrivKey, |
| 208 | keyID: myServerKeyID, |
| 209 | }, |
| 210 | }, |
| 211 | } |
| 212 | fsapi := federationapi.NewInternalAPI(base, fc, rsapi, base.Caches, nil, false) |
| 213 | |
| 214 | var resp api.PerformJoinResponse |
| 215 | fsapi.PerformJoin(context.Background(), &api.PerformJoinRequest{ |
| 216 | RoomID: room.ID, |
| 217 | UserID: joiningUser.ID, |
| 218 | ServerNames: []gomatrixserverlib.ServerName{serverA}, |
| 219 | }, &resp) |
no test coverage detected