1GET /register yields a set of flows 2POST /register can create a user 3POST /register downcases capitals in usernames 4POST /register rejects registration of usernames with '!' 5POST /register rejects registration of usernames with '"' 6POST /register rejects registration of usernames with ':' 7POST /register rejects registration of usernames with '?' 8POST /register rejects registration of usernames with '\' 9POST /register rejects registration of usernames with '@' 10POST /register rejects registration of usernames with '[' 11POST /register rejects registration of usernames with ']' 12POST /register rejects registration of usernames with '{' 13POST /register rejects registration of usernames with '|' 14POST /register rejects registration of usernames with '}' 15POST /register rejects registration of usernames with '£' 16POST /register rejects registration of usernames with 'é' 17POST /register rejects registration of usernames with '\n' 18POST /register rejects registration of usernames with ''' 19POST /register allows registration of usernames with 'q' 20POST /register allows registration of usernames with '3' 21POST /register allows registration of usernames with '.' 22POST /register allows registration of usernames with '_' 23POST /register allows registration of usernames with '=' 24POST /register allows registration of usernames with '-' 25POST /register allows registration of usernames with '/' 26GET /login yields a set of flows 27POST /login can log in as a user 28POST /login returns the same device_id as that in the request 29POST /login can log in as a user with just the local part of the id 30POST /login as non-existing user is rejected 31POST /login wrong password is rejected 32GET /events initially 33GET /initialSync initially 34Version responds 200 OK with valid structure 35PUT /profile/:user_id/displayname sets my name 36GET /profile/:user_id/displayname publicly accessible 37PUT /profile/:user_id/avatar_url sets my avatar 38GET /profile/:user_id/avatar_url publicly accessible 39GET /device/{deviceId} gives a 404 for unknown devices 40PUT /device/{deviceId} gives a 404 for unknown devices 41GET /device/{deviceId} 42GET /devices 43PUT /device/{deviceId} updates device fields 44DELETE /device/{deviceId} 45DELETE /device/{deviceId} requires UI auth user to match device owner 46DELETE /device/{deviceId} with no body gives a 401 47POST /createRoom makes a public room 48POST /createRoom makes a private room 49POST /createRoom makes a private room with invites 50POST /createRoom makes a room with a name 51POST /createRoom makes a room with a topic 52Can /sync newly created room 53GET /rooms/:room_id/state/m.room.member/:user_id fetches my membership 54GET /rooms/:room_id/state/m.room.power_levels fetches powerlevels 55POST /join/:room_alias can join a room 56POST /join/:room_id can join a room 57POST /join/:room_id can join a room with custom content 58POST /join/:room_alias can join a room with custom content 59POST /rooms/:room_id/join can join a room 60POST /rooms/:room_id/leave can leave a room 61POST /rooms/:room_id/invite can send an invite 62POST /rooms/:room_id/ban can ban a user 63POST /rooms/:room_id/send/:event_type sends a message 64PUT /rooms/:room_id/send/:event_type/:txn_id sends a message 65PUT /rooms/:room_id/send/:event_type/:txn_id deduplicates the same txn id 66GET /rooms/:room_id/state/m.room.power_levels can fetch levels 67PUT /rooms/:room_id/state/m.room.power_levels can set levels 68PUT power_levels should not explode if the old power levels were empty 69GET /rooms/:room_id/state/m.room.member/:user_id?format=event fetches my membership event 70GET /rooms/:room_id/joined_members fetches my membership 71Both GET and PUT work 72POST /rooms/:room_id/read_markers can create read marker 73User signups are forbidden from starting with '_' 74Request to logout with invalid an access token is rejected 75Request to logout without an access token is rejected 76Room creation reports m.room.create to myself 77Room creation reports m.room.member to myself 78Outbound federation rejects send_join responses with no m.room.create event 79Outbound federation rejects m.room.create events with an unknown room version 80Invited user can see room metadata 81# Blacklisted because these tests call /r0/events which we don't implement 82# New room members see their own join event 83# Existing members see new members' join events 84setting 'm.room.power_levels' respects room powerlevel 85Unprivileged users can set m.room.topic if it only needs level 0 86Users cannot set ban powerlevel higher than their own 87Users cannot set kick powerlevel higher than their own 88Users cannot set redact powerlevel higher than their own 89Can get rooms/{roomId}/members for a departed room (SPEC-216) 903pid invite join with wrong but valid signature are rejected 913pid invite join valid signature but revoked keys are rejected 923pid invite join valid signature but unreachable ID server are rejected 93Room members can join a room with an overridden displayname 94Real non-joined user cannot call /events on shared room 95Real non-joined user cannot call /events on invited room 96Real non-joined user cannot call /events on joined room 97Real non-joined user cannot call /events on default room 98Real non-joined users can get state for world_readable rooms 99Real non-joined users can get individual state for world_readable rooms 100#Real non-joined users can get individual state for world_readable rooms after leaving 101Real non-joined users cannot send messages to guest_access rooms if not joined 102Can't forget room you're still in 103Can get rooms/{roomId}/members 104Can create filter 105Can download filter 106Lazy loading parameters in the filter are strictly boolean 107Can sync 108Can sync a joined room 109Newly joined room is included in an incremental sync 110User is offline if they set_presence=offline in their sync 111Changes to state are included in an incremental sync 112A change to displayname should appear in incremental /sync 113Current state appears in timeline in private history 114Current state appears in timeline in private history with many messages before 115Rooms a user is invited to appear in an initial sync 116Rooms a user is invited to appear in an incremental sync 117Sync can be polled for updates 118Sync is woken up for leaves 119Newly left rooms appear in the leave section of incremental sync 120Rooms can be created with an initial invite list (SYN-205) 121We should see our own leave event, even if history_visibility is restricted (SYN-662) 122We should see our own leave event when rejecting an invite, even if history_visibility is restricted (riot-web/3462) 123Newly left rooms appear in the leave section of gapped sync 124Previously left rooms don't appear in the leave section of sync 125Left rooms appear in the leave section of full state sync 126Newly banned rooms appear in the leave section of incremental sync 127Newly banned rooms appear in the leave section of incremental sync 128local user can join room with version 1 129User can invite local user to room with version 1 130Can upload device keys 131Should reject keys claiming to belong to a different user 132Can query device keys using POST 133Can query remote device keys using POST 134Can query specific device keys using POST 135query for user with no keys returns empty key dict 136Can claim one time key using POST 137Can claim remote one time key using POST 138Local device key changes appear in v2 /sync 139New users appear in /keys/changes 140Local delete device changes appear in v2 /sync 141Local new device changes appear in v2 /sync 142Local update device changes appear in v2 /sync 143Get left notifs for other users in sync and /keys/changes when user leaves 144Local device key changes get to remote servers 145Server correctly handles incoming m.device_list_update 146If remote user leaves room, changes device and rejoins we see update in sync 147If remote user leaves room, changes device and rejoins we see update in /keys/changes 148If remote user leaves room we no longer receive device updates 149If a device list update goes missing, the server resyncs on the next one 150Server correctly resyncs when client query keys and there is no remote cache 151Server correctly resyncs when server leaves and rejoins a room 152Device list doesn't change if remote server is down 153Can add account data 154Can add account data to room 155Can get account data without syncing 156Can get room account data without syncing 157#Latest account data appears in v2 /sync 158New account data appears in incremental v2 /sync 159Checking local federation server 160Inbound federation can query profile data 161Outbound federation can send room-join requests 162Outbound federation can send events 163# SyTest currently only implements the v1 endpoints for /send_join and /send_leave, 164# whereas Dendrite only supports the v2 endpoints for those, so let's ignore this 165# test for now. 166#Inbound federation can backfill events 167# SyTest currently only implements the v1 endpoints for /send_join and /send_leave, 168# whereas Dendrite only supports the v2 endpoints for those, so let's ignore this 169# test for now. 170#Backfill checks the events requested belong to the room 171Can upload without a file name 172Can download without a file name locally 173Can upload with ASCII file name 174Can send image in room message 175AS cannot create users outside its own namespace 176Regular users cannot register within the AS namespace 177AS can't set displayname for random users 178AS user (not ghost) can join room without registering, with user_id query param 179Changing the actions of an unknown default rule fails with 404 180Changing the actions of an unknown rule fails with 404 181Enabling an unknown default rule fails with 404 182Trying to get push rules with unknown rule_id fails with 404 183Events come down the correct room 184# SyTest currently only implements the v1 endpoints for /send_join and /send_leave, 185# whereas Dendrite only supports the v2 endpoints for those, so let's ignore this 186# test for now. 187#Inbound federation can receive v1 room-join requests 188Typing events appear in initial sync 189Typing events appear in incremental sync 190Typing events appear in gapped sync 191Inbound federation of state requires event_id as a mandatory paramater 192Inbound federation of state_ids requires event_id as a mandatory paramater 193POST /register returns the same device_id as that in the request 194POST /createRoom with creation content 195User can create and send/receive messages in a room with version 1 196POST /createRoom ignores attempts to set the room version via creation_content 197Inbound federation rejects remote attempts to join local users to rooms 198Inbound federation rejects remote attempts to kick local users to rooms 199Full state sync includes joined rooms 200A message sent after an initial sync appears in the timeline of an incremental sync. 201Can add tag 202Can remove tag 203Can list tags for a room 204Tags appear in an initial v2 /sync 205Newly updated tags appear in an incremental v2 /sync 206Deleted tags appear in an incremental v2 /sync 207/event/ on non world readable room does not work 208Outbound federation can query profile data 209/event/ on joined room works 210/event/ does not allow access to events before the user joined 211Federation key API allows unsigned requests for keys 212GET /publicRooms lists rooms 213GET /publicRooms includes avatar URLs 214Can paginate public room list 215GET /publicRooms lists newly-created room 216Name/topic keys are correct 217GET /directory/room/:room_alias yields room ID 218PUT /directory/room/:room_alias creates alias 219Room aliases can contain Unicode 220Creators can delete alias 221Regular users cannot create room aliases within the AS namespace 222Deleting a non-existent alias should return a 404 223Users can't delete other's aliases 224Outbound federation can query room alias directory 225Can deactivate account 226Can't deactivate account with wrong password 227After deactivating account, can't log in with password 228After deactivating account, can't log in with an email 229Remote room alias queries can handle Unicode 230Newly joined room is included in an incremental sync after invite 231Inbound /v1/make_join rejects remote attempts to join local users to rooms 232Local room members see posted message events 233Fetching eventstream a second time doesn't yield the message again 234Local non-members don't see posted message events 235Remote room members also see posted message events 236Lazy loading parameters in the filter are strictly boolean 237remote user can join room with version 1 238Inbound federation can query room alias directory 239Outbound federation can query v2 /send_join 240Inbound federation can receive v2 /send_join 241Message history can be paginated 242Getting messages going forward is limited for a departed room (SPEC-216) 243Backfill works correctly with history visibility set to joined 244Guest user cannot call /events globally 245Guest users can join guest_access rooms 246Guest user can set display names 247Guest user cannot upgrade other users 248Guest non-joined user cannot call /events on shared room 249Guest non-joined user cannot call /events on invited room 250Guest non-joined user cannot call /events on joined room 251Guest non-joined user cannot call /events on default room 252Guest non-joined users can get state for world_readable rooms 253Guest non-joined users can get individual state for world_readable rooms 254Guest non-joined users cannot room initalSync for non-world_readable rooms 255Guest non-joined users can get individual state for world_readable rooms after leaving 256Guest non-joined users cannot send messages to guest_access rooms if not joined 257Real non-joined users cannot room initalSync for non-world_readable rooms 258Push rules come down in an initial /sync 259Regular users can add and delete aliases in the default room configuration 260GET /r0/capabilities is not public 261GET /joined_rooms lists newly-created room 262/joined_rooms returns only joined rooms 263Message history can be paginated over federation 264GET /rooms/:room_id/messages returns a message 265Remote user can backfill in a room with version 1 266POST /createRoom creates a room with the given version 267POST /createRoom rejects attempts to create rooms with numeric versions 268POST /createRoom rejects attempts to create rooms with unknown versions 269Regular users can add and delete aliases when m.room.aliases is restricted 270User can create and send/receive messages in a room with version 2 271local user can join room with version 2 272remote user can join room with version 2 273User can invite local user to room with version 2 274Remote user can backfill in a room with version 2 275Inbound federation accepts attempts to join v2 rooms from servers with support 276Outbound federation can send invites via v2 API 277Outbound federation can send invites via v1 API 278Inbound federation can receive invites via v1 API 279Inbound federation can receive invites via v2 API 280User can create and send/receive messages in a room with version 3 281local user can join room with version 3 282Remote user can backfill in a room with version 3 283User can create and send/receive messages in a room with version 4 284local user can join room with version 4 285remote user can join room with version 3 286remote user can join room with version 4 287Remote user can backfill in a room with version 4 288# We don't support ignores yet, so ignore this for now - ha ha. 289# Ignore invite in incremental sync 290Outbound federation can send invites via v2 API 291User can invite local user to room with version 3 292User can invite local user to room with version 4 293A pair of servers can establish a join in a v2 room 294Can logout all devices 295State from remote users is included in the timeline in an incremental sync 296User can invite remote user to room with version 1 297User can invite remote user to room with version 2 298User can invite remote user to room with version 3 299User can invite remote user to room with version 4 300User can create and send/receive messages in a room with version 5 301local user can join room with version 5 302User can invite local user to room with version 5 303remote user can join room with version 5 304User can invite remote user to room with version 5 305Remote user can backfill in a room with version 5 306Inbound federation can receive v1 /send_join 307Inbound federation can get state for a room 308Inbound federation of state requires event_id as a mandatory paramater 309Inbound federation can get state_ids for a room 310Inbound federation of state_ids requires event_id as a mandatory paramater 311Federation rejects inbound events where the prev_events cannot be found 312Alternative server names do not cause a routing loop 313Events whose auth_events are in the wrong room do not mess up the room state 314Inbound federation can return events 315Inbound federation can return missing events for world_readable visibility 316Inbound federation can return missing events for invite visibility 317Inbound federation can get public room list 318POST /rooms/:room_id/redact/:event_id as power user redacts message 319POST /rooms/:room_id/redact/:event_id as original message sender redacts message 320POST /rooms/:room_id/redact/:event_id as random user does not redact message 321POST /redact disallows redaction of event in different room 322An event which redacts itself should be ignored 323A pair of events which redact each other should be ignored 324Redaction of a redaction redacts the redaction reason 325An event which redacts an event in a different room should be ignored 326Can receive redactions from regular users over federation in room version 1 327Can receive redactions from regular users over federation in room version 2 328Can receive redactions from regular users over federation in room version 3 329Can receive redactions from regular users over federation in room version 4 330Can receive redactions from regular users over federation in room version 5 331Can receive redactions from regular users over federation in room version 6 332Outbound federation can backfill events 333Inbound federation can backfill events 334Backfill checks the events requested belong to the room 335Backfilled events whose prev_events are in a different room do not allow cross-room back-pagination 336Outbound federation can request missing events 337New room members see their own join event 338Existing members see new members' join events 339Inbound federation can receive events 340Inbound federation can receive redacted events 341Can logout current device 342Can send a message directly to a device using PUT /sendToDevice 343Can recv a device message using /sync 344Can recv device messages until they are acknowledged 345Device messages with the same txn_id are deduplicated 346Device messages wake up /sync 347Can recv device messages over federation 348Device messages over federation wake up /sync 349Can send messages with a wildcard device id 350Can send messages with a wildcard device id to two devices 351Wildcard device messages wake up /sync 352Wildcard device messages over federation wake up /sync 353Can send a to-device message to two users which both receive it using /sync 354User can create and send/receive messages in a room with version 6 355local user can join room with version 6 356User can invite local user to room with version 6 357remote user can join room with version 6 358User can invite remote user to room with version 6 359Remote user can backfill in a room with version 6 360Inbound: send_join rejects invalid JSON for room version 6 361Outbound federation rejects backfill containing invalid JSON for events in room version 6 362Invalid JSON integers 363Invalid JSON special values 364Invalid JSON floats 365Outbound federation will ignore a missing event with bad JSON for room version 6 366Server correctly handles transactions that break edu limits 367Server rejects invalid JSON in a version 6 room 368Can download without a file name over federation 369POST /media/r0/upload can create an upload 370GET /media/r0/download can fetch the value again 371Remote users can join room by alias 372Alias creators can delete alias with no ops 373Alias creators can delete canonical alias with no ops 374Room members can override their displayname on a room-specific basis 375displayname updates affect room member events 376avatar_url updates affect room member events 377Real non-joined users can get individual state for world_readable rooms after leaving 378Can upload with Unicode file name 379POSTed media can be thumbnailed 380Remote media can be thumbnailed 381Can download with Unicode file name locally 382Can download file 'ascii' 383Can download file 'name with spaces' 384Can download file 'name;with;semicolons' 385Can download specifying a different ASCII file name 386Can download with Unicode file name over federation 387Can download specifying a different Unicode file name 388Inbound /v1/send_join rejects joins from other servers 389Outbound federation can query v1 /send_join 390Inbound /v1/send_join rejects incorrectly-signed joins 391POST /rooms/:room_id/state/m.room.name sets name 392GET /rooms/:room_id/state/m.room.name gets name 393POST /rooms/:room_id/state/m.room.topic sets topic 394GET /rooms/:room_id/state/m.room.topic gets topic 395GET /rooms/:room_id/state fetches entire room state 396Setting room topic reports m.room.topic to myself 397setting 'm.room.name' respects room powerlevel 398Syncing a new room with a large timeline limit isn't limited 399Getting state checks the events requested belong to the room 400Getting state IDs checks the events requested belong to the room 401Can invite users to invite-only rooms 402Uninvited users cannot join the room 403Users cannot invite themselves to a room 404Users cannot invite a user that is already in the room 405Invited user can reject invite 406PUT /rooms/:room_id/typing/:user_id sets typing notification 407Typing notification sent to local room members 408Typing notifications also sent to remote room members 409Typing can be explicitly stopped 410Banned user is kicked and may not rejoin until unbanned 411Inbound federation rejects attempts to join v1 rooms from servers without v1 support 412Inbound federation rejects attempts to join v2 rooms from servers lacking version support 413Inbound federation rejects attempts to join v2 rooms from servers only supporting v1 414Outbound federation passes make_join failures through to the client 415Outbound federation correctly handles unsupported room versions 416Remote users may not join unfederated rooms 417Non-numeric ports in server names are rejected 418Invited user can reject invite over federation 419Invited user can reject invite over federation for empty room 420Invited user can reject invite over federation several times 421Can reject invites over federation for rooms with version 1 422Can reject invites over federation for rooms with version 2 423Can reject invites over federation for rooms with version 3 424Can reject invites over federation for rooms with version 4 425Can reject invites over federation for rooms with version 5 426Can reject invites over federation for rooms with version 6 427Event size limits 428Can sync a room with a single message 429Can sync a room with a message with a transaction id 430A full_state incremental update returns only recent timeline 431A prev_batch token can be used in the v1 messages API 432We don't send redundant membership state across incremental syncs by default 433Typing notifications don't leak 434Users cannot kick users from a room they are not in 435User appears in user directory 436User directory correctly update on display name change 437User in shared private room does appear in user directory 438User in dir while user still shares private rooms 439Can get 'm.room.name' state for a departed room (SPEC-216) 440Banned servers cannot send events 441Banned servers cannot /make_join 442Banned servers cannot /send_join 443Banned servers cannot /make_leave 444Banned servers cannot /send_leave 445Banned servers cannot /invite 446Banned servers cannot get room state 447Banned servers cannot /event_auth 448Banned servers cannot get missing events 449Banned servers cannot get room state ids 450Banned servers cannot backfill 451Inbound /v1/send_leave rejects leaves from other servers 452Guest users can accept invites to private rooms over federation 453AS user (not ghost) can join room without registering 454Can search public room list 455Can get remote public room list 456Asking for a remote rooms list, but supplying the local server's name, returns the local rooms list 457After changing password, can't log in with old password 458After changing password, can log in with new password 459After changing password, existing session still works 460After changing password, different sessions can optionally be kept 461After changing password, a different session no longer works by default 462Read markers appear in incremental v2 /sync 463Read markers appear in initial v2 /sync 464Read markers can be updated 465Local users can peek into world_readable rooms by room ID 466We can't peek into rooms with shared history_visibility 467We can't peek into rooms with invited history_visibility 468We can't peek into rooms with joined history_visibility 469Local users can peek by room alias 470Peeked rooms only turn up in the sync for the device who peeked them 471Room state at a rejected message event is the same as its predecessor 472Room state at a rejected state event is the same as its predecessor 473Inbound federation correctly soft fails events 474Inbound federation accepts a second soft-failed event 475Federation key API can act as a notary server via a POST request 476Federation key API can act as a notary server via a GET request 477Inbound /make_join rejects attempts to join rooms where all users have left 478Inbound federation rejects invites which include invalid JSON for room version 6 479Inbound federation rejects invite rejections which include invalid JSON for room version 6 480GET /capabilities is present and well formed for registered user 481m.room.history_visibility == "joined" allows/forbids appropriately for Guest users 482m.room.history_visibility == "joined" allows/forbids appropriately for Real users 483POST rejects invalid utf-8 in JSON 484Users cannot kick users who have already left a room 485Event with an invalid signature in the send_join response should not cause room join to fail 486Inbound federation rejects typing notifications from wrong remote 487POST /rooms/:room_id/receipt can create receipts 488Receipts must be m.read 489Read receipts appear in initial v2 /sync 490New read receipts appear in incremental v2 /sync 491Outbound federation sends receipts 492Inbound federation rejects receipts from wrong remote 493Should not be able to take over the room by pretending there is no PL event 494Can get rooms/{roomId}/state for a departed room (SPEC-216) 495Users cannot set notifications powerlevel higher than their own 496Forgetting room does not show up in v2 /sync 497Can forget room you've been kicked from 498/whois 499/joined_members return joined members 500A next_batch token can be used in the v1 messages API 501Users receive device_list updates for their own devices 502m.room.history_visibility == "world_readable" allows/forbids appropriately for Guest users 503m.room.history_visibility == "world_readable" allows/forbids appropriately for Real users 504State is included in the timeline in the initial sync 505State from remote users is included in the state in the initial sync 506Changes to state are included in an gapped incremental sync 507A full_state incremental update returns all state 508Can pass a JSON filter as a query parameter 509Local room members can get room messages 510Remote room members can get room messages 511Guest users can send messages to guest_access rooms if joined 512AS can create a user 513AS can create a user with an underscore 514AS can create a user with inhibit_login 515AS can set avatar for ghosted users 516AS can set displayname for ghosted users 517Ghost user must register before joining room 518Inviting an AS-hosted user asks the AS server 519Can generate a openid access_token that can be exchanged for information about a user 520Invalid openid access tokens are rejected 521Requests to userinfo without access tokens are rejected 522'ban' event respects room powerlevel 523Non-present room members cannot ban others 524POST /_synapse/admin/v1/register with shared secret 525POST /_synapse/admin/v1/register admin with shared secret 526POST /_synapse/admin/v1/register with shared secret downcases capitals 527POST /_synapse/admin/v1/register with shared secret disallows symbols 528Membership event with an invalid displayname in the send_join response should not cause room join to fail 529Inbound federation rejects incorrectly-signed invite rejections 530Inbound federation can receive invite rejections 531Inbound federation can receive invite and reject when remote replies with a 403 532Inbound federation can receive invite and reject when remote replies with a 500 533Inbound federation can receive invite and reject when remote is unreachable 534Remote servers cannot set power levels in rooms without existing powerlevels 535Remote servers should reject attempts by non-creators to set the power levels 536Federation handles empty auth_events in state_ids sanely 537Key notary server should return an expired key if it can't find any others 538Key notary server must not overwrite a valid key with a spurious result from the origin server 539GET /rooms/:room_id/aliases lists aliases 540Only room members can list aliases of a room 541Users with sufficient power-level can delete other's aliases 542Can create backup version 543Can update backup version 544Responds correctly when backup is empty 545Can backup keys 546Can update keys with better versions 547Will not update keys with worse versions 548Will not back up to an old backup version 549Can create more than 10 backup versions 550Can delete backup 551Deleted & recreated backups are empty 552Can upload self-signing keys 553Fails to upload self-signing keys with no auth 554Fails to upload self-signing key without master key 555can fetch self-signing keys over federation 556Changing master key notifies local users 557Changing user-signing key notifies local users 558Inbound federation correctly handles soft failed events as extremities 559User can create and send/receive messages in a room with version 7 560local user can join room with version 7 561User can invite local user to room with version 7 562remote user can join room with version 7 563User can invite remote user to room with version 7 564Remote user can backfill in a room with version 7 565Can reject invites over federation for rooms with version 7 566Can receive redactions from regular users over federation in room version 7 567Federation publicRoom Name/topic keys are correct 568Remote invited user can see room metadata 569Can re-join room if re-invited 570A prev_batch token from incremental sync can be used in the v1 messages API 571Inbound federation rejects invites which are not signed by the sender 572Invited user can reject invite over federation several times 573Test that we can be reinvited to a room we created 574User can create and send/receive messages in a room with version 8 575local user can join room with version 8 576User can invite local user to room with version 8 577remote user can join room with version 8 578User can invite remote user to room with version 8 579Remote user can backfill in a room with version 8 580Can reject invites over federation for rooms with version 8 581Can receive redactions from regular users over federation in room version 8 582User can create and send/receive messages in a room with version 9 583local user can join room with version 9 584User can invite local user to room with version 9 585remote user can join room with version 9 586User can invite remote user to room with version 9 587Remote user can backfill in a room with version 9 588Can reject invites over federation for rooms with version 9 589Can receive redactions from regular users over federation in room version 9 590