Client Test Cases
Jump to navigation
Jump to search
This is a list of different test cases that client developers should apply to their code base.
Tool Suite
TODO: create and document an automated tool suite.
An ideal tool suite would be one of (or all of):
- A hosted component with well-defined JIDs exhibiting the test case behavior
- An XMPP component that can be self-hosted
- A set of bot scripts / tools that can connect to a given (set of) account(s)
Message Errors
A client should properly support the following cases:
- A message is rejected by the other side - display error on message, show text message describing the failure in the details
- A message is accepted by the other side (you receive a Receipt) - display normally or with an additional checkmark
- A message is accepted (Receipt), then bounced (you receive an error) - the error is probably from a stale session and should be ignored - display checkmark
- A message is bounced, then accepted - first display error, then checkmark
There is a hosted version of test 1. at xmpp:reject@yax.im
Multi User Chats
Joining
- A join is not responded to at all by the MUC
- A join is responded to with an error presence
- The join response does not contain a subject
- The join response does not contain a self-presence
- The join response neither contains a subject nor a self-presence
Staying inside
- The client gets kicked by the MUC, with or without a message
- The client gets banned by the MUC, with or without a message
- The MUC join completes, but the occupant is then silently removed, all subsequent messages get rejected (see XEP-0410)
Affiliation
- The client gets muted by the MUC, with or without a message
Other
- Another occupant sends an invalid presence to the room (I'm looking at you, old Gajim)
HTTP File Upload
A testing component could reject the file slot request IQ with different errors based on the requested file name / file size. A client developer would have a set of according files to trigger different conditions.
Jingle
TODO: all kinds of handshake failures
MAM
TODO: incomplete archive, incoherent IDs, duplicates