61 lines
2.1 KiB
Markdown
61 lines
2.1 KiB
Markdown
# 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 `FINGERPRINT` an Responses anhängt und dass die CRC32/XOR Validierung fehlschlägt, wenn die Nachricht manipuliert wird.
|
|
|
|
Siehe: Unit-Tests in [src/stun.rs](../src/stun.rs).
|
|
|
|
### STUN RFC-Interop (MESSAGE-INTEGRITY)
|
|
|
|
- Unit-Tests prüfen `MESSAGE-INTEGRITY` Validierung (inkl. Fall „MI + nachfolgendes FINGERPRINT“).
|
|
- UDP-Integrationstests prüfen, dass Responses nach erfolgreicher Authentisierung `MESSAGE-INTEGRITY` enthalten und validierbar sind.
|
|
|
|
### UDP (turn:)
|
|
|
|
- Auth-Challenge (401 + NONCE) und erfolgreicher Allocate
|
|
- Refresh mit `LIFETIME=0` entfernt 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
|