mirror of
https://github.com/portainer/portainer.git
synced 2025-07-19 13:29:41 +02:00
* add updateSettingsToDB28 func and test * update DBversion const * migration func naming modification * feat(oauth): add sso, hide internal auth teaser and logout options. (#5039) * cleanup and make helper func for unit testing * dbversion update * feat(publicSettings): public settings response modification for OAuth SSO EE-608 (#5062) * feat(oauth): updated logout logic with logoutUrl. (#5064) * add exclusive token generation for OAuth * swagger annotation revision * add unit test * updates based on tech review feedback * feat(oauth): updated oauth settings model * feat(oauth): added oauth logout url * feat(oauth): fixed SSO toggle and logout issue. * set SSO to ON by default * update migrator unit test * set SSO to true by default for new instance * prevent applying the SSO logout url to the initial admin user Co-authored-by: fhanportainer <79428273+fhanportainer@users.noreply.github.com> Co-authored-by: Felix Han <felix.han@portainer.io>
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package jwt
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/dgrijalva/jwt-go"
|
|
portainer "github.com/portainer/portainer/api"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGenerateSignedToken(t *testing.T) {
|
|
svc, err := NewService("24h")
|
|
assert.NoError(t, err, "failed to create a copy of service")
|
|
|
|
token := &portainer.TokenData{
|
|
Username: "Joe",
|
|
ID: 1,
|
|
Role: 1,
|
|
}
|
|
expirtationTime := time.Now().Add(1 * time.Hour)
|
|
|
|
generatedToken, err := svc.generateSignedToken(token, &expirtationTime)
|
|
assert.NoError(t, err, "failed to generate a signed token")
|
|
|
|
parsedToken, err := jwt.ParseWithClaims(generatedToken, &claims{}, func(token *jwt.Token) (interface{}, error) {
|
|
return svc.secret, nil
|
|
})
|
|
assert.NoError(t, err, "failed to parse generated token")
|
|
|
|
tokenClaims, ok := parsedToken.Claims.(*claims)
|
|
assert.Equal(t, true, ok, "failed to claims out of generated ticket")
|
|
|
|
assert.Equal(t, token.Username, tokenClaims.Username)
|
|
assert.Equal(t, int(token.ID), tokenClaims.UserID)
|
|
assert.Equal(t, int(token.Role), tokenClaims.Role)
|
|
assert.Equal(t, expirtationTime.Unix(), tokenClaims.ExpiresAt)
|
|
}
|