libricochet-go/testing.md

36 lines
1.1 KiB
Markdown
Raw Normal View History

# 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
File: [ricochet_test.go](./inbound_version_negotiation_test.go)
### 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