# Register endpoints implemented GET /register yields a set of flows POST /register can create a user POST /register downcases capitals in usernames 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 ''' # Login endpoints implemented GET /login yields a set of flows 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 # Room creation endpoints implemented POST /createRoom makes a private room POST /createRoom makes a private room with invites GET /rooms/:room_id/state/m.room.member/:user_id fetches my membership POST /join/:room_id can join a room POST /rooms/:room_id/join can join a room POST /rooms/:room_id/leave can leave a room POST /rooms/:room_id/invite can send an invite 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 Both GET and PUT work Room creation reports m.room.create to myself Room creation reports m.room.member to myself Version responds 200 OK with valid structure PUT /profile/:user_id/displayname sets my name GET /profile/:user_id/displayname publicly accessible GET /device/{deviceId} gives a 404 for unknown devices PUT /device/{deviceId} gives a 404 for unknown devices After deactivating account, can't log in with an email Can create filter Should reject keys claiming to belong to a different user Can add account data Checking local federation server Can read configuration endpoint AS cannot create users outside its own namespace Changing the actions of an unknown default rule fails with 404 Changing the actions of an unknown rule fails with 404 Trying to add push rule with invalid scope 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 get push rules with unknown rule_id fails with 404 GET /events with non-numeric 'limit' GET /events with negative 'limit' GET /events with non-numeric 'timeout' Getting push rules doesn't corrupt the cache SYN-390 GET /publicRooms lists newly-created room PUT /directory/room/:room_alias creates alias 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 query for user with no keys returns empty key dict Can upload without a file name Can upload with ASCII file name 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 POST /rooms/:room_id/ban can ban a user