2018-01-01 18:55:59 +00:00
|
|
|
# Ricochet Testing Specification
|
|
|
|
|
|
|
|
This documents outlines each scenario this library must correctly handle and
|
|
|
|
links it to the automated test that exercises that functionality.
|
|
|
|
|
|
|
|
We separate this document into two sections, one for inbound connections, and the
|
|
|
|
other for outbound connections.
|
|
|
|
|
|
|
|
# Inbound
|
|
|
|
|
|
|
|
## Version Negotiation
|
|
|
|
|
2018-01-02 17:23:20 +00:00
|
|
|
File: [inbound_version_negotiation_test.go](./inbound_version_negotiation_test.go)
|
2018-01-01 18:55:59 +00:00
|
|
|
|
|
|
|
### Invalid Protocol
|
|
|
|
|
|
|
|
If the inbound listener receives:
|
|
|
|
|
|
|
|
* Less than 4 bytes (`TestBadProtcolLength`)
|
|
|
|
* The first 2 bytes are not equal ot 0x49 and 0x4D
|
|
|
|
* A number of supported Versions < 1 (`TestNoSupportedVersions`, `TestInvalidVersionList`)
|
|
|
|
|
|
|
|
Then it must close the connection.
|
|
|
|
|
|
|
|
### No Compatible Version Found
|
|
|
|
|
|
|
|
If the inbound listener does not receive a compatible version in the list of
|
|
|
|
supported versions. Then is must close the connection. `TestNoCompatibleVersions`
|
|
|
|
|
|
|
|
### Successful Version Negotiation
|
|
|
|
|
|
|
|
Assuming the inbound listener receives a valid protocol message, and that message
|
|
|
|
contains a known supported version. Then the connection should remain open.
|
|
|
|
|
|
|
|
# Outbound
|
2018-01-02 17:23:20 +00:00
|
|
|
|
|
|
|
File: [outbound_version_negotiation_test.go](./outbound_version_negotiation_test.go)
|
|
|
|
|
|
|
|
### No Compatible Version Found
|
|
|
|
|
|
|
|
If the outbound connection receives a response that does not match one of the versions
|
|
|
|
they sent out in their supporting list. Then then must close the connection `TestInvalidResponse`
|
|
|
|
|
|
|
|
|
|
|
|
### Successful Version Negotiation
|
|
|
|
|
|
|
|
Assuming the outbound connection receives a valid protocol message, and that message
|
|
|
|
contains a known supported version. Then the connection should remain open.
|
|
|
|
|