41 lines
1.1 KiB
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")
|
|
}
|
|
}
|