Skip to content

MSC4140: test finalised delayed events - #929

Draft
barodeur wants to merge 1 commit into
matrix-org:mainfrom
barodeur:msc4140-finalised-delayed-events
Draft

barodeur wants to merge 1 commit into
matrix-org:mainfrom
barodeur:msc4140-finalised-delayed-events

Conversation

@barodeur

Copy link
Copy Markdown
Contributor

This is a sister PR to element-hq/synapse#19038

Supersedes #818

MSC4140 keeps delayed events once they are finalised: sent, cancelled by the user, or cancelled due to an error. GET /delayed_events/{delay_id} describes the outcome in a finalised object, and a management action on a finalised delayed event succeeds if it matches the outcome, or answers 409 if it conflicts with it.

This PR adds tests to ensure

  • the lookup of a finalised delayed event has
    • finalised.event_id set to the event seen in the room, and no error, once sent on timeout
    • neither event_id nor error once cancelled, and no finalised object while still scheduled
    • finalised.error with an errcode, and no event_id, once it failed to be sent because its sender left the room
  • a repeated send on a sent delayed event, or cancel on a cancelled one, returns 200, as does cancel on one that failed to be sent
  • cancel on a sent delayed event, and send or restart on a cancelled one, return 409
  • restart on a sent delayed event returns 409; MSC4140 leaves this case open, and MSC4542 proposes a 409
  • another user looking up a finalised delayed event gets a 404
  • GET /delayed_events still lists scheduled delayed events only

Like the other tests in tests/msc4140, these tests schedule delayed events with the org.matrix.msc4140.delay query parameter, so that they do not depend on the dedicated endpoint.

These tests need the updates in element-hq/synapse#20229, which builds on element-hq/synapse#19038

Signed-off-by: Paul Chobert paul@chobert.fr

MSC4140 keeps delayed events once they are finalised: sent, cancelled
by the user, or cancelled due to an error. `GET /delayed_events/{delay_id}`
describes the outcome in a `finalised` object, with `finalised_ts`, plus
`event_id` if the event was sent or `error` if sending it failed. A
management action on a finalised delayed event succeeds if it matches
the outcome, and answers 409 if it conflicts with it.

Add tests for:
- the lookup of a delayed event sent on timeout, cancelled, or that
  failed to be sent because its sender left the room
- a 200 for a repeated `send` or `cancel`, including `cancel` on a
  delayed event that failed to be sent
- a 409 for `cancel` on a sent delayed event, and for `send` or
  `restart` on a cancelled one
- a 409 for `restart` on a sent delayed event, which MSC4140 leaves
  open and MSC4542 proposes
- a 404 when another user looks up a finalised delayed event
- the bulk `GET /delayed_events` still listing scheduled delayed events
  only

Signed-off-by: Paul Chobert <paul@chobert.fr>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant