package api import ( "fmt" "testing" "time" ) func TestIssueAndVerifyToken(t *testing.T) { secret := "test-secret" token := issueToken(secret, time.Hour) if !verifyToken(secret, token) { t.Fatal("expected valid token") } } func TestVerifyTokenWrongSecret(t *testing.T) { token := issueToken("a", time.Hour) if verifyToken("b", token) { t.Fatal("expected invalid token for wrong secret") } } func TestVerifyTokenExpired(t *testing.T) { secret := "test-secret" exp := time.Now().Add(-time.Hour).Unix() token := fmtToken(secret, exp) if verifyToken(secret, token) { t.Fatal("expected expired token to be rejected") } } func fmtToken(secret string, exp int64) string { return fmt.Sprintf("%d.%s", exp, signToken(secret, exp)) }