Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/public-api-server/pkg/auth/session_jwt_test.go
2500 views
1
// Copyright (c) 2023 Gitpod GmbH. All rights reserved.
2
// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package auth
6
7
import (
8
"testing"
9
"time"
10
11
"github.com/gitpod-io/gitpod/public-api-server/pkg/jws"
12
"github.com/gitpod-io/gitpod/public-api-server/pkg/jws/jwstest"
13
"github.com/golang-jwt/jwt/v5"
14
"github.com/google/uuid"
15
"github.com/stretchr/testify/require"
16
)
17
18
func TestNewSessionJWT(t *testing.T) {
19
var (
20
subject = uuid.New()
21
issuer = "some-issuer"
22
issuedAt = time.Now()
23
expiry = issuedAt.Add(time.Hour)
24
)
25
token := NewSessionJWT(subject, issuer, issuedAt, expiry)
26
require.Equal(t, &SessionClaims{
27
RegisteredClaims: jwt.RegisteredClaims{
28
Issuer: issuer,
29
Subject: subject.String(),
30
ExpiresAt: jwt.NewNumericDate(expiry),
31
IssuedAt: jwt.NewNumericDate(issuedAt),
32
},
33
}, token.Claims)
34
}
35
36
func TestVerifySessionJWT(t *testing.T) {
37
var (
38
subject = uuid.New()
39
issuer = "some-issuer"
40
issuedAt = time.Now()
41
expiry = issuedAt.Add(time.Hour)
42
)
43
token := NewSessionJWT(subject, issuer, issuedAt, expiry)
44
45
keyset := jwstest.GenerateKeySet(t)
46
rsa256, err := jws.NewRSA256(keyset)
47
require.NoError(t, err)
48
49
signed, err := rsa256.Sign(token)
50
require.NoError(t, err)
51
52
claims, err := VerifySessionJWT(signed, rsa256, issuer)
53
require.NoError(t, err)
54
require.Equal(t, &SessionClaims{
55
RegisteredClaims: jwt.RegisteredClaims{
56
Issuer: issuer,
57
Subject: subject.String(),
58
ExpiresAt: jwt.NewNumericDate(expiry),
59
IssuedAt: jwt.NewNumericDate(issuedAt),
60
},
61
}, claims)
62
}
63
64