package server import ( "testing" "time" ) func TestStreamTokenRoundtrip(t *testing.T) { secret := "s3cr3t" tok, err := signStreamToken(secret, "live-demo", "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-demo" || claims.Role != "publish" { t.Fatalf("claims = %+v", claims) } } func TestStreamTokenRejects(t *testing.T) { secret := "s3cr3t" tok, _ := signStreamToken(secret, "live-demo", "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") } }