 bf933f5ca4
			
		
	
	
	
	
	bf933f5ca4Since https://github.com/go-gitea/gitea/pull/25686, a few `interface{}` have sneaked into the codebase. Add this replacement to `make fmt` to prevent this from happening again. Ideally a linter would do this, but I haven't found any suitable. (cherry picked from commit c77e8140bc2ac6521dbebfb77613dce2648bfcb8) Conflicts: - .gitattributes Trivial conflict resolved by picking our choice of language for `*.tmpl` files.
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2024 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package actions
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 	"testing"
 | |
| 
 | |
| 	"code.gitea.io/gitea/modules/json"
 | |
| 	"code.gitea.io/gitea/modules/setting"
 | |
| 
 | |
| 	"github.com/golang-jwt/jwt/v5"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestCreateAuthorizationToken(t *testing.T) {
 | |
| 	var taskID int64 = 23
 | |
| 	token, err := CreateAuthorizationToken(taskID, 1, 2)
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.NotEqual(t, "", token)
 | |
| 	claims := jwt.MapClaims{}
 | |
| 	_, err = jwt.ParseWithClaims(token, claims, func(t *jwt.Token) (any, error) {
 | |
| 		return setting.GetGeneralTokenSigningSecret(), nil
 | |
| 	})
 | |
| 	assert.Nil(t, err)
 | |
| 	scp, ok := claims["scp"]
 | |
| 	assert.True(t, ok, "Has scp claim in jwt token")
 | |
| 	assert.Contains(t, scp, "Actions.Results:1:2")
 | |
| 	taskIDClaim, ok := claims["TaskID"]
 | |
| 	assert.True(t, ok, "Has TaskID claim in jwt token")
 | |
| 	assert.Equal(t, float64(taskID), taskIDClaim, "Supplied taskid must match stored one")
 | |
| 	acClaim, ok := claims["ac"]
 | |
| 	assert.True(t, ok, "Has ac claim in jwt token")
 | |
| 	ac, ok := acClaim.(string)
 | |
| 	assert.True(t, ok, "ac claim is a string for buildx gha cache")
 | |
| 	scopes := []actionsCacheScope{}
 | |
| 	err = json.Unmarshal([]byte(ac), &scopes)
 | |
| 	assert.NoError(t, err, "ac claim is a json list for buildx gha cache")
 | |
| 	assert.GreaterOrEqual(t, len(scopes), 1, "Expected at least one action cache scope for buildx gha cache")
 | |
| }
 | |
| 
 | |
| func TestParseAuthorizationToken(t *testing.T) {
 | |
| 	var taskID int64 = 23
 | |
| 	token, err := CreateAuthorizationToken(taskID, 1, 2)
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.NotEqual(t, "", token)
 | |
| 	headers := http.Header{}
 | |
| 	headers.Set("Authorization", "Bearer "+token)
 | |
| 	rTaskID, err := ParseAuthorizationToken(&http.Request{
 | |
| 		Header: headers,
 | |
| 	})
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.Equal(t, taskID, rTaskID)
 | |
| }
 | |
| 
 | |
| func TestParseAuthorizationTokenNoAuthHeader(t *testing.T) {
 | |
| 	headers := http.Header{}
 | |
| 	rTaskID, err := ParseAuthorizationToken(&http.Request{
 | |
| 		Header: headers,
 | |
| 	})
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.Equal(t, int64(0), rTaskID)
 | |
| }
 |