2019-05-24 16:00:03 +02:00
|
|
|
GET /register yields a set of flows
|
|
|
|
POST /register can create a user
|
|
|
|
POST /register downcases capitals in usernames
|
2019-06-21 17:49:37 +02:00
|
|
|
POST /register rejects registration of usernames with '!'
|
|
|
|
POST /register rejects registration of usernames with '"'
|
|
|
|
POST /register rejects registration of usernames with ':'
|
|
|
|
POST /register rejects registration of usernames with '?'
|
|
|
|
POST /register rejects registration of usernames with '\'
|
|
|
|
POST /register rejects registration of usernames with '@'
|
|
|
|
POST /register rejects registration of usernames with '['
|
|
|
|
POST /register rejects registration of usernames with ']'
|
|
|
|
POST /register rejects registration of usernames with '{'
|
|
|
|
POST /register rejects registration of usernames with '|'
|
|
|
|
POST /register rejects registration of usernames with '}'
|
|
|
|
POST /register rejects registration of usernames with '£'
|
|
|
|
POST /register rejects registration of usernames with 'é'
|
|
|
|
POST /register rejects registration of usernames with '\n'
|
|
|
|
POST /register rejects registration of usernames with '''
|
2020-11-18 23:56:06 +01:00
|
|
|
POST /register allows registration of usernames with 'q'
|
|
|
|
POST /register allows registration of usernames with '3'
|
|
|
|
POST /register allows registration of usernames with '.'
|
|
|
|
POST /register allows registration of usernames with '_'
|
|
|
|
POST /register allows registration of usernames with '='
|
|
|
|
POST /register allows registration of usernames with '-'
|
|
|
|
POST /register allows registration of usernames with '/'
|
2019-06-21 17:49:37 +02:00
|
|
|
GET /login yields a set of flows
|
2020-04-20 15:19:25 +02:00
|
|
|
POST /login can log in as a user
|
|
|
|
POST /login returns the same device_id as that in the request
|
|
|
|
POST /login can log in as a user with just the local part of the id
|
|
|
|
POST /login as non-existing user is rejected
|
|
|
|
POST /login wrong password is rejected
|
2019-06-21 17:49:37 +02:00
|
|
|
GET /events initially
|
|
|
|
GET /initialSync initially
|
|
|
|
Version responds 200 OK with valid structure
|
|
|
|
PUT /profile/:user_id/displayname sets my name
|
|
|
|
GET /profile/:user_id/displayname publicly accessible
|
|
|
|
PUT /profile/:user_id/avatar_url sets my avatar
|
|
|
|
GET /profile/:user_id/avatar_url publicly accessible
|
|
|
|
GET /device/{deviceId} gives a 404 for unknown devices
|
|
|
|
PUT /device/{deviceId} gives a 404 for unknown devices
|
2020-07-10 01:39:44 +02:00
|
|
|
GET /device/{deviceId}
|
|
|
|
GET /devices
|
|
|
|
PUT /device/{deviceId} updates device fields
|
|
|
|
DELETE /device/{deviceId}
|
|
|
|
DELETE /device/{deviceId} requires UI auth user to match device owner
|
|
|
|
DELETE /device/{deviceId} with no body gives a 401
|
2019-06-21 17:49:37 +02:00
|
|
|
POST /createRoom makes a public room
|
|
|
|
POST /createRoom makes a private room
|
|
|
|
POST /createRoom makes a private room with invites
|
|
|
|
POST /createRoom makes a room with a name
|
|
|
|
POST /createRoom makes a room with a topic
|
|
|
|
Can /sync newly created room
|
|
|
|
GET /rooms/:room_id/state/m.room.member/:user_id fetches my membership
|
|
|
|
GET /rooms/:room_id/state/m.room.power_levels fetches powerlevels
|
|
|
|
POST /join/:room_alias can join a room
|
|
|
|
POST /join/:room_id can join a room
|
|
|
|
POST /join/:room_id can join a room with custom content
|
|
|
|
POST /join/:room_alias can join a room with custom content
|
2019-07-12 15:29:30 +02:00
|
|
|
POST /rooms/:room_id/join can join a room
|
2019-06-21 17:49:37 +02:00
|
|
|
POST /rooms/:room_id/leave can leave a room
|
|
|
|
POST /rooms/:room_id/invite can send an invite
|
|
|
|
POST /rooms/:room_id/ban can ban a user
|
|
|
|
POST /rooms/:room_id/send/:event_type sends a message
|
|
|
|
PUT /rooms/:room_id/send/:event_type/:txn_id sends a message
|
|
|
|
PUT /rooms/:room_id/send/:event_type/:txn_id deduplicates the same txn id
|
|
|
|
GET /rooms/:room_id/state/m.room.power_levels can fetch levels
|
|
|
|
PUT /rooms/:room_id/state/m.room.power_levels can set levels
|
|
|
|
PUT power_levels should not explode if the old power levels were empty
|
2020-06-17 17:21:42 +02:00
|
|
|
GET /rooms/:room_id/state/m.room.member/:user_id?format=event fetches my membership event
|
|
|
|
GET /rooms/:room_id/joined_members fetches my membership
|
2019-06-21 17:49:37 +02:00
|
|
|
Both GET and PUT work
|
|
|
|
POST /rooms/:room_id/read_markers can create read marker
|
|
|
|
User signups are forbidden from starting with '_'
|
|
|
|
Request to logout with invalid an access token is rejected
|
|
|
|
Request to logout without an access token is rejected
|
|
|
|
Room creation reports m.room.create to myself
|
|
|
|
Room creation reports m.room.member to myself
|
2020-10-10 01:21:15 +02:00
|
|
|
Outbound federation rejects send_join responses with no m.room.create event
|
|
|
|
Outbound federation rejects m.room.create events with an unknown room version
|
2020-06-24 10:59:59 +02:00
|
|
|
Invited user can see room metadata
|
2022-03-03 10:18:40 +01:00
|
|
|
# Blacklisted because these tests call /v3/events which we don't implement
|
2020-04-14 19:36:08 +02:00
|
|
|
# New room members see their own join event
|
|
|
|
# Existing members see new members' join events
|
2019-06-21 17:49:37 +02:00
|
|
|
setting 'm.room.power_levels' respects room powerlevel
|
|
|
|
Unprivileged users can set m.room.topic if it only needs level 0
|
|
|
|
Users cannot set ban powerlevel higher than their own
|
|
|
|
Users cannot set kick powerlevel higher than their own
|
|
|
|
Users cannot set redact powerlevel higher than their own
|
|
|
|
Can get rooms/{roomId}/members for a departed room (SPEC-216)
|
|
|
|
3pid invite join with wrong but valid signature are rejected
|
|
|
|
3pid invite join valid signature but revoked keys are rejected
|
|
|
|
3pid invite join valid signature but unreachable ID server are rejected
|
|
|
|
Room members can join a room with an overridden displayname
|
|
|
|
Real non-joined user cannot call /events on shared room
|
|
|
|
Real non-joined user cannot call /events on invited room
|
|
|
|
Real non-joined user cannot call /events on joined room
|
|
|
|
Real non-joined user cannot call /events on default room
|
|
|
|
Real non-joined users can get state for world_readable rooms
|
|
|
|
Real non-joined users can get individual state for world_readable rooms
|
2020-01-23 18:51:10 +01:00
|
|
|
#Real non-joined users can get individual state for world_readable rooms after leaving
|
2019-06-21 17:49:37 +02:00
|
|
|
Real non-joined users cannot send messages to guest_access rooms if not joined
|
|
|
|
Can't forget room you're still in
|
|
|
|
Can get rooms/{roomId}/members
|
|
|
|
Can create filter
|
|
|
|
Can download filter
|
Upgrade gomatrixserverlib dependency (#808)
* Upgrade gomatrixserverlib dependency
Signed-off-by: Thibaut CHARLES cromfr@gmail.com
* Added missing passing sytest
Signed-off-by: Thibaut CHARLES cromfr@gmail.com
* Fix login using identifier key
Not a full fix, it only really supports logging in with
the localpart of an mxid.
Signed-off-by: Serra Allgood <serra@allgood.dev>
* Replace deprecated prometheus.InstrumentHandler and unsafe time.Ticker
* goimports
* re-add temporarily missing deps?
* Refactor InstrumentHandlerCounter definition
* URL decode args
* Return server names (#833)
* Remove unnecessary map->array processing
* Return server names in room federation directory query
* Knock off a TODO
* Fix /send_join and /send_leave (#821)
Fix the /send_join and /send_leave endpoints, so that they use the v2 endpoints as mandated by MSC1802. Also comment out the SyTest tests that are failing because of lack of support for the v1 endpoints.
* Refuse /send_join without m.room.create (#824)
Signed-off-by: Abhishek Kumar <abhishekkumar2718@gmail.com>
* AS should use the v1 endpoint, rather than r0 (#827)
* docker: Passthrough parameters to dendrite-monolith-server
* Fix copy & paste error (#812)
* Use gomatrixserverlib.Transaction instead of local type (#590) (#811)
* Move files back if linting fails (#810)
* replaced gometalinter description with golangci-lint (#837)
* Amend syncapi SQL queries to return missing columns (#840)
* This commit updates a couple of the syncapi SQL queries to return additional columns that are required/expected by rowsToStreamEvents in output_room_events_table.go.
It's not exactly clear to me yet what transaction_id and session_id do, but these being added n #367 results in state events breaking the /sync endpoint.
This is a temporary fix. We need to come up with a better solution.
* gomatrix to gomatrixserverlib on some weird line change
* Tweaks from @babolivier review comments
* Implement storage interfaces (#841)
* Implement interfaces for federationsender storage
* Implement interfaces for mediaapi storage
* Implement interfaces for publicroomsapi storage
* Implement interfaces for roomserver storage
* Implement interfaces for syncapi storage
* Implement interfaces for keydb storage
* common.PartitionStorer in publicroomsapi interface
* Update copyright notices
* make cmd directory path absolute in build.sh (#830)
* Resync testfile with current sytest pass/fail (#832)
* Resync testfile with current sytest pass/fail
* Add displayname test
* Fall back to postgres when database connection string parsing fails (#842)
* Fall back to postgres when parsing the database connection string for a URI schema fails
* Fix behaviour so that it really tries postgres when URL parsing fails and it complains about unknown schema if it succeeds
* Fix #842
* Fix #842 - again...
* Federation fixes (#845)
* Update gomatrixserverlib to p2p commit 92c0338, other tweaks
* Update gomatrixserverlib to p2p commit e5dcc65
* Rewrite getAuthChain
* Update gomatrixserverlib in go.mod/go.sum
* Correct a couple of package refs for updated gmsl/gomatrix
* Update gomatrixserverlib ref in go.mod/go.sum
* Update getAuthChain comments following @babolivier review
* Add a Sytest blacklist file (#849)
* Add more passing tests to the testfile, add test blacklist file (#848)
* CS API: Support for /messages, fixes for /sync (#847)
* Merge forward
* Tidy up a bit
* TODO: What to do with NextBatch here?
* Replace SyncPosition with PaginationToken throughout syncapi
* Fix PaginationTokens
* Fix lint errors
* Add a couple of missing functions into the syncapi external storage interface
* Some updates based on review comments from @babolivier
* Some updates based on review comments from @babolivier
* argh whitespacing
* Fix opentracing span
* Remove dead code
* Don't overshadow err (fix lint issue)
* Handle extremities after inserting event into topology
* Try insert event topology as ON CONFLICT DO NOTHING
* Prevent OOB error in addRoomDeltaToResponse
* Thwarted by gocyclo again
* Fix NewPaginationTokenFromString, define unit test for it
* Update pagination token test
* Update sytest-whitelist
* Hopefully fix some of the sync batch tokens
* Remove extraneous sync position func
* Revert to topology tokens in addRoomDeltaToResponse etc
* Fix typo
* Remove prevPDUPos as dead now that backwardTopologyPos is used instead
* Fix selectEventsWithEventIDsSQL
* Update sytest-blacklist
* Update sytest-whitelist
* Some fixes for #847 (#850)
* Fix a couple of cases where backfilling events we already had causes panics, hopefully fix ordering of events, update GMSL dependency for backfill URL fixes
* Remove commented out lines from output_room_events_table schema
* Wire up publicroomsapi for roomserver events (#851)
* Wire up publicroomsapi to roomserver events
* Remove parameter that was incorrectly brought over from p2p work
* nolint containsBackwardExtremity for now
* Store our own keys in the keydb (#853)
* Store our own keys in the keydb
The DirectKeyFetcher makes the assumption that you can always reach the key/v2/server endpoint of any server, including our own. We previously haven't bothered to store our own keys in the keydb so this would mean we end up making key requests to ourselves.
In the libp2p world as an example, self-dialling is not possible, therefore this would render it impossible to get our own keys.
This commit adds our own keys into the keydb so that we don't create unnecessarily (and maybe impossible) requests.
* Use golang.org/x/crypto/ed25519 instead of crypto/ed25519 for pre-Go 1.13
* More sync fixes (#854)
* Further sync tweaks
* Remove unnecessary blank line
* getBackwardTopologyPos always returns a usable value
* Revert order fixing
* Implement GET endpoints for account_data in clientapi (#861)
* Implement GET endpoints for account_data in clientapi
* Fix accountDB parameter
* Remove fmt.Println
* Add empty push rules into account data on account creation (#862)
* Handle kind=guest query parameter on /register (#860)
* Handle kind=guest query parameter on /register
* Reorganized imports
* Pass device_id as nil
* Added tests to systest-whitelist
* Update sytest-whitelist
* Blacklist 'displayname updates affect room member events' (#859)
* Room version abstractions (#865)
* Rough first pass at adding room version abstractions
* Define newer room versions
* Update room version metadata
* Fix roomserver/versions
* Try to fix whitespace in roomsSchema
* Implement room version capabilities in CS API (#866)
* Add wiring for querying the roomserver for the default room version
* Try to implement /capabilities for room versions
* Update copyright notices
* Update sytests, add /capabilities endpoint into CS API
* Update sytest-whitelist
* Add GetDefaultRoomVersion
* Fix cases where state package was shadowed
* Fix version formatting
* Update Dockerfile to Go 1.13.6
* oh yes types I remember
* And fix the default too
* Update documentation for Go 1.13 (#867)
* Pass cfg by reference around the codebase (#819)
* Pass cfg by reference around the codebase
* Merge branch 'master' into pass-cfg-by-ref
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Implement missing device management features (#835)
* Implement missing device management features
Signed-off-by: Till Faelligen <tfaelligen@gmail.com>
* Add a little more documentation
* Undo changes
* Use non-anonymous struct to decode devices list
* Update sytest-whitelist
* Update sytest-whitelist
* Update sytest-blacklist
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Adding sslmode: disable to sytest server config (#813)
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Fix AppService bind addrs in test (#805)
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Always defer *sql.Rows.Close and consult with Err (#844)
* Always defer *sql.Rows.Close and consult with Err
database/sql.Rows.Next() makes sure to call Close only after exhausting
result rows which would NOT happen when returning early from a bad Scan.
Close being idempotent makes it a great candidate to get always deferred
regardless of what happens later on the result set.
This change also makes sure call Err() after exhausting Next() and
propagate non-nil results from it as the documentation advises.
Closes #764
Signed-off-by: Kiril Vladimiroff <kiril@vladimiroff.org>
* Override named result parameters in last returns
Signed-off-by: Kiril Vladimiroff <kiril@vladimiroff.org>
* Do the same over new changes that got merged
Signed-off-by: Kiril Vladimiroff <kiril@vladimiroff.org>
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
* Clean up
Co-authored-by: Serra Allgood <serra@allgood.dev>
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
Co-authored-by: Brendan Abolivier <github@brendanabolivier.com>
Co-authored-by: Abhishek Kumar <31231064+abhishekkumar2718@users.noreply.github.com>
Co-authored-by: Will Hunt <will@half-shot.uk>
Co-authored-by: S7evinK <tfaelligen@gmail.com>
Co-authored-by: Arshpreet <30545756+arsh-7@users.noreply.github.com>
Co-authored-by: Prateek Sachan <42961174+prateek2211@users.noreply.github.com>
Co-authored-by: Behouba Manassé <behouba@gmail.com>
Co-authored-by: aditsachde <23707194+aditsachde@users.noreply.github.com>
Co-authored-by: Kiril Vladimiroff <kiril@vladimiroff.org>
2020-02-11 16:46:51 +01:00
|
|
|
Lazy loading parameters in the filter are strictly boolean
|
2019-06-21 17:49:37 +02:00
|
|
|
Can sync
|
|
|
|
Can sync a joined room
|
|
|
|
Newly joined room is included in an incremental sync
|
|
|
|
User is offline if they set_presence=offline in their sync
|
|
|
|
Changes to state are included in an incremental sync
|
|
|
|
A change to displayname should appear in incremental /sync
|
|
|
|
Rooms a user is invited to appear in an initial sync
|
|
|
|
Rooms a user is invited to appear in an incremental sync
|
|
|
|
Sync can be polled for updates
|
|
|
|
Sync is woken up for leaves
|
|
|
|
Newly left rooms appear in the leave section of incremental sync
|
2020-08-03 18:07:06 +02:00
|
|
|
Rooms can be created with an initial invite list (SYN-205)
|
2019-06-21 17:49:37 +02:00
|
|
|
We should see our own leave event, even if history_visibility is restricted (SYN-662)
|
|
|
|
We should see our own leave event when rejecting an invite, even if history_visibility is restricted (riot-web/3462)
|
|
|
|
Newly left rooms appear in the leave section of gapped sync
|
|
|
|
Previously left rooms don't appear in the leave section of sync
|
|
|
|
Left rooms appear in the leave section of full state sync
|
|
|
|
Newly banned rooms appear in the leave section of incremental sync
|
|
|
|
Newly banned rooms appear in the leave section of incremental sync
|
|
|
|
local user can join room with version 1
|
|
|
|
User can invite local user to room with version 1
|
2020-07-15 13:02:34 +02:00
|
|
|
Can upload device keys
|
2019-06-21 17:49:37 +02:00
|
|
|
Should reject keys claiming to belong to a different user
|
2020-07-15 19:40:41 +02:00
|
|
|
Can query device keys using POST
|
2020-07-22 18:04:57 +02:00
|
|
|
Can query remote device keys using POST
|
2020-07-15 19:40:41 +02:00
|
|
|
Can query specific device keys using POST
|
|
|
|
query for user with no keys returns empty key dict
|
2020-07-21 15:47:53 +02:00
|
|
|
Can claim one time key using POST
|
2020-07-22 18:04:57 +02:00
|
|
|
Can claim remote one time key using POST
|
2020-07-30 12:15:46 +02:00
|
|
|
Local device key changes appear in v2 /sync
|
2020-07-31 15:40:45 +02:00
|
|
|
New users appear in /keys/changes
|
2020-07-30 19:00:56 +02:00
|
|
|
Local delete device changes appear in v2 /sync
|
2020-07-31 15:40:45 +02:00
|
|
|
Local new device changes appear in v2 /sync
|
|
|
|
Local update device changes appear in v2 /sync
|
2020-07-30 15:52:21 +02:00
|
|
|
Get left notifs for other users in sync and /keys/changes when user leaves
|
2020-08-04 14:50:32 +02:00
|
|
|
Local device key changes get to remote servers
|
2020-08-10 13:38:33 +02:00
|
|
|
Server correctly handles incoming m.device_list_update
|
2020-08-11 11:44:59 +02:00
|
|
|
If remote user leaves room, changes device and rejoins we see update in sync
|
|
|
|
If remote user leaves room, changes device and rejoins we see update in /keys/changes
|
2020-08-12 11:50:52 +02:00
|
|
|
If remote user leaves room we no longer receive device updates
|
2020-08-12 23:43:02 +02:00
|
|
|
Server correctly resyncs when client query keys and there is no remote cache
|
|
|
|
Server correctly resyncs when server leaves and rejoins a room
|
2020-08-13 17:43:27 +02:00
|
|
|
Device list doesn't change if remote server is down
|
2019-06-21 17:49:37 +02:00
|
|
|
Can add account data
|
|
|
|
Can add account data to room
|
2020-06-17 18:01:03 +02:00
|
|
|
Can get account data without syncing
|
|
|
|
Can get room account data without syncing
|
2022-04-25 19:04:46 +02:00
|
|
|
Latest account data appears in v2 /sync
|
2019-06-21 17:49:37 +02:00
|
|
|
New account data appears in incremental v2 /sync
|
|
|
|
Checking local federation server
|
|
|
|
Inbound federation can query profile data
|
|
|
|
Outbound federation can send room-join requests
|
|
|
|
Outbound federation can send events
|
2019-12-20 15:41:32 +01:00
|
|
|
# SyTest currently only implements the v1 endpoints for /send_join and /send_leave,
|
|
|
|
# whereas Dendrite only supports the v2 endpoints for those, so let's ignore this
|
|
|
|
# test for now.
|
|
|
|
#Inbound federation can backfill events
|
|
|
|
# SyTest currently only implements the v1 endpoints for /send_join and /send_leave,
|
|
|
|
# whereas Dendrite only supports the v2 endpoints for those, so let's ignore this
|
|
|
|
# test for now.
|
|
|
|
#Backfill checks the events requested belong to the room
|
2019-06-21 17:49:37 +02:00
|
|
|
Can upload without a file name
|
2020-06-17 12:53:26 +02:00
|
|
|
Can download without a file name locally
|
2019-06-21 17:49:37 +02:00
|
|
|
Can upload with ASCII file name
|
|
|
|
Can send image in room message
|
|
|
|
AS cannot create users outside its own namespace
|
|
|
|
Regular users cannot register within the AS namespace
|
|
|
|
AS can't set displayname for random users
|
|
|
|
AS user (not ghost) can join room without registering, with user_id query param
|
|
|
|
Changing the actions of an unknown default rule fails with 404
|
|
|
|
Changing the actions of an unknown rule fails with 404
|
|
|
|
Enabling an unknown default rule fails with 404
|
|
|
|
Trying to get push rules with unknown rule_id fails with 404
|
|
|
|
Events come down the correct room
|
2019-12-20 15:41:32 +01:00
|
|
|
# SyTest currently only implements the v1 endpoints for /send_join and /send_leave,
|
|
|
|
# whereas Dendrite only supports the v2 endpoints for those, so let's ignore this
|
|
|
|
# test for now.
|
|
|
|
#Inbound federation can receive v1 room-join requests
|
2019-07-12 16:59:53 +02:00
|
|
|
Typing events appear in initial sync
|
|
|
|
Typing events appear in incremental sync
|
|
|
|
Typing events appear in gapped sync
|
2019-07-18 09:41:29 +02:00
|
|
|
Inbound federation of state requires event_id as a mandatory paramater
|
|
|
|
Inbound federation of state_ids requires event_id as a mandatory paramater
|
2019-07-22 16:05:38 +02:00
|
|
|
POST /register returns the same device_id as that in the request
|
2019-07-24 18:15:36 +02:00
|
|
|
POST /createRoom with creation content
|
|
|
|
User can create and send/receive messages in a room with version 1
|
|
|
|
POST /createRoom ignores attempts to set the room version via creation_content
|
2019-07-29 09:18:21 +02:00
|
|
|
Inbound federation rejects remote attempts to join local users to rooms
|
|
|
|
Inbound federation rejects remote attempts to kick local users to rooms
|
2019-08-01 06:36:13 +02:00
|
|
|
Full state sync includes joined rooms
|
2019-08-06 17:33:53 +02:00
|
|
|
A message sent after an initial sync appears in the timeline of an incremental sync.
|
2019-08-02 13:17:51 +02:00
|
|
|
Can add tag
|
|
|
|
Can remove tag
|
|
|
|
Can list tags for a room
|
|
|
|
Tags appear in an initial v2 /sync
|
|
|
|
Newly updated tags appear in an incremental v2 /sync
|
|
|
|
Deleted tags appear in an incremental v2 /sync
|
2019-08-06 16:52:04 +02:00
|
|
|
/event/ on non world readable room does not work
|
2019-08-06 18:02:12 +02:00
|
|
|
Outbound federation can query profile data
|
2019-08-09 11:45:54 +02:00
|
|
|
/event/ on joined room works
|
|
|
|
/event/ does not allow access to events before the user joined
|
2019-08-19 19:01:53 +02:00
|
|
|
Federation key API allows unsigned requests for keys
|
2020-07-02 16:41:18 +02:00
|
|
|
GET /publicRooms lists rooms
|
|
|
|
GET /publicRooms includes avatar URLs
|
2019-09-26 15:20:34 +02:00
|
|
|
Can paginate public room list
|
2020-07-02 16:41:18 +02:00
|
|
|
GET /publicRooms lists newly-created room
|
|
|
|
Name/topic keys are correct
|
2019-10-01 18:09:47 +02:00
|
|
|
GET /directory/room/:room_alias yields room ID
|
|
|
|
PUT /directory/room/:room_alias creates alias
|
|
|
|
Room aliases can contain Unicode
|
|
|
|
Creators can delete alias
|
|
|
|
Regular users cannot create room aliases within the AS namespace
|
|
|
|
Deleting a non-existent alias should return a 404
|
|
|
|
Users can't delete other's aliases
|
|
|
|
Outbound federation can query room alias directory
|
2020-10-02 18:18:20 +02:00
|
|
|
Can deactivate account
|
|
|
|
Can't deactivate account with wrong password
|
|
|
|
After deactivating account, can't log in with password
|
2020-01-09 17:40:30 +01:00
|
|
|
After deactivating account, can't log in with an email
|
|
|
|
Remote room alias queries can handle Unicode
|
|
|
|
Newly joined room is included in an incremental sync after invite
|
|
|
|
Inbound /v1/make_join rejects remote attempts to join local users to rooms
|
2020-01-22 17:11:40 +01:00
|
|
|
Local room members see posted message events
|
|
|
|
Fetching eventstream a second time doesn't yield the message again
|
|
|
|
Local non-members don't see posted message events
|
|
|
|
Remote room members also see posted message events
|
|
|
|
Lazy loading parameters in the filter are strictly boolean
|
|
|
|
remote user can join room with version 1
|
|
|
|
Inbound federation can query room alias directory
|
|
|
|
Outbound federation can query v2 /send_join
|
|
|
|
Inbound federation can receive v2 /send_join
|
2020-01-23 18:51:10 +01:00
|
|
|
Message history can be paginated
|
|
|
|
Backfill works correctly with history visibility set to joined
|
2020-01-30 12:25:57 +01:00
|
|
|
Guest user cannot call /events globally
|
|
|
|
Guest user can set display names
|
|
|
|
Guest user cannot upgrade other users
|
|
|
|
Guest non-joined user cannot call /events on shared room
|
|
|
|
Guest non-joined user cannot call /events on invited room
|
|
|
|
Guest non-joined user cannot call /events on joined room
|
|
|
|
Guest non-joined user cannot call /events on default room
|
|
|
|
Guest non-joined users can get state for world_readable rooms
|
|
|
|
Guest non-joined users can get individual state for world_readable rooms
|
|
|
|
Guest non-joined users cannot room initalSync for non-world_readable rooms
|
|
|
|
Guest non-joined users can get individual state for world_readable rooms after leaving
|
|
|
|
Guest non-joined users cannot send messages to guest_access rooms if not joined
|
|
|
|
Real non-joined users cannot room initalSync for non-world_readable rooms
|
2020-01-30 12:29:52 +01:00
|
|
|
Push rules come down in an initial /sync
|
2020-02-05 19:06:39 +01:00
|
|
|
Regular users can add and delete aliases in the default room configuration
|
2022-03-03 10:18:40 +01:00
|
|
|
GET /v3/capabilities is not public
|
2020-03-19 11:25:36 +01:00
|
|
|
GET /joined_rooms lists newly-created room
|
|
|
|
/joined_rooms returns only joined rooms
|
2020-03-24 13:20:10 +01:00
|
|
|
Message history can be paginated over federation
|
2020-03-24 14:39:50 +01:00
|
|
|
GET /rooms/:room_id/messages returns a message
|
|
|
|
Remote user can backfill in a room with version 1
|
2020-03-27 17:28:22 +01:00
|
|
|
POST /createRoom creates a room with the given version
|
|
|
|
POST /createRoom rejects attempts to create rooms with numeric versions
|
|
|
|
POST /createRoom rejects attempts to create rooms with unknown versions
|
Federation for v3/v4 rooms (#954)
* Update gomatrixserverlib
* Default to room version 4
* Update gomatrixserverlib
* Limit prev_events and auth_events
* Fix auth_events, prev_events
* Fix linter issues
* Update gomatrixserverlib
* Fix getState
* Update sytest-whitelist
* Squashed commit of the following:
commit 067b87506357c996fd6ddb11271db9469ad4ce80
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Apr 3 14:29:06 2020 +0100
Invites v2 endpoint (#952)
* Start converting v1 invite endpoint to v2
* Update gomatrixserverlib
* Early federationsender code for sending invites
* Sending invites sorta happens now
* Populate invite request with stripped state
* Remodel a bit, don't reflect received invites
* Handle invite_room_state
* Handle room versions a bit better
* Update gomatrixserverlib
* Tweak order in destinationQueue.next
* Revert check in processMessage
* Tweak federation sender destination queue code a bit
* Add comments
commit 955244c09298d0e6c870377dad3af2ffa1f5e578
Author: Ben B <benne@klimlive.de>
Date: Fri Apr 3 12:40:50 2020 +0200
use custom http client instead of the http DefaultClient (#823)
This commit replaces the default client from the http lib with a custom one.
The previously used default client doesn't come with a timeout. This could cause
unwanted locks.
That solution chosen here creates a http client in the base component dendrite
with a constant timeout of 30 seconds. If it should be necessary to overwrite
this, we could include the timeout in the dendrite configuration.
Here it would be a good idea to extend the type "Address" by a timeout and
create an http client for each service.
Closes #820
Signed-off-by: Benedikt Bongartz <benne@klimlive.de>
Co-authored-by: Kegsay <kegan@matrix.org>
* Update sytest-whitelist, sytest-blacklist
* Update go.mod/go.sum
* Add some error wrapping for debug
* Add a NOTSPEC to common/events.go
* Perform state resolution at send_join
* Set default room version to v2 again
* Tweak GetCapabilities
* Add comments to ResolveConflictsAdhoc
* Update sytest-blacklist
* go mod tidy
* Update sytest-whitelist, sytest-blacklist
* Update versions
* Updates from review comments
* Update sytest-blacklist, sytest-whitelist
* Check room versions compatible at make_join, add some comments, update gomatrixserverlib, other tweaks
* Set default room version back to v2
* Update gomatrixserverlib, sytest-whitelist
2020-04-09 16:46:06 +02:00
|
|
|
Regular users can add and delete aliases when m.room.aliases is restricted
|
2020-03-27 17:28:22 +01:00
|
|
|
User can create and send/receive messages in a room with version 2
|
|
|
|
local user can join room with version 2
|
|
|
|
remote user can join room with version 2
|
|
|
|
User can invite local user to room with version 2
|
|
|
|
Remote user can backfill in a room with version 2
|
2020-04-03 15:29:06 +02:00
|
|
|
Inbound federation accepts attempts to join v2 rooms from servers with support
|
Federation for v3/v4 rooms (#954)
* Update gomatrixserverlib
* Default to room version 4
* Update gomatrixserverlib
* Limit prev_events and auth_events
* Fix auth_events, prev_events
* Fix linter issues
* Update gomatrixserverlib
* Fix getState
* Update sytest-whitelist
* Squashed commit of the following:
commit 067b87506357c996fd6ddb11271db9469ad4ce80
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Apr 3 14:29:06 2020 +0100
Invites v2 endpoint (#952)
* Start converting v1 invite endpoint to v2
* Update gomatrixserverlib
* Early federationsender code for sending invites
* Sending invites sorta happens now
* Populate invite request with stripped state
* Remodel a bit, don't reflect received invites
* Handle invite_room_state
* Handle room versions a bit better
* Update gomatrixserverlib
* Tweak order in destinationQueue.next
* Revert check in processMessage
* Tweak federation sender destination queue code a bit
* Add comments
commit 955244c09298d0e6c870377dad3af2ffa1f5e578
Author: Ben B <benne@klimlive.de>
Date: Fri Apr 3 12:40:50 2020 +0200
use custom http client instead of the http DefaultClient (#823)
This commit replaces the default client from the http lib with a custom one.
The previously used default client doesn't come with a timeout. This could cause
unwanted locks.
That solution chosen here creates a http client in the base component dendrite
with a constant timeout of 30 seconds. If it should be necessary to overwrite
this, we could include the timeout in the dendrite configuration.
Here it would be a good idea to extend the type "Address" by a timeout and
create an http client for each service.
Closes #820
Signed-off-by: Benedikt Bongartz <benne@klimlive.de>
Co-authored-by: Kegsay <kegan@matrix.org>
* Update sytest-whitelist, sytest-blacklist
* Update go.mod/go.sum
* Add some error wrapping for debug
* Add a NOTSPEC to common/events.go
* Perform state resolution at send_join
* Set default room version to v2 again
* Tweak GetCapabilities
* Add comments to ResolveConflictsAdhoc
* Update sytest-blacklist
* go mod tidy
* Update sytest-whitelist, sytest-blacklist
* Update versions
* Updates from review comments
* Update sytest-blacklist, sytest-whitelist
* Check room versions compatible at make_join, add some comments, update gomatrixserverlib, other tweaks
* Set default room version back to v2
* Update gomatrixserverlib, sytest-whitelist
2020-04-09 16:46:06 +02:00
|
|
|
Outbound federation can send invites via v2 API
|
2020-06-25 18:07:40 +02:00
|
|
|
Outbound federation can send invites via v1 API
|
|
|
|
Inbound federation can receive invites via v1 API
|
|
|
|
Inbound federation can receive invites via v2 API
|
Federation for v3/v4 rooms (#954)
* Update gomatrixserverlib
* Default to room version 4
* Update gomatrixserverlib
* Limit prev_events and auth_events
* Fix auth_events, prev_events
* Fix linter issues
* Update gomatrixserverlib
* Fix getState
* Update sytest-whitelist
* Squashed commit of the following:
commit 067b87506357c996fd6ddb11271db9469ad4ce80
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Fri Apr 3 14:29:06 2020 +0100
Invites v2 endpoint (#952)
* Start converting v1 invite endpoint to v2
* Update gomatrixserverlib
* Early federationsender code for sending invites
* Sending invites sorta happens now
* Populate invite request with stripped state
* Remodel a bit, don't reflect received invites
* Handle invite_room_state
* Handle room versions a bit better
* Update gomatrixserverlib
* Tweak order in destinationQueue.next
* Revert check in processMessage
* Tweak federation sender destination queue code a bit
* Add comments
commit 955244c09298d0e6c870377dad3af2ffa1f5e578
Author: Ben B <benne@klimlive.de>
Date: Fri Apr 3 12:40:50 2020 +0200
use custom http client instead of the http DefaultClient (#823)
This commit replaces the default client from the http lib with a custom one.
The previously used default client doesn't come with a timeout. This could cause
unwanted locks.
That solution chosen here creates a http client in the base component dendrite
with a constant timeout of 30 seconds. If it should be necessary to overwrite
this, we could include the timeout in the dendrite configuration.
Here it would be a good idea to extend the type "Address" by a timeout and
create an http client for each service.
Closes #820
Signed-off-by: Benedikt Bongartz <benne@klimlive.de>
Co-authored-by: Kegsay <kegan@matrix.org>
* Update sytest-whitelist, sytest-blacklist
* Update go.mod/go.sum
* Add some error wrapping for debug
* Add a NOTSPEC to common/events.go
* Perform state resolution at send_join
* Set default room version to v2 again
* Tweak GetCapabilities
* Add comments to ResolveConflictsAdhoc
* Update sytest-blacklist
* go mod tidy
* Update sytest-whitelist, sytest-blacklist
* Update versions
* Updates from review comments
* Update sytest-blacklist, sytest-whitelist
* Check room versions compatible at make_join, add some comments, update gomatrixserverlib, other tweaks
* Set default room version back to v2
* Update gomatrixserverlib, sytest-whitelist
2020-04-09 16:46:06 +02:00
|
|
|
User can create and send/receive messages in a room with version 3
|
|
|
|
local user can join room with version 3
|
|
|
|
Remote user can backfill in a room with version 3
|
|
|
|
User can create and send/receive messages in a room with version 4
|
|
|
|
local user can join room with version 4
|
|
|
|
remote user can join room with version 3
|
|
|
|
remote user can join room with version 4
|
|
|
|
Remote user can backfill in a room with version 4
|
|
|
|
Outbound federation can send invites via v2 API
|
|
|
|
User can invite local user to room with version 3
|
|
|
|
User can invite local user to room with version 4
|
2020-04-14 19:36:08 +02:00
|
|
|
A pair of servers can establish a join in a v2 room
|
2020-04-20 18:42:34 +02:00
|
|
|
Can logout all devices
|
2020-04-28 11:53:07 +02:00
|
|
|
State from remote users is included in the timeline in an incremental sync
|
|
|
|
User can invite remote user to room with version 1
|
|
|
|
User can invite remote user to room with version 2
|
|
|
|
User can invite remote user to room with version 3
|
|
|
|
User can invite remote user to room with version 4
|
2020-04-29 20:37:00 +02:00
|
|
|
User can create and send/receive messages in a room with version 5
|
|
|
|
local user can join room with version 5
|
|
|
|
User can invite local user to room with version 5
|
|
|
|
remote user can join room with version 5
|
|
|
|
User can invite remote user to room with version 5
|
|
|
|
Remote user can backfill in a room with version 5
|
2020-05-12 17:24:28 +02:00
|
|
|
Inbound federation can receive v1 /send_join
|
|
|
|
Inbound federation can get state for a room
|
|
|
|
Inbound federation of state requires event_id as a mandatory paramater
|
|
|
|
Inbound federation can get state_ids for a room
|
|
|
|
Inbound federation of state_ids requires event_id as a mandatory paramater
|
|
|
|
Federation rejects inbound events where the prev_events cannot be found
|
2020-05-11 12:50:29 +02:00
|
|
|
Alternative server names do not cause a routing loop
|
2020-05-12 18:49:04 +02:00
|
|
|
Events whose auth_events are in the wrong room do not mess up the room state
|
|
|
|
Inbound federation can return events
|
|
|
|
Inbound federation can return missing events for world_readable visibility
|
|
|
|
Inbound federation can return missing events for invite visibility
|
|
|
|
Inbound federation can get public room list
|
2022-04-20 17:55:24 +02:00
|
|
|
PUT /rooms/:room_id/redact/:event_id/:txn_id as power user redacts message
|
|
|
|
PUT /rooms/:room_id/redact/:event_id/:txn_id as original message sender redacts message
|
|
|
|
PUT /rooms/:room_id/redact/:event_id/:txn_id as random user does not redact message
|
|
|
|
PUT /redact disallows redaction of event in different room
|
2020-05-12 18:49:04 +02:00
|
|
|
An event which redacts itself should be ignored
|
|
|
|
A pair of events which redact each other should be ignored
|
2020-07-08 18:45:39 +02:00
|
|
|
Redaction of a redaction redacts the redaction reason
|
|
|
|
An event which redacts an event in a different room should be ignored
|
|
|
|
Can receive redactions from regular users over federation in room version 1
|
|
|
|
Can receive redactions from regular users over federation in room version 2
|
|
|
|
Can receive redactions from regular users over federation in room version 3
|
|
|
|
Can receive redactions from regular users over federation in room version 4
|
|
|
|
Can receive redactions from regular users over federation in room version 5
|
|
|
|
Can receive redactions from regular users over federation in room version 6
|
2020-05-19 19:42:55 +02:00
|
|
|
Outbound federation can backfill events
|
2020-05-20 17:04:31 +02:00
|
|
|
Inbound federation can backfill events
|
2020-05-20 18:30:03 +02:00
|
|
|
Backfill checks the events requested belong to the room
|
|
|
|
Backfilled events whose prev_events are in a different room do not allow cross-room back-pagination
|
2020-05-20 19:31:02 +02:00
|
|
|
Outbound federation can request missing events
|
2020-05-21 12:51:15 +02:00
|
|
|
New room members see their own join event
|
|
|
|
Existing members see new members' join events
|
|
|
|
Inbound federation can receive events
|
|
|
|
Inbound federation can receive redacted events
|
2020-05-26 15:41:16 +02:00
|
|
|
Can logout current device
|
2022-03-03 12:40:53 +01:00
|
|
|
Can send a message directly to a device using PUT /sendToDevice
|
|
|
|
Can recv a device message using /sync
|
|
|
|
Can recv device messages until they are acknowledged
|
|
|
|
Device messages with the same txn_id are deduplicated
|
|
|
|
Device messages wake up /sync
|
|
|
|
Can recv device messages over federation
|
|
|
|
Device messages over federation wake up /sync
|
|
|
|
Can send messages with a wildcard device id
|
|
|
|
Can send messages with a wildcard device id to two devices
|
|
|
|
Wildcard device messages wake up /sync
|
|
|
|
Wildcard device messages over federation wake up /sync
|
Send-to-device support (#1072)
* Groundwork for send-to-device messaging
* Update sample config
* Add unstable routing for now
* Send to device consumer in sync API
* Start the send-to-device consumer
* fix indentation in dendrite-config.yaml
* Create send-to-device database tables, other tweaks
* Add some logic for send-to-device messages, add them into sync stream
* Handle incoming send-to-device messages, count them with EDU stream pos
* Undo changes to test
* pq.Array
* Fix sync
* Logging
* Fix a couple of transaction things, fix client API
* Add send-to-device test, hopefully fix bugs
* Comments
* Refactor a bit
* Fix schema
* Fix queries
* Debug logging
* Fix storing and retrieving of send-to-device messages
* Try to avoid database locks
* Update sync position
* Use latest sync position
* Jiggle about sync a bit
* Fix tests
* Break out the retrieval from the update/delete behaviour
* Comments
* nolint on getResponseWithPDUsForCompleteSync
* Try to line up sync tokens again
* Implement wildcard
* Add all send-to-device tests to whitelist, what could possibly go wrong?
* Only care about wildcard when targeted locally
* Deduplicate transactions
* Handle tokens properly, return immediately if waiting send-to-device messages
* Fix sync
* Update sytest-whitelist
* Fix copyright notice (need to do more of this)
* Comments, copyrights
* Return errors from Do, fix dendritejs
* Review comments
* Comments
* Constructor for TransactionWriter
* defletions
* Update gomatrixserverlib, sytest-blacklist
2020-06-01 18:50:19 +02:00
|
|
|
Can send a to-device message to two users which both receive it using /sync
|
2020-06-04 11:53:39 +02:00
|
|
|
User can create and send/receive messages in a room with version 6
|
|
|
|
local user can join room with version 6
|
|
|
|
User can invite local user to room with version 6
|
|
|
|
remote user can join room with version 6
|
|
|
|
User can invite remote user to room with version 6
|
|
|
|
Remote user can backfill in a room with version 6
|
|
|
|
Inbound: send_join rejects invalid JSON for room version 6
|
|
|
|
Outbound federation rejects backfill containing invalid JSON for events in room version 6
|
|
|
|
Invalid JSON integers
|
|
|
|
Invalid JSON special values
|
|
|
|
Invalid JSON floats
|
|
|
|
Outbound federation will ignore a missing event with bad JSON for room version 6
|
2020-06-23 14:15:15 +02:00
|
|
|
Server correctly handles transactions that break edu limits
|
|
|
|
Server rejects invalid JSON in a version 6 room
|
2020-06-16 15:47:30 +02:00
|
|
|
Can download without a file name over federation
|
2022-03-03 10:18:40 +01:00
|
|
|
POST /media/v3/upload can create an upload
|
|
|
|
GET /media/v3/download can fetch the value again
|
2020-06-16 19:31:38 +02:00
|
|
|
Remote users can join room by alias
|
|
|
|
Alias creators can delete alias with no ops
|
|
|
|
Alias creators can delete canonical alias with no ops
|
|
|
|
Room members can override their displayname on a room-specific basis
|
|
|
|
displayname updates affect room member events
|
|
|
|
avatar_url updates affect room member events
|
|
|
|
Real non-joined users can get individual state for world_readable rooms after leaving
|
|
|
|
Can upload with Unicode file name
|
|
|
|
POSTed media can be thumbnailed
|
|
|
|
Remote media can be thumbnailed
|
|
|
|
Can download with Unicode file name locally
|
2020-06-17 12:53:26 +02:00
|
|
|
Can download file 'ascii'
|
|
|
|
Can download file 'name with spaces'
|
|
|
|
Can download file 'name;with;semicolons'
|
|
|
|
Can download specifying a different ASCII file name
|
2020-06-17 15:26:45 +02:00
|
|
|
Can download with Unicode file name over federation
|
|
|
|
Can download specifying a different Unicode file name
|
2020-06-17 14:54:47 +02:00
|
|
|
Inbound /v1/send_join rejects joins from other servers
|
2020-06-17 16:40:37 +02:00
|
|
|
Outbound federation can query v1 /send_join
|
|
|
|
Inbound /v1/send_join rejects incorrectly-signed joins
|
2020-06-17 17:47:21 +02:00
|
|
|
POST /rooms/:room_id/state/m.room.name sets name
|
|
|
|
GET /rooms/:room_id/state/m.room.name gets name
|
|
|
|
POST /rooms/:room_id/state/m.room.topic sets topic
|
|
|
|
GET /rooms/:room_id/state/m.room.topic gets topic
|
|
|
|
GET /rooms/:room_id/state fetches entire room state
|
|
|
|
Setting room topic reports m.room.topic to myself
|
|
|
|
setting 'm.room.name' respects room powerlevel
|
2020-06-19 14:29:27 +02:00
|
|
|
Syncing a new room with a large timeline limit isn't limited
|
2020-06-23 12:47:48 +02:00
|
|
|
Getting state checks the events requested belong to the room
|
|
|
|
Getting state IDs checks the events requested belong to the room
|
2020-06-24 11:28:03 +02:00
|
|
|
Can invite users to invite-only rooms
|
|
|
|
Uninvited users cannot join the room
|
2020-06-24 19:19:14 +02:00
|
|
|
Users cannot invite themselves to a room
|
|
|
|
Users cannot invite a user that is already in the room
|
2020-06-24 11:28:03 +02:00
|
|
|
Invited user can reject invite
|
2020-06-25 16:06:46 +02:00
|
|
|
PUT /rooms/:room_id/typing/:user_id sets typing notification
|
2020-06-24 11:28:03 +02:00
|
|
|
Typing notification sent to local room members
|
|
|
|
Typing notifications also sent to remote room members
|
|
|
|
Typing can be explicitly stopped
|
2020-06-24 19:19:54 +02:00
|
|
|
Banned user is kicked and may not rejoin until unbanned
|
2020-06-25 16:04:48 +02:00
|
|
|
Inbound federation rejects attempts to join v1 rooms from servers without v1 support
|
|
|
|
Inbound federation rejects attempts to join v2 rooms from servers lacking version support
|
|
|
|
Inbound federation rejects attempts to join v2 rooms from servers only supporting v1
|
|
|
|
Outbound federation passes make_join failures through to the client
|
|
|
|
Outbound federation correctly handles unsupported room versions
|
|
|
|
Remote users may not join unfederated rooms
|
2020-06-25 19:05:41 +02:00
|
|
|
Non-numeric ports in server names are rejected
|
2020-06-26 12:07:52 +02:00
|
|
|
Invited user can reject invite over federation
|
|
|
|
Invited user can reject invite over federation for empty room
|
2020-08-25 19:59:00 +02:00
|
|
|
Invited user can reject invite over federation several times
|
2020-06-26 12:07:52 +02:00
|
|
|
Can reject invites over federation for rooms with version 1
|
|
|
|
Can reject invites over federation for rooms with version 2
|
|
|
|
Can reject invites over federation for rooms with version 3
|
|
|
|
Can reject invites over federation for rooms with version 4
|
|
|
|
Can reject invites over federation for rooms with version 5
|
|
|
|
Can reject invites over federation for rooms with version 6
|
2020-06-26 13:51:54 +02:00
|
|
|
Event size limits
|
2020-06-26 16:34:41 +02:00
|
|
|
Can sync a room with a single message
|
|
|
|
Can sync a room with a message with a transaction id
|
|
|
|
A full_state incremental update returns only recent timeline
|
|
|
|
A prev_batch token can be used in the v1 messages API
|
|
|
|
We don't send redundant membership state across incremental syncs by default
|
|
|
|
Typing notifications don't leak
|
2020-07-27 10:20:09 +02:00
|
|
|
Users cannot kick users from a room they are not in
|
2020-07-28 11:53:17 +02:00
|
|
|
User appears in user directory
|
|
|
|
User directory correctly update on display name change
|
|
|
|
User in shared private room does appear in user directory
|
|
|
|
User in dir while user still shares private rooms
|
2020-07-28 11:09:10 +02:00
|
|
|
Can get 'm.room.name' state for a departed room (SPEC-216)
|
2020-08-11 19:19:11 +02:00
|
|
|
Banned servers cannot send events
|
|
|
|
Banned servers cannot /make_join
|
|
|
|
Banned servers cannot /send_join
|
|
|
|
Banned servers cannot /make_leave
|
|
|
|
Banned servers cannot /send_leave
|
|
|
|
Banned servers cannot /invite
|
|
|
|
Banned servers cannot get room state
|
|
|
|
Banned servers cannot /event_auth
|
|
|
|
Banned servers cannot get missing events
|
|
|
|
Banned servers cannot get room state ids
|
|
|
|
Banned servers cannot backfill
|
|
|
|
Inbound /v1/send_leave rejects leaves from other servers
|
2020-08-17 12:40:49 +02:00
|
|
|
Guest users can accept invites to private rooms over federation
|
|
|
|
AS user (not ghost) can join room without registering
|
2020-09-01 11:26:34 +02:00
|
|
|
Can search public room list
|
|
|
|
Can get remote public room list
|
|
|
|
Asking for a remote rooms list, but supplying the local server's name, returns the local rooms list
|
2020-09-04 16:16:13 +02:00
|
|
|
After changing password, can't log in with old password
|
|
|
|
After changing password, can log in with new password
|
|
|
|
After changing password, existing session still works
|
|
|
|
After changing password, different sessions can optionally be kept
|
|
|
|
After changing password, a different session no longer works by default
|
2020-10-09 10:15:35 +02:00
|
|
|
Read markers appear in incremental v2 /sync
|
|
|
|
Read markers appear in initial v2 /sync
|
|
|
|
Read markers can be updated
|
2020-09-10 15:39:18 +02:00
|
|
|
We can't peek into rooms with shared history_visibility
|
|
|
|
We can't peek into rooms with invited history_visibility
|
|
|
|
We can't peek into rooms with joined history_visibility
|
|
|
|
Local users can peek by room alias
|
2020-09-16 14:00:52 +02:00
|
|
|
Peeked rooms only turn up in the sync for the device who peeked them
|
|
|
|
Room state at a rejected message event is the same as its predecessor
|
2020-09-21 15:55:46 +02:00
|
|
|
Room state at a rejected state event is the same as its predecessor
|
|
|
|
Inbound federation correctly soft fails events
|
2020-09-22 15:40:54 +02:00
|
|
|
Inbound federation accepts a second soft-failed event
|
|
|
|
Federation key API can act as a notary server via a POST request
|
|
|
|
Federation key API can act as a notary server via a GET request
|
2020-09-24 17:18:13 +02:00
|
|
|
Inbound /make_join rejects attempts to join rooms where all users have left
|
2020-09-24 18:16:59 +02:00
|
|
|
Inbound federation rejects invites which include invalid JSON for room version 6
|
|
|
|
Inbound federation rejects invite rejections which include invalid JSON for room version 6
|
2022-03-03 12:40:53 +01:00
|
|
|
GET /capabilities is present and well formed for registered user
|
2020-10-02 18:08:13 +02:00
|
|
|
m.room.history_visibility == "joined" allows/forbids appropriately for Guest users
|
2020-10-07 15:05:33 +02:00
|
|
|
m.room.history_visibility == "joined" allows/forbids appropriately for Real users
|
2020-10-09 10:15:51 +02:00
|
|
|
POST rejects invalid utf-8 in JSON
|
2020-10-07 15:05:33 +02:00
|
|
|
Users cannot kick users who have already left a room
|
2020-10-14 17:07:15 +02:00
|
|
|
Event with an invalid signature in the send_join response should not cause room join to fail
|
2020-10-14 17:49:25 +02:00
|
|
|
Inbound federation rejects typing notifications from wrong remote
|
2020-11-09 19:46:11 +01:00
|
|
|
POST /rooms/:room_id/receipt can create receipts
|
|
|
|
Receipts must be m.read
|
|
|
|
Read receipts appear in initial v2 /sync
|
|
|
|
New read receipts appear in incremental v2 /sync
|
|
|
|
Outbound federation sends receipts
|
|
|
|
Inbound federation rejects receipts from wrong remote
|
2020-10-19 15:59:13 +02:00
|
|
|
Should not be able to take over the room by pretending there is no PL event
|
2020-10-19 16:17:28 +02:00
|
|
|
Can get rooms/{roomId}/state for a departed room (SPEC-216)
|
2020-10-20 18:10:37 +02:00
|
|
|
Users cannot set notifications powerlevel higher than their own
|
2020-11-05 11:19:23 +01:00
|
|
|
Forgetting room does not show up in v2 /sync
|
|
|
|
Can forget room you've been kicked from
|
2020-11-17 11:07:03 +01:00
|
|
|
/whois
|
2020-12-03 12:01:49 +01:00
|
|
|
/joined_members return joined members
|
2020-12-10 19:57:10 +01:00
|
|
|
A next_batch token can be used in the v1 messages API
|
2020-12-18 15:04:17 +01:00
|
|
|
Users receive device_list updates for their own devices
|
2021-01-13 13:59:29 +01:00
|
|
|
m.room.history_visibility == "world_readable" allows/forbids appropriately for Guest users
|
|
|
|
m.room.history_visibility == "world_readable" allows/forbids appropriately for Real users
|
2021-01-19 19:00:42 +01:00
|
|
|
State is included in the timeline in the initial sync
|
|
|
|
State from remote users is included in the state in the initial sync
|
|
|
|
Changes to state are included in an gapped incremental sync
|
|
|
|
A full_state incremental update returns all state
|
|
|
|
Can pass a JSON filter as a query parameter
|
2021-01-22 13:56:20 +01:00
|
|
|
Local room members can get room messages
|
|
|
|
Remote room members can get room messages
|
|
|
|
Guest users can send messages to guest_access rooms if joined
|
2021-03-05 11:40:27 +01:00
|
|
|
AS can create a user
|
|
|
|
AS can create a user with an underscore
|
|
|
|
AS can create a user with inhibit_login
|
|
|
|
AS can set avatar for ghosted users
|
|
|
|
AS can set displayname for ghosted users
|
|
|
|
Ghost user must register before joining room
|
2021-04-07 14:26:20 +02:00
|
|
|
Can generate a openid access_token that can be exchanged for information about a user
|
|
|
|
Invalid openid access tokens are rejected
|
|
|
|
Requests to userinfo without access tokens are rejected
|
2021-07-19 19:33:05 +02:00
|
|
|
'ban' event respects room powerlevel
|
|
|
|
Non-present room members cannot ban others
|
2021-07-12 12:48:08 +02:00
|
|
|
POST /_synapse/admin/v1/register with shared secret
|
|
|
|
POST /_synapse/admin/v1/register admin with shared secret
|
|
|
|
POST /_synapse/admin/v1/register with shared secret downcases capitals
|
|
|
|
POST /_synapse/admin/v1/register with shared secret disallows symbols
|
2021-07-12 20:42:05 +02:00
|
|
|
Membership event with an invalid displayname in the send_join response should not cause room join to fail
|
|
|
|
Inbound federation rejects incorrectly-signed invite rejections
|
|
|
|
Inbound federation can receive invite rejections
|
2021-07-14 11:39:17 +02:00
|
|
|
Inbound federation can receive invite and reject when remote replies with a 403
|
|
|
|
Inbound federation can receive invite and reject when remote replies with a 500
|
|
|
|
Inbound federation can receive invite and reject when remote is unreachable
|
2021-07-14 16:48:14 +02:00
|
|
|
Remote servers cannot set power levels in rooms without existing powerlevels
|
|
|
|
Remote servers should reject attempts by non-creators to set the power levels
|
2021-07-14 19:13:00 +02:00
|
|
|
Federation handles empty auth_events in state_ids sanely
|
2021-07-15 18:45:37 +02:00
|
|
|
Key notary server should return an expired key if it can't find any others
|
2021-07-16 12:35:42 +02:00
|
|
|
Key notary server must not overwrite a valid key with a spurious result from the origin server
|
2021-07-21 17:53:50 +02:00
|
|
|
GET /rooms/:room_id/aliases lists aliases
|
|
|
|
Only room members can list aliases of a room
|
|
|
|
Users with sufficient power-level can delete other's aliases
|
2021-07-27 20:29:32 +02:00
|
|
|
Can create backup version
|
|
|
|
Can update backup version
|
|
|
|
Responds correctly when backup is empty
|
|
|
|
Can backup keys
|
|
|
|
Can update keys with better versions
|
|
|
|
Will not update keys with worse versions
|
|
|
|
Will not back up to an old backup version
|
|
|
|
Can create more than 10 backup versions
|
|
|
|
Can delete backup
|
|
|
|
Deleted & recreated backups are empty
|
2021-08-04 18:56:29 +02:00
|
|
|
Can upload self-signing keys
|
|
|
|
Fails to upload self-signing keys with no auth
|
|
|
|
Fails to upload self-signing key without master key
|
2021-08-09 15:35:24 +02:00
|
|
|
can fetch self-signing keys over federation
|
2021-08-17 14:44:30 +02:00
|
|
|
Changing master key notifies local users
|
|
|
|
Changing user-signing key notifies local users
|
2021-10-13 10:19:00 +02:00
|
|
|
Inbound federation correctly handles soft failed events as extremities
|
2021-11-24 13:55:44 +01:00
|
|
|
Can read configuration endpoint
|
2021-10-21 16:35:36 +02:00
|
|
|
User can create and send/receive messages in a room with version 7
|
|
|
|
local user can join room with version 7
|
|
|
|
User can invite local user to room with version 7
|
|
|
|
remote user can join room with version 7
|
|
|
|
User can invite remote user to room with version 7
|
|
|
|
Remote user can backfill in a room with version 7
|
|
|
|
Can reject invites over federation for rooms with version 7
|
|
|
|
Can receive redactions from regular users over federation in room version 7
|
2021-10-29 13:06:38 +02:00
|
|
|
Federation publicRoom Name/topic keys are correct
|
2021-10-29 16:01:22 +02:00
|
|
|
Remote invited user can see room metadata
|
|
|
|
Can re-join room if re-invited
|
|
|
|
A prev_batch token from incremental sync can be used in the v1 messages API
|
|
|
|
Inbound federation rejects invites which are not signed by the sender
|
2021-11-01 16:05:20 +01:00
|
|
|
Invited user can reject invite over federation several times
|
|
|
|
Test that we can be reinvited to a room we created
|
2021-11-08 10:25:01 +01:00
|
|
|
User can create and send/receive messages in a room with version 8
|
|
|
|
local user can join room with version 8
|
|
|
|
User can invite local user to room with version 8
|
|
|
|
remote user can join room with version 8
|
|
|
|
User can invite remote user to room with version 8
|
|
|
|
Remote user can backfill in a room with version 8
|
|
|
|
Can reject invites over federation for rooms with version 8
|
|
|
|
Can receive redactions from regular users over federation in room version 8
|
|
|
|
User can create and send/receive messages in a room with version 9
|
|
|
|
local user can join room with version 9
|
|
|
|
User can invite local user to room with version 9
|
|
|
|
remote user can join room with version 9
|
|
|
|
User can invite remote user to room with version 9
|
|
|
|
Remote user can backfill in a room with version 9
|
|
|
|
Can reject invites over federation for rooms with version 9
|
|
|
|
Can receive redactions from regular users over federation in room version 9
|
2022-03-03 12:40:53 +01:00
|
|
|
Pushers created with a different access token are deleted on password change
|
|
|
|
Pushers created with a the same access token are not deleted on password change
|
|
|
|
Can fetch a user's pushers
|
|
|
|
Can add global push rule for room
|
|
|
|
Can add global push rule for sender
|
|
|
|
Can add global push rule for content
|
|
|
|
Can add global push rule for override
|
|
|
|
Can add global push rule for underride
|
|
|
|
Can add global push rule for content
|
|
|
|
New rules appear before old rules by default
|
|
|
|
Can add global push rule before an existing rule
|
|
|
|
Can add global push rule after an existing rule
|
|
|
|
Can delete a push rule
|
|
|
|
Can disable a push rule
|
|
|
|
Adding the same push rule twice is idempotent
|
|
|
|
Can change the actions of default rules
|
|
|
|
Can change the actions of a user specified rule
|
|
|
|
Adding a push rule wakes up an incremental /sync
|
|
|
|
Disabling a push rule wakes up an incremental /sync
|
|
|
|
Enabling a push rule wakes up an incremental /sync
|
|
|
|
Setting actions for a push rule wakes up an incremental /sync
|
|
|
|
Can enable/disable default rules
|
|
|
|
Trying to add push rule with missing template fails with 400
|
|
|
|
Trying to add push rule with missing rule_id fails with 400
|
|
|
|
Trying to add push rule with empty rule_id fails with 400
|
|
|
|
Trying to add push rule with invalid template fails with 400
|
|
|
|
Trying to add push rule with rule_id with slashes fails with 400
|
|
|
|
Trying to add push rule with override rule without conditions fails with 400
|
|
|
|
Trying to add push rule with underride rule without conditions fails with 400
|
|
|
|
Trying to add push rule with condition without kind fails with 400
|
|
|
|
Trying to add push rule with content rule without pattern fails with 400
|
|
|
|
Trying to add push rule with no actions fails with 400
|
|
|
|
Trying to add push rule with invalid action fails with 400
|
|
|
|
Trying to add push rule with invalid attr fails with 400
|
|
|
|
Trying to add push rule with invalid value for enabled fails with 400
|
|
|
|
Trying to get push rules with no trailing slash fails with 400
|
|
|
|
Trying to get push rules with scope without trailing slash fails with 400
|
|
|
|
Trying to get push rules with template without tailing slash fails with 400
|
|
|
|
Trying to get push rules with unknown scope fails with 400
|
|
|
|
Trying to get push rules with unknown template fails with 400
|
|
|
|
Trying to get push rules with unknown attribute fails with 400
|
|
|
|
Getting push rules doesn't corrupt the cache SYN-390
|
|
|
|
Test that a message is pushed
|
|
|
|
Invites are pushed
|
|
|
|
Rooms with names are correctly named in pushes
|
|
|
|
Rooms with canonical alias are correctly named in pushed
|
|
|
|
Rooms with many users are correctly pushed
|
|
|
|
Don't get pushed for rooms you've muted
|
|
|
|
Rejected events are not pushed
|
|
|
|
Test that rejected pushers are removed.
|
|
|
|
Trying to add push rule with no scope fails with 400
|
|
|
|
Trying to add push rule with invalid scope fails with 400
|
2022-01-21 15:59:47 +01:00
|
|
|
Forward extremities remain so even after the next events are populated as outliers
|
2022-02-08 18:13:38 +01:00
|
|
|
uploading self-signing key notifies over federation
|
2022-02-09 13:11:43 +01:00
|
|
|
uploading signed devices gets propagated over federation
|
2022-02-21 17:12:22 +01:00
|
|
|
Device list doesn't change if remote server is down
|
|
|
|
/context/ on joined room works
|
|
|
|
/context/ on non world readable room does not work
|
|
|
|
/context/ returns correct number of events
|
2022-03-01 15:39:56 +01:00
|
|
|
GET /rooms/:room_id/messages lazy loads members correctly
|
2022-02-22 17:34:53 +01:00
|
|
|
Can query remote device keys using POST after notification
|
|
|
|
Device deletion propagates over federation
|
|
|
|
Get left notifs in sync and /keys/changes when other user leaves
|
2022-02-22 16:50:04 +01:00
|
|
|
Remote banned user is kicked and may not rejoin until unbanned
|
2022-02-25 14:33:02 +01:00
|
|
|
registration remembers parameters
|
|
|
|
registration accepts non-ascii passwords
|
|
|
|
registration with inhibit_login inhibits login
|
2022-03-01 17:39:57 +01:00
|
|
|
The operation must be consistent through an interactive authentication session
|
|
|
|
Multiple calls to /sync should not cause 500 errors
|
2022-03-07 10:37:04 +01:00
|
|
|
Canonical alias can be set
|
|
|
|
Canonical alias can include alt_aliases
|
|
|
|
Can delete canonical alias
|
2022-03-07 18:14:08 +01:00
|
|
|
AS can make room aliases
|
2022-03-14 20:04:24 +01:00
|
|
|
/context/ with lazy_load_members filter works
|
2022-04-05 11:04:08 +02:00
|
|
|
/upgrade creates a new room
|
|
|
|
/upgrade should preserve room visibility for public rooms
|
|
|
|
/upgrade should preserve room visibility for private rooms
|
|
|
|
/upgrade copies the power levels to the new room
|
|
|
|
/upgrade preserves the power level of the upgrading user in old and new rooms
|
|
|
|
/upgrade copies important state to the new room
|
|
|
|
/upgrade copies ban events to the new room
|
|
|
|
local user has push rules copied to upgraded room
|
|
|
|
remote user has push rules copied to upgraded room
|
|
|
|
/upgrade moves aliases to the new room
|
|
|
|
/upgrade preserves room federation ability
|
|
|
|
/upgrade restricts power levels in the old room
|
|
|
|
/upgrade restricts power levels in the old room when the old PLs are unusual
|
|
|
|
/upgrade to an unknown version is rejected
|
|
|
|
/upgrade is rejected if the user can't send state events
|
|
|
|
/upgrade of a bogus room fails gracefully
|
|
|
|
Cannot send tombstone event that points to the same room
|
2022-04-01 17:14:38 +02:00
|
|
|
Room summary counts change when membership changes
|
2022-04-06 13:11:19 +02:00
|
|
|
GET /presence/:user_id/status fetches initial status
|
|
|
|
PUT /presence/:user_id/status updates my presence
|
|
|
|
Presence change reports an event to myself
|
|
|
|
Existing members see new members' presence
|
|
|
|
Get presence for newly joined members in incremental sync
|
|
|
|
User sees their own presence in a sync
|
|
|
|
User sees updates to presence from other users in the incremental sync.
|
|
|
|
Presence changes are reported to local room members
|
|
|
|
Presence changes are also reported to remote room members
|
|
|
|
Presence changes to UNAVAILABLE are reported to local room members
|
|
|
|
Presence changes to UNAVAILABLE are reported to remote room members
|
|
|
|
New federated private chats get full presence information (SYN-115)
|
2022-04-05 11:04:08 +02:00
|
|
|
/upgrade copies >100 power levels to the new room
|
2022-04-05 12:49:29 +02:00
|
|
|
Room state after a rejected message event is the same as before
|
2022-04-07 16:08:19 +02:00
|
|
|
Room state after a rejected state event is the same as before
|
|
|
|
Ignore user in existing room
|
|
|
|
Ignore invite in full sync
|
2022-04-11 09:05:23 +02:00
|
|
|
Ignore invite in incremental sync
|
|
|
|
A filtered timeline reaches its limit
|
2022-04-13 13:16:02 +02:00
|
|
|
A change to displayname should not result in a full state sync
|
2022-04-19 10:46:45 +02:00
|
|
|
Can fetch images in room
|
|
|
|
The only membership state included in an initial sync is for all the senders in the timeline
|
|
|
|
The only membership state included in an incremental sync is for senders in the timeline
|
|
|
|
Old members are included in gappy incr LL sync if they start speaking
|
|
|
|
We do send redundant membership state across incremental syncs if asked
|
|
|
|
Rejecting invite over federation doesn't break incremental /sync
|
|
|
|
Gapped incremental syncs include all state changes
|
|
|
|
Old leaves are present in gapped incremental syncs
|
|
|
|
Leaves are present in non-gapped incremental syncs
|
2022-04-19 11:48:32 +02:00
|
|
|
Members from the gap are included in gappy incr LL sync
|
2022-04-25 19:05:01 +02:00
|
|
|
Presence can be set from sync
|
|
|
|
/state returns M_NOT_FOUND for a rejected message event
|
|
|
|
/state_ids returns M_NOT_FOUND for a rejected message event
|
|
|
|
/state returns M_NOT_FOUND for a rejected state event
|
2022-04-26 10:28:41 +02:00
|
|
|
/state_ids returns M_NOT_FOUND for a rejected state event
|
2022-04-26 10:53:17 +02:00
|
|
|
PUT /rooms/:room_id/redact/:event_id/:txn_id is idempotent
|
|
|
|
Unnamed room comes with a name summary
|
|
|
|
Named room comes with just joined member count summary
|
2022-06-03 06:43:51 +02:00
|
|
|
Room summary only has 5 heroes
|
2022-06-09 12:26:48 +02:00
|
|
|
registration is idempotent, with username specified
|
2022-06-03 06:43:51 +02:00
|
|
|
Setting state twice is idempotent
|
|
|
|
Joining room twice is idempotent
|
2022-06-09 12:26:48 +02:00
|
|
|
Inbound federation can return missing events for shared visibility
|
2022-07-14 14:51:00 +02:00
|
|
|
Inbound federation ignores redactions from invalid servers room > v3
|
2022-08-11 18:23:35 +02:00
|
|
|
Joining room twice is idempotent
|
|
|
|
Getting messages going forward is limited for a departed room (SPEC-216)
|
|
|
|
m.room.history_visibility == "shared" allows/forbids appropriately for Guest users
|
|
|
|
m.room.history_visibility == "invited" allows/forbids appropriately for Guest users
|
|
|
|
m.room.history_visibility == "default" allows/forbids appropriately for Guest users
|
|
|
|
m.room.history_visibility == "shared" allows/forbids appropriately for Real users
|
|
|
|
m.room.history_visibility == "invited" allows/forbids appropriately for Real users
|
|
|
|
m.room.history_visibility == "default" allows/forbids appropriately for Real users
|
|
|
|
Guest users can sync from world_readable guest_access rooms if joined
|
|
|
|
Guest users can sync from shared guest_access rooms if joined
|
|
|
|
Guest users can sync from invited guest_access rooms if joined
|
|
|
|
Guest users can sync from joined guest_access rooms if joined
|
|
|
|
Guest users can sync from default guest_access rooms if joined
|
|
|
|
Real users can sync from world_readable guest_access rooms if joined
|
|
|
|
Real users can sync from shared guest_access rooms if joined
|
|
|
|
Real users can sync from invited guest_access rooms if joined
|
|
|
|
Real users can sync from joined guest_access rooms if joined
|
|
|
|
Real users can sync from default guest_access rooms if joined
|
|
|
|
Only see history_visibility changes on boundaries
|
|
|
|
Current state appears in timeline in private history
|
|
|
|
Current state appears in timeline in private history with many messages before
|
|
|
|
Local users can peek into world_readable rooms by room ID
|
2022-08-12 13:33:31 +02:00
|
|
|
Newly joined room includes presence in incremental sync
|
|
|
|
User in private room doesn't appear in user directory
|
|
|
|
User joining then leaving public room appears and dissappears from directory
|
|
|
|
User in remote room doesn't appear in user directory after server left room
|
2022-09-07 11:44:27 +02:00
|
|
|
User in shared private room does appear in user directory until leave
|
2022-10-10 15:38:00 +02:00
|
|
|
Existing members see new member's presence
|