live-sfu-demo/internal/server/token_test.go

41 lines
1.1 KiB
Go

package server
import (
"testing"
"time"
)
func TestStreamTokenRoundtrip(t *testing.T) {
secret := "s3cr3t"
tok, err := signStreamToken(secret, "live-test", "id1", "publish", time.Hour)
if err != nil {
t.Fatalf("sign: %v", err)
}
claims, err := verifyStreamToken(secret, tok)
if err != nil {
t.Fatalf("verify: %v", err)
}
if claims.Room != "live-test" || claims.Role != "publish" {
t.Fatalf("claims = %+v", claims)
}
}
func TestStreamTokenRejects(t *testing.T) {
secret := "s3cr3t"
tok, _ := signStreamToken(secret, "live-test", "id1", "publish", time.Hour)
if _, err := verifyStreamToken("other", tok); err == nil {
t.Fatal("expected reject on wrong secret")
}
if _, err := verifyStreamToken(secret, tok+"x"); err == nil {
t.Fatal("expected reject on tampered token")
}
exp, _ := signStreamToken(secret, "r", "i", "publish", -time.Hour)
if _, err := verifyStreamToken(secret, exp); err == nil {
t.Fatal("expected reject on expired token")
}
if _, err := verifyStreamToken(secret, "not.a.jwt"); err == nil {
t.Fatal("expected reject on malformed token")
}
}