1.8 KiB
Ricochet Testing Specification
This documents outlines each scenario this library must correctly handle and links it to the automated test that exercises that functionality.
Version Negotiation
Open
File: iricochet_test.go
This stub test exercises the Open() function. TestRicochetOpen
, and in cases where the server returns a bad version, TestRicochetOpenWithError
, and where there is no server at all TestRicochetOpenWithNoServer
- in both cases Open should return an error.
Inbound
File: 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. TestNegotiateInboundVersions
Outbound
File: 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
, TestInvalidServer
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. TestOutboundVersionNegotiation