Files

56 lines
1.4 KiB
Go

package middlewares
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
func TestGenerateTokenPair(t *testing.T) {
InitJWT("test-secret", 15, 24, "test-issuer")
pair, err := GenerateTokenPair(42, "demo")
if err != nil {
t.Fatal(err)
}
access, err := ParseToken(pair.AccessToken)
if err != nil {
t.Fatal(err)
}
refresh, err := ParseToken(pair.RefreshToken)
if err != nil {
t.Fatal(err)
}
if access.TokenType != TokenTypeAccess || refresh.TokenType != TokenTypeRefresh {
t.Fatalf("unexpected token types: %s, %s", access.TokenType, refresh.TokenType)
}
if access.ID == "" || refresh.ID == "" || access.ID == refresh.ID {
t.Fatal("tokens must have distinct IDs")
}
}
func TestJWTAuthFailureUsesHTTP200(t *testing.T) {
Logger = zap.NewNop()
gin.SetMode(gin.TestMode)
router := gin.New()
router.GET("/private", JWTAuth(), func(c *gin.Context) {
c.Status(http.StatusNoContent)
})
recorder := httptest.NewRecorder()
router.ServeHTTP(recorder, httptest.NewRequest(http.MethodGet, "/private", nil))
if recorder.Code != http.StatusOK {
t.Fatalf("HTTP status = %d, want 200", recorder.Code)
}
}
func TestBearerToken(t *testing.T) {
if token, err := BearerToken("Bearer abc"); err != nil || token != "abc" {
t.Fatalf("BearerToken() = %q, %v", token, err)
}
if _, err := BearerToken("abc"); err == nil {
t.Fatal("BearerToken() accepted malformed header")
}
}