Files
cd/util/grpc/useragent_test.go
zeekay 6d6d920739 util/grpc, util/lua: drop Argo wording from local identifiers
useragent_test.go tested the user-agent enforcer against the
placeholder "argo-cd" instead of the real UserAgentName convention
("hanzocd-client"); aligned it. lua.go's import alias for
util/glob was named argoglob; renamed to cdglob (a bare "glob"
alias was unavailable, doublestar/v4 already claims it in this
file).
2026-09-05 01:08:27 -07:00

51 lines
1.9 KiB
Go

package grpc
import (
"testing"
"github.com/Masterminds/semver/v3"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/metadata"
)
func Test_UserAgentEnforcer(t *testing.T) {
t.Parallel()
clientName := "hanzocd-client"
semverConstraint, _ := semver.NewConstraint("^1")
t.Run("Test enforcing valid user-agent", func(t *testing.T) {
t.Parallel()
md := metadata.New(map[string]string{"user-agent": "hanzocd-client/1.0"})
ctx := metadata.NewIncomingContext(t.Context(), md)
err := userAgentEnforcer(ctx, clientName, semverConstraint)
require.NoError(t, err)
})
t.Run("Test enforcing ignored user-agent", func(t *testing.T) {
t.Parallel()
md := metadata.New(map[string]string{"user-agent": "flux/3.0"})
ctx := metadata.NewIncomingContext(t.Context(), md)
err := userAgentEnforcer(ctx, clientName, semverConstraint)
require.NoError(t, err)
})
t.Run("Test enforcing user-agent with version not matching constraint", func(t *testing.T) {
t.Parallel()
md := metadata.New(map[string]string{"user-agent": "hanzocd-client/3.0"})
ctx := metadata.NewIncomingContext(t.Context(), md)
err := userAgentEnforcer(ctx, clientName, semverConstraint)
require.ErrorContains(t, err, "unsatisfied client version constraint")
})
t.Run("Test legacy user-agent", func(t *testing.T) {
t.Parallel()
md := metadata.New(map[string]string{"user-agent": "grpc-go/1.15.0"})
ctx := metadata.NewIncomingContext(t.Context(), md)
err := userAgentEnforcer(ctx, clientName, semverConstraint)
require.ErrorContains(t, err, "unsatisfied client version constraint: ^1")
})
t.Run("Test invalid version", func(t *testing.T) {
t.Parallel()
md := metadata.New(map[string]string{"user-agent": "hanzocd-client/super"})
ctx := metadata.NewIncomingContext(t.Context(), md)
err := userAgentEnforcer(ctx, clientName, semverConstraint)
require.ErrorContains(t, err, "could not parse version")
})
}