github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/access_token_factory_test.go (about)

     1  package db_test
     2  
     3  import (
     4  	"github.com/pf-qiu/concourse/v6/atc/db"
     5  	"gopkg.in/square/go-jose.v2/jwt"
     6  
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  )
    10  
    11  var _ = Describe("Access Token Factory", func() {
    12  	var (
    13  		factory db.AccessTokenFactory
    14  	)
    15  
    16  	BeforeEach(func() {
    17  		factory = db.NewAccessTokenFactory(dbConn)
    18  	})
    19  
    20  	It("can create and fetch access tokens", func() {
    21  		date := jwt.NumericDate(1234567890)
    22  		err := factory.CreateAccessToken("my-awesome-token", db.Claims{
    23  			RawClaims: map[string]interface{}{
    24  				"iss": "issuer",
    25  				"sub": "subject",
    26  				"aud": []interface{}{"audience"},
    27  				"exp": date,
    28  				"nbf": date,
    29  				"iat": date,
    30  				"jti": "id",
    31  
    32  				"federated_claims": map[string]interface{}{
    33  					"user_id":      "userid",
    34  					"connector_id": "github",
    35  					"other":        "blah",
    36  				},
    37  
    38  				"groups": []interface{}{"group1", "group2"},
    39  			},
    40  		})
    41  		Expect(err).ToNot(HaveOccurred())
    42  
    43  		token, ok, _ := factory.GetAccessToken("my-awesome-token")
    44  		Expect(ok).To(BeTrue())
    45  		Expect(token.Token).To(Equal("my-awesome-token"))
    46  		Expect(token.Claims).To(Equal(db.Claims{
    47  			Claims: jwt.Claims{
    48  				Issuer:    "issuer",
    49  				Subject:   "subject",
    50  				Audience:  []string{"audience"},
    51  				Expiry:    &date,
    52  				NotBefore: &date,
    53  				IssuedAt:  &date,
    54  				ID:        "id",
    55  			},
    56  			FederatedClaims: db.FederatedClaims{
    57  				UserID:    "userid",
    58  				Connector: "github",
    59  			},
    60  			RawClaims: map[string]interface{}{
    61  				"iss": "issuer",
    62  				"sub": "subject",
    63  				"aud": []interface{}{"audience"},
    64  				"exp": float64(date),
    65  				"nbf": float64(date),
    66  				"iat": float64(date),
    67  				"jti": "id",
    68  
    69  				"federated_claims": map[string]interface{}{
    70  					"user_id":      "userid",
    71  					"connector_id": "github",
    72  					"other":        "blah",
    73  				},
    74  
    75  				"groups": []interface{}{"group1", "group2"},
    76  			},
    77  		}))
    78  	})
    79  })