@@ -11,6 +11,7 @@ OR CONDITIONS OF ANY KIND, either express or implied.
1111package handlers
1212
1313import (
14+ "encoding/json"
1415 "os"
1516 "path/filepath"
1617 "testing"
@@ -30,17 +31,12 @@ var (
3031 token = & oauth2.Token {AccessToken : "123" }
3132)
3233
34+ // setUp load config file and then call Configure() for dependent packages
3335func setUp (configFile string ) {
3436 os .Setenv ("VOUCH_CONFIG" , filepath .Join (os .Getenv ("VOUCH_ROOT" ), configFile ))
3537 cfg .InitForTestPurposes ()
3638
37- // cfg.Cfg.AllowAllUsers = false
38- // cfg.Cfg.WhiteList = make([]string, 0)
39- // cfg.Cfg.TeamWhiteList = make([]string, 0)
40- // cfg.Cfg.Domains = []string{"domain1"}
41-
4239 Configure ()
43-
4440 domains .Configure ()
4541 jwtmanager .Configure ()
4642 cookie .Configure ()
@@ -115,3 +111,73 @@ func TestVerifyUserNegative(t *testing.T) {
115111 assert .False (t , ok )
116112 assert .NotNil (t , err )
117113}
114+
115+ // copied from jwtmanager_test.go
116+ // it should live there but circular imports are resolved if it lives here
117+ var (
118+ u1 = structs.User {
119+ Username : "test@testing.com" ,
120+ Name : "Test Name" ,
121+ }
122+ t1 = structs.PTokens {
123+ PAccessToken : "eyJhbGciOiJSUzI1NiIsImtpZCI6IjRvaXU4In0.eyJzdWIiOiJuZnlmZSIsImF1ZCI6ImltX29pY19jbGllbnQiLCJqdGkiOiJUOU4xUklkRkVzUE45enU3ZWw2eng2IiwiaXNzIjoiaHR0cHM6XC9cL3Nzby5tZXljbG91ZC5uZXQ6OTAzMSIsImlhdCI6MTM5MzczNzA3MSwiZXhwIjoxMzkzNzM3MzcxLCJub25jZSI6ImNiYTU2NjY2LTRiMTItNDU2YS04NDA3LTNkMzAyM2ZhMTAwMiIsImF0X2hhc2giOiJrdHFvZVBhc2praVY5b2Z0X3o5NnJBIn0.g1Jc9DohWFfFG3ppWfvW16ib6YBaONC5VMs8J61i5j5QLieY-mBEeVi1D3vr5IFWCfivY4hZcHtoJHgZk1qCumkAMDymsLGX-IGA7yFU8LOjUdR4IlCPlZxZ_vhqr_0gQ9pCFKDkiOv1LVv5x3YgAdhHhpZhxK6rWxojg2RddzvZ9Xi5u2V1UZ0jukwyG2d4PRzDn7WoRNDGwYOEt4qY7lv_NO2TY2eAklP-xYBWu0b9FBElapnstqbZgAXdndNs-Wqp4gyQG5D0owLzxPErR9MnpQfgNcai-PlWI_UrvoopKNbX0ai2zfkuQ-qh6Xn8zgkiaYDHzq4gzwRfwazaqA" ,
124+ PIdToken : "eyJhbGciOiJSUzI1NiIsImtpZCI6IjRvaXU4In0.eyJzdWIiOiJuZnlmZSIsImF1ZCI6ImltX29pY19jbGllbnQiLCJqdGkiOiJUOU4xUklkRkVzUE45enU3ZWw2eng2IiwiaXNzIjoiaHR0cHM6XC9cL3Nzby5tZXljbG91ZC5uZXQ6OTAzMSIsImlhdCI6MTM5MzczNzA3MSwiZXhwIjoxMzkzNzM3MzcxLCJub25jZSI6ImNiYTU2NjY2LTRiMTItNDU2YS04NDA3LTNkMzAyM2ZhMTAwMiIsImF0X2hhc2giOiJrdHFvZVBhc2praVY5b2Z0X3o5NnJBIn0.g1Jc9DohWFfFG3ppWfvW16ib6YBaONC5VMs8J61i5j5QLieY-mBEeVi1D3vr5IFWCfivY4hZcHtoJHgZk1qCumkAMDymsLGX-IGA7yFU8LOjUdR4IlCPlZxZ_vhqr_0gQ9pCFKDkiOv1LVv5x3YgAdhHhpZhxK6rWxojg2RddzvZ9Xi5u2V1UZ0jukwyG2d4PRzDn7WoRNDGwYOEt4qY7lv_NO2TY2eAklP-xYBWu0b9FBElapnstqbZgAXdndNs-Wqp4gyQG5D0owLzxPErR9MnpQfgNcai-PlWI_UrvoopKNbX0ai2zfkuQ-qh6Xn8zgkiaYDHzq4gzwRfwazaqA" ,
125+ }
126+
127+ lc jwtmanager.VouchClaims
128+
129+ claimjson = `{
130+ "sub": "f:a95afe53-60ba-4ac6-af15-fab870e72f3d:mrtester",
131+ "groups": ["Website Users", "Test Group"],
132+ "given_name": "Mister",
133+ "family_name": "Tester",
134+ "email": "mrtester@test.int"
135+ }`
136+ customClaims = structs.CustomClaims {}
137+ )
138+
139+ // copied from jwtmanager_test.go
140+ func init () {
141+ // log.SetLevel(log.DebugLevel)
142+
143+ lc = jwtmanager.VouchClaims {
144+ u1 .Username ,
145+ jwtmanager .Sites ,
146+ customClaims .Claims ,
147+ t1 .PAccessToken ,
148+ t1 .PIdToken ,
149+ jwtmanager .StandardClaims ,
150+ }
151+ json .Unmarshal ([]byte (claimjson ), & customClaims .Claims )
152+ }
153+
154+ func TestParsedIdPTokens (t * testing.T ) {
155+ tests := []struct {
156+ name string
157+ configFile string
158+ wantIDPTokens bool
159+ }{
160+ {"no IdP tokens" , "/config/testing/handler_claims.yml" , false },
161+ {"wants IdP tokens" , "/config/testing/jwtmanager_has_idp_token_claims.yml" , true },
162+ }
163+
164+ for _ , tt := range tests {
165+ t .Run (tt .name , func (t * testing.T ) {
166+ setUp (tt .configFile )
167+ uts := jwtmanager .CreateUserTokenString (u1 , customClaims , t1 )
168+ utsParsed , _ := jwtmanager .ParseTokenString (uts )
169+ utsPtokens , _ := jwtmanager .PTokenClaims (utsParsed )
170+
171+ if tt .wantIDPTokens {
172+ if t1 .PIdToken != utsPtokens .PIdToken || t1 .PAccessToken != utsPtokens .PAccessToken {
173+ t .Errorf ("got PIdToken = %s, PAccessToken = %s, \n want %s , %s" , utsPtokens .PIdToken , utsPtokens .PAccessToken , t1 .PIdToken , t1 .PAccessToken )
174+ }
175+ } else {
176+ if utsPtokens .PIdToken != "" || utsPtokens .PAccessToken != "" {
177+ t .Errorf ("PIdToken and PAccessToken = should be '' got '%s', '%s'" , utsPtokens .PIdToken , utsPtokens .PAccessToken )
178+ }
179+ }
180+ })
181+ }
182+
183+ }
0 commit comments