Path: blob/main/components/public-api-server/pkg/auth/session_jwt_test.go
2500 views
// Copyright (c) 2023 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package auth56import (7"testing"8"time"910"github.com/gitpod-io/gitpod/public-api-server/pkg/jws"11"github.com/gitpod-io/gitpod/public-api-server/pkg/jws/jwstest"12"github.com/golang-jwt/jwt/v5"13"github.com/google/uuid"14"github.com/stretchr/testify/require"15)1617func TestNewSessionJWT(t *testing.T) {18var (19subject = uuid.New()20issuer = "some-issuer"21issuedAt = time.Now()22expiry = issuedAt.Add(time.Hour)23)24token := NewSessionJWT(subject, issuer, issuedAt, expiry)25require.Equal(t, &SessionClaims{26RegisteredClaims: jwt.RegisteredClaims{27Issuer: issuer,28Subject: subject.String(),29ExpiresAt: jwt.NewNumericDate(expiry),30IssuedAt: jwt.NewNumericDate(issuedAt),31},32}, token.Claims)33}3435func TestVerifySessionJWT(t *testing.T) {36var (37subject = uuid.New()38issuer = "some-issuer"39issuedAt = time.Now()40expiry = issuedAt.Add(time.Hour)41)42token := NewSessionJWT(subject, issuer, issuedAt, expiry)4344keyset := jwstest.GenerateKeySet(t)45rsa256, err := jws.NewRSA256(keyset)46require.NoError(t, err)4748signed, err := rsa256.Sign(token)49require.NoError(t, err)5051claims, err := VerifySessionJWT(signed, rsa256, issuer)52require.NoError(t, err)53require.Equal(t, &SessionClaims{54RegisteredClaims: jwt.RegisteredClaims{55Issuer: issuer,56Subject: subject.String(),57ExpiresAt: jwt.NewNumericDate(expiry),58IssuedAt: jwt.NewNumericDate(issuedAt),59},60}, claims)61}626364