49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package logic
|
|
|
|
import "testing"
|
|
|
|
func TestAdminJWTRoundTrip(t *testing.T) {
|
|
s := NewTokenService("wyrs-admin-jwt-secret-change-in-production-2025")
|
|
tok, err := s.CreateToken(42, "ops", "SUPER_ADMIN", "users,groups,imMessages")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
claims, err := s.Parse(tok)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if claims.AdminID != 42 || claims.Type != TypeAdmin || claims.Subject != "ops" {
|
|
t.Fatalf("%+v", claims)
|
|
}
|
|
}
|
|
|
|
func TestAdminJWTRejectsWrongType(t *testing.T) {
|
|
s := NewTokenService("wyrs-admin-jwt-secret-change-in-production-2025")
|
|
tok, err := s.CreateToken(1, "x", "SUPER_ADMIN", "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
// tamper by parsing with different secret
|
|
bad := NewTokenService("other-secret-other-secret-other!!")
|
|
if _, err := bad.Parse(tok); err == nil {
|
|
t.Fatal("expected invalid")
|
|
}
|
|
}
|
|
|
|
func TestAdminJWTShortSecretAndNil(t *testing.T) {
|
|
s := NewTokenService("short")
|
|
tok, err := s.CreateToken(1, "ops", "SUPER_ADMIN", "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := s.Parse(tok); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := (*TokenService)(nil).Parse("x"); err == nil {
|
|
t.Fatal("nil parse")
|
|
}
|
|
if _, err := s.Parse(""); err == nil {
|
|
t.Fatal("empty")
|
|
}
|
|
}
|