34 lines
906 B
Go
34 lines
906 B
Go
|
|
package security
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestTokenRoundTrip(t *testing.T) {
|
||
|
|
manager := NewTokenManager("01234567890123456789012345678901", time.Hour)
|
||
|
|
raw, err := manager.Issue(42, "interviewer@example.com", "interviewer")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
claims, err := manager.Parse(raw)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if claims.UserID != 42 || claims.Email != "interviewer@example.com" || claims.Role != "interviewer" {
|
||
|
|
t.Fatalf("unexpected claims: %#v", claims)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestRejectsTokenSignedWithAnotherSecret(t *testing.T) {
|
||
|
|
issuer := NewTokenManager("01234567890123456789012345678901", time.Hour)
|
||
|
|
verifier := NewTokenManager("abcdefghijklmnopqrstuvwxyz123456", time.Hour)
|
||
|
|
raw, err := issuer.Issue(1, "user@example.com", "interviewer")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if _, err := verifier.Parse(raw); err == nil {
|
||
|
|
t.Fatal("expected token validation to fail")
|
||
|
|
}
|
||
|
|
}
|