github.com/nektos/act@v0.2.63/pkg/common/auth_test.go (about) 1 // Copyright 2024 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package common 5 6 import ( 7 "encoding/json" 8 "net/http" 9 "testing" 10 11 "github.com/golang-jwt/jwt/v5" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestCreateAuthorizationToken(t *testing.T) { 16 var taskID int64 = 23 17 token, err := CreateAuthorizationToken(taskID, 1, 2) 18 assert.Nil(t, err) 19 assert.NotEqual(t, "", token) 20 claims := jwt.MapClaims{} 21 _, err = jwt.ParseWithClaims(token, claims, func(t *jwt.Token) (interface{}, error) { 22 return []byte{}, nil 23 }) 24 assert.Nil(t, err) 25 scp, ok := claims["scp"] 26 assert.True(t, ok, "Has scp claim in jwt token") 27 assert.Contains(t, scp, "Actions.Results:1:2") 28 taskIDClaim, ok := claims["TaskID"] 29 assert.True(t, ok, "Has TaskID claim in jwt token") 30 assert.Equal(t, float64(taskID), taskIDClaim, "Supplied taskid must match stored one") 31 acClaim, ok := claims["ac"] 32 assert.True(t, ok, "Has ac claim in jwt token") 33 ac, ok := acClaim.(string) 34 assert.True(t, ok, "ac claim is a string for buildx gha cache") 35 scopes := []actionsCacheScope{} 36 err = json.Unmarshal([]byte(ac), &scopes) 37 assert.NoError(t, err, "ac claim is a json list for buildx gha cache") 38 assert.GreaterOrEqual(t, len(scopes), 1, "Expected at least one action cache scope for buildx gha cache") 39 } 40 41 func TestParseAuthorizationToken(t *testing.T) { 42 var taskID int64 = 23 43 token, err := CreateAuthorizationToken(taskID, 1, 2) 44 assert.Nil(t, err) 45 assert.NotEqual(t, "", token) 46 headers := http.Header{} 47 headers.Set("Authorization", "Bearer "+token) 48 rTaskID, err := ParseAuthorizationToken(&http.Request{ 49 Header: headers, 50 }) 51 assert.Nil(t, err) 52 assert.Equal(t, taskID, rTaskID) 53 } 54 55 func TestParseAuthorizationTokenNoAuthHeader(t *testing.T) { 56 headers := http.Header{} 57 rTaskID, err := ParseAuthorizationToken(&http.Request{ 58 Header: headers, 59 }) 60 assert.Nil(t, err) 61 assert.Equal(t, int64(0), rTaskID) 62 }