43 lines
940 B
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)
|
|
}
|