@@ -16,18 +16,34 @@ func TestJWT(t *testing.T) {
1616 const issuer = "outpost"
1717 const jwtKey = "supersecret"
1818 const tenantID = "tenantID"
19+ const deploymentID = "deployment123"
1920 var signingMethod = jwt .SigningMethodHS256
2021
2122 t .Run ("should generate a new jwt token" , func (t * testing.T ) {
2223 t .Parallel ()
23- token , err := apirouter .JWT .New (jwtKey , tenantID )
24+ token , err := apirouter .JWT .New (jwtKey , apirouter. JWTClaims { TenantID : tenantID } )
2425 assert .Nil (t , err )
2526 assert .NotEqual (t , "" , token )
2627 })
2728
29+ t .Run ("should generate a new jwt token with deployment_id" , func (t * testing.T ) {
30+ t .Parallel ()
31+ token , err := apirouter .JWT .New (jwtKey , apirouter.JWTClaims {
32+ TenantID : tenantID ,
33+ DeploymentID : deploymentID ,
34+ })
35+ assert .Nil (t , err )
36+ assert .NotEqual (t , "" , token )
37+
38+ // Verify deployment_id is in the token
39+ claims , err := apirouter .JWT .Extract (jwtKey , token )
40+ assert .Nil (t , err )
41+ assert .Equal (t , deploymentID , claims .DeploymentID )
42+ })
43+
2844 t .Run ("should verify a valid jwt token" , func (t * testing.T ) {
2945 t .Parallel ()
30- token , err := apirouter .JWT .New (jwtKey , tenantID )
46+ token , err := apirouter .JWT .New (jwtKey , apirouter. JWTClaims { TenantID : tenantID } )
3147 if err != nil {
3248 t .Fatal (err )
3349 }
@@ -36,24 +52,51 @@ func TestJWT(t *testing.T) {
3652 assert .True (t , valid )
3753 })
3854
39- t .Run ("should extract tenantID from valid token" , func (t * testing.T ) {
55+ t .Run ("should extract claims from valid token" , func (t * testing.T ) {
4056 t .Parallel ()
41- token , err := apirouter .JWT .New (jwtKey , tenantID )
57+ token , err := apirouter .JWT .New (jwtKey , apirouter. JWTClaims { TenantID : tenantID } )
4258 if err != nil {
4359 t .Fatal (err )
4460 }
45- extractedTenantID , err := apirouter .JWT .ExtractTenantID (jwtKey , token )
61+ claims , err := apirouter .JWT .Extract (jwtKey , token )
4662 assert .Nil (t , err )
47- assert .Equal (t , tenantID , extractedTenantID )
63+ assert .Equal (t , tenantID , claims .TenantID )
64+ assert .Equal (t , "" , claims .DeploymentID )
4865 })
4966
50- t .Run ("should fail to extract tenantID from invalid token" , func (t * testing.T ) {
67+ t .Run ("should fail to extract claims from invalid token" , func (t * testing.T ) {
5168 t .Parallel ()
52- _ , err := apirouter .JWT .ExtractTenantID (jwtKey , "invalid_token" )
69+ _ , err := apirouter .JWT .Extract (jwtKey , "invalid_token" )
5370 assert .ErrorIs (t , err , apirouter .ErrInvalidToken )
5471 })
5572
56- t .Run ("should fail to extract tenantID from token with invalid issuer" , func (t * testing.T ) {
73+ t .Run ("should extract all claims from valid token" , func (t * testing.T ) {
74+ t .Parallel ()
75+ token , err := apirouter .JWT .New (jwtKey , apirouter.JWTClaims {
76+ TenantID : tenantID ,
77+ DeploymentID : deploymentID ,
78+ })
79+ if err != nil {
80+ t .Fatal (err )
81+ }
82+ claims , err := apirouter .JWT .Extract (jwtKey , token )
83+ assert .Nil (t , err )
84+ assert .Equal (t , tenantID , claims .TenantID )
85+ assert .Equal (t , deploymentID , claims .DeploymentID )
86+ })
87+
88+ t .Run ("should return empty deployment_id when not in token" , func (t * testing.T ) {
89+ t .Parallel ()
90+ token , err := apirouter .JWT .New (jwtKey , apirouter.JWTClaims {TenantID : tenantID })
91+ if err != nil {
92+ t .Fatal (err )
93+ }
94+ claims , err := apirouter .JWT .Extract (jwtKey , token )
95+ assert .Nil (t , err )
96+ assert .Equal (t , "" , claims .DeploymentID )
97+ })
98+
99+ t .Run ("should fail to extract claims from token with invalid issuer" , func (t * testing.T ) {
57100 t .Parallel ()
58101 now := time .Now ()
59102 jwtToken := jwt .NewWithClaims (signingMethod , jwt.MapClaims {
@@ -66,7 +109,7 @@ func TestJWT(t *testing.T) {
66109 if err != nil {
67110 t .Fatal (err )
68111 }
69- _ , err = apirouter .JWT .ExtractTenantID (jwtKey , token )
112+ _ , err = apirouter .JWT .Extract (jwtKey , token )
70113 assert .ErrorIs (t , err , apirouter .ErrInvalidToken )
71114 })
72115
0 commit comments