go-blocks/middleware/middelware_test.go

43 lines
940 B
Go

package middleware
import (
"gopher-toolbox/token"
"net/http/httptest"
"testing"
"github.com/gin-gonic/gin"
"github.com/stretchr/testify/require"
)
func Test_authMiddleware(t *testing.T) {
w := httptest.NewRecorder()
c, _ := gin.CreateTestContext(w)
paseto := token.New()
user := token.UserPayload{
Username: "test",
// Permissions: map[string]bool{
// "view_customer": true,
// },
}
publicToken, error := paseto.Create(user)
require.NoError(t, error)
payload, error := paseto.Verify(publicToken)
require.NoError(t, error)
c.Request = httptest.NewRequest("GET", "/", nil)
c.Request.Header.Set("Authorization", "Bearer "+publicToken)
authorizationHeader := c.GetHeader("Authorization")
require.Equal(t, "Bearer "+publicToken, authorizationHeader)
authMW := AuthMiddleware(paseto)
authMW(c)
payloadFromMW, exists := c.Get("payload")
require.True(t, exists)
require.Equal(t, payload, payloadFromMW)
}