2.1 KiB
2.1 KiB
Testing
Dieses Projekt ist so aufgebaut, dass sich die wichtigsten TURN-Pfade als Unit- und Integrationstests ausführen lassen.
Schnellstart
- Alle Tests:
cargo test - Mit weniger Output:
cargo test -q - Mit Logs (Beispiele):
RUST_LOG=warn,niom_turn=info cargo test -- --nocapture
Hinweis: Die Integrationstests initialisieren tracing über die Helpers in tests/support.
Was wird getestet?
STUN RFC-Interop (FINGERPRINT)
- Unit-Tests prüfen, dass der Server
FINGERPRINTan Responses anhängt und dass die CRC32/XOR Validierung fehlschlägt, wenn die Nachricht manipuliert wird.
Siehe: Unit-Tests in src/stun.rs.
STUN RFC-Interop (MESSAGE-INTEGRITY)
- Unit-Tests prüfen
MESSAGE-INTEGRITYValidierung (inkl. Fall „MI + nachfolgendes FINGERPRINT“). - UDP-Integrationstests prüfen, dass Responses nach erfolgreicher Authentisierung
MESSAGE-INTEGRITYenthalten und validierbar sind.
UDP (turn:)
- Auth-Challenge (401 + NONCE) und erfolgreicher Allocate
- Refresh mit
LIFETIME=0entfernt Allocation - CreatePermission + Send → Peer erhält UDP Payload über Relay
Siehe: tests/udp_turn.rs sowie die thematischen Ordner in tests/.
TLS (turns:) / Stream-basierte Data-Plane
- Allocate/Refresh über TLS-Stream
- (Neu) Data-Plane Rückweg Peer→Client über denselben TLS-Stream (Data-Indication oder ChannelData)
Siehe: tests/tls_turn.rs und tests/tls_data_plane.rs.
TCP (turn:?transport=tcp) / Stream-basierte Data-Plane
- (Neu) Allocate/CreatePermission/Send über TCP
- (Neu) Peer→Client Rückweg als STUN Data Indication über TCP
- (Neu) ChannelBind + ChannelData in beide Richtungen
Siehe: tests/tcp_turn.rs.
Test-Hilfen
- STUN/TURN Builder:
tests/support/stun_builders.rs - Stream-Framing (STUN + ChannelData über TCP/TLS):
tests/support/stream.rs - TLS Test-Certs:
tests/support/tls.rs
Erweiterungsideen (nächste sinnvolle Abdeckung)
- Split-Reads/Writes (Frames in mehreren TCP Reads) als Regressionstest
- IPv6 Encode/Decode Tests für XOR-ADDRESS Varianten
- Negative Tests: Peer nicht permitted, Channel ohne Bind, Allocation Timeout