mirror of
https://github.com/hackdiaz-dev/free-turn-proxy.git
synced 2026-10-12 09:41:53 +02:00
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package wire
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewClientCodec(t *testing.T) {
|
|
t.Parallel()
|
|
key := make([]byte, 32)
|
|
if _, err := rand.Read(key); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// none/"" -> обфускация выключена (nil codec, без ошибки).
|
|
for _, p := range []string{ProfileNone, ""} {
|
|
c, err := NewClientCodec(p, nil)
|
|
if err != nil || c != nil {
|
|
t.Errorf("NewClientCodec(%q) = (%v, %v), want (nil, nil)", p, c, err)
|
|
}
|
|
}
|
|
|
|
// rtpopus / rtpopus2 / rtpopus3 -> валидный codec с осмысленными размерами.
|
|
for _, p := range []string{ProfileRTPOpus, ProfileRTPOpus2, ProfileRTPOpus3} {
|
|
c, err := NewClientCodec(p, key)
|
|
if err != nil || c == nil {
|
|
t.Fatalf("NewClientCodec(%q) = (%v, %v), want non-nil codec", p, c, err)
|
|
}
|
|
if c.HeaderLen() <= 0 || c.Overhead() <= c.HeaderLen() {
|
|
t.Errorf("%q: overhead=%d header=%d (overhead должен включать tag)", p, c.Overhead(), c.HeaderLen())
|
|
}
|
|
if c.MaxWire(100) != c.Overhead()+100 {
|
|
t.Errorf("%q: MaxWire(100)=%d, want %d", p, c.MaxWire(100), c.Overhead()+100)
|
|
}
|
|
}
|
|
|
|
// rtpopus2 несёт RTP extension -> заголовок больше, чем у v1.
|
|
v1, _ := NewClientCodec(ProfileRTPOpus, key)
|
|
v2, _ := NewClientCodec(ProfileRTPOpus2, key)
|
|
if v2.HeaderLen() <= v1.HeaderLen() {
|
|
t.Errorf("rtpopus2 header %d should exceed rtpopus %d (RTP extension)", v2.HeaderLen(), v1.HeaderLen())
|
|
}
|
|
|
|
if _, err := NewClientCodec("bogus", key); err == nil {
|
|
t.Error("NewClientCodec(bogus): want error")
|
|
}
|
|
}
|