[Messages] Use pending message model everywhere #277
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Propagated the use of the
BasePendingMessagesubclasses in allfunctions related to message processing.
Split the message validation function, check_message, in two parts:
parse_messagechecks that the message is semantically valid,i.e. that all the required fields are present, are of the correct
type and have sensible values.
verify_signaturechecks the signature of the message usingthe public key of the sender.
We now call parse_message as early as possible in the process.
This allows to simplify hypotheses about the presence/absence
of specific fields and allows to simplify the codebase.
One of the current issues is that the content of the message
can only be loaded conditionally (if the message has inline content).
Otherwise, we must load the content from the network. As this
operation goes beyond simple validation, we perform it later
in the flow, leading to a situation where the content of a message
is not guaranteed to be available at a given point depending
on the
item_typefield of the message.Modified tests to use the raw message classes. Removed a few tests
that tested corner cases linked to incomplete message dictionaries.