mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-09-08 09:52:04 +00:00
Migrate away from goblin (#4624)
Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Robert Kaussow <mail@thegeeklab.de>
This commit is contained in:
@@ -3,60 +3,51 @@ package token_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/franela/goblin"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v3/shared/token"
|
||||
)
|
||||
|
||||
func TestToken(t *testing.T) {
|
||||
gin.SetMode(gin.TestMode)
|
||||
const jwtSecret = "secret-to-sign-the-token"
|
||||
|
||||
g := goblin.Goblin(t)
|
||||
g.Describe("Token", func() {
|
||||
jwtSecret := "secret-to-sign-the-token"
|
||||
func TestTokenValid(t *testing.T) {
|
||||
_token := token.New(token.UserToken)
|
||||
_token.Set("user-id", "1")
|
||||
signedToken, err := _token.Sign(jwtSecret)
|
||||
assert.NoError(t, err)
|
||||
|
||||
g.It("should parse a valid token", func() {
|
||||
_token := token.New(token.UserToken)
|
||||
_token.Set("user-id", "1")
|
||||
signedToken, err := _token.Sign(jwtSecret)
|
||||
assert.NoError(g, err)
|
||||
|
||||
parsed, err := token.Parse([]token.Type{token.UserToken}, signedToken, func(_ *token.Token) (string, error) {
|
||||
return jwtSecret, nil
|
||||
})
|
||||
|
||||
assert.NoError(g, err)
|
||||
assert.NotNil(g, parsed)
|
||||
assert.Equal(g, "1", parsed.Get("user-id"))
|
||||
})
|
||||
|
||||
g.It("should fail to parse a token with a wrong type", func() {
|
||||
_token := token.New(token.UserToken)
|
||||
_token.Set("user-id", "1")
|
||||
signedToken, err := _token.Sign(jwtSecret)
|
||||
assert.NoError(g, err)
|
||||
|
||||
_, err = token.Parse([]token.Type{token.AgentToken}, signedToken, func(_ *token.Token) (string, error) {
|
||||
return jwtSecret, nil
|
||||
})
|
||||
|
||||
assert.ErrorIs(g, err, jwt.ErrInvalidType)
|
||||
})
|
||||
|
||||
g.It("should fail to parse a token with a wrong secret", func() {
|
||||
_token := token.New(token.UserToken)
|
||||
_token.Set("user-id", "1")
|
||||
signedToken, err := _token.Sign(jwtSecret)
|
||||
assert.NoError(g, err)
|
||||
|
||||
_, err = token.Parse([]token.Type{token.UserToken}, signedToken, func(_ *token.Token) (string, error) {
|
||||
return "this-is-a-wrong-secret", nil
|
||||
})
|
||||
|
||||
assert.ErrorIs(g, err, jwt.ErrSignatureInvalid)
|
||||
})
|
||||
parsed, err := token.Parse([]token.Type{token.UserToken}, signedToken, func(_ *token.Token) (string, error) {
|
||||
return jwtSecret, nil
|
||||
})
|
||||
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, parsed)
|
||||
assert.Equal(t, "1", parsed.Get("user-id"))
|
||||
}
|
||||
|
||||
func TestTokenWrongType(t *testing.T) {
|
||||
_token := token.New(token.UserToken)
|
||||
_token.Set("user-id", "1")
|
||||
signedToken, err := _token.Sign(jwtSecret)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = token.Parse([]token.Type{token.AgentToken}, signedToken, func(_ *token.Token) (string, error) {
|
||||
return jwtSecret, nil
|
||||
})
|
||||
|
||||
assert.ErrorIs(t, err, jwt.ErrInvalidType)
|
||||
}
|
||||
|
||||
func TestTokenWrongSecret(t *testing.T) {
|
||||
_token := token.New(token.UserToken)
|
||||
_token.Set("user-id", "1")
|
||||
signedToken, err := _token.Sign(jwtSecret)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = token.Parse([]token.Type{token.UserToken}, signedToken, func(_ *token.Token) (string, error) {
|
||||
return "this-is-a-wrong-secret", nil
|
||||
})
|
||||
|
||||
assert.ErrorIs(t, err, jwt.ErrSignatureInvalid)
|
||||
}
|
||||
|
Reference in New Issue
Block a user