From 531d40a82e27067b70a713b83b839ba72b8b6fcd Mon Sep 17 00:00:00 2001 From: Ryan Richard Date: Tue, 5 May 2026 13:47:39 -0700 Subject: [PATCH] fix some unit test failures caused by k8s bump Signed-off-by: Ryan Richard --- .../kubecertagent/pod_command_executor_test.go | 9 +++++---- internal/registry/clientsecretrequest/rest_test.go | 2 +- internal/registry/whoamirequest/rest_test.go | 8 +++++--- internal/testutil/actions.go | 11 ++++++++++- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/internal/controller/kubecertagent/pod_command_executor_test.go b/internal/controller/kubecertagent/pod_command_executor_test.go index d5e30d3c1..56fcce655 100644 --- a/internal/controller/kubecertagent/pod_command_executor_test.go +++ b/internal/controller/kubecertagent/pod_command_executor_test.go @@ -1,4 +1,4 @@ -// Copyright 2021-2024 the Pinniped contributors. All Rights Reserved. +// Copyright 2021-2026 the Pinniped contributors. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package kubecertagent @@ -9,7 +9,6 @@ import ( "testing" "github.com/stretchr/testify/require" - apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/client-go/rest" "go.pinniped.dev/internal/crypto/ptls" @@ -34,11 +33,13 @@ func TestSecureTLS(t *testing.T) { client, err := kubeclient.New(kubeclient.WithConfig(config)) require.NoError(t, err) - // build this exactly like our production could does + // Build this exactly like our production code does. podCommandExecutor := NewPodCommandExecutor(client.JSONConfig, client.Kubernetes) got, err := podCommandExecutor.Exec(context.Background(), "podNamespace", "podName", "containerName", "command", "arg1", "arg2") - require.Equal(t, &apierrors.StatusError{}, err) + // Expect to get an error because the fake server above does not allow upgrade to spdy. + // This doesn't matter because all we really care about in this test is the results of AssertTLS. + require.EqualError(t, err, "unable to upgrade connection: empty server response") require.Empty(t, got) require.True(t, sawRequest) diff --git a/internal/registry/clientsecretrequest/rest_test.go b/internal/registry/clientsecretrequest/rest_test.go index 3da61acb1..b16a0453b 100644 --- a/internal/registry/clientsecretrequest/rest_test.go +++ b/internal/registry/clientsecretrequest/rest_test.go @@ -135,7 +135,7 @@ func TestCreate(t *testing.T) { wantErrStatus: &metav1.Status{ Status: metav1.StatusFailure, Message: `not an OIDCClientSecretRequest: &v1.Status{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ` + - `ListMeta:v1.ListMeta{SelfLink:"", ResourceVersion:"", Continue:"", RemainingItemCount:(*int64)(nil)},` + + `ListMeta:v1.ListMeta{SelfLink:"", ResourceVersion:"", Continue:"", RemainingItemCount:(*int64)(nil), ShardInfo:(*v1.ShardInfo)(nil)},` + ` Status:"", Message:"", Reason:"", Details:(*v1.StatusDetails)(nil), Code:0}`, Reason: metav1.StatusReasonBadRequest, Code: http.StatusBadRequest, diff --git a/internal/registry/whoamirequest/rest_test.go b/internal/registry/whoamirequest/rest_test.go index 9ffcaafbd..07b316f83 100644 --- a/internal/registry/whoamirequest/rest_test.go +++ b/internal/registry/whoamirequest/rest_test.go @@ -1,4 +1,4 @@ -// Copyright 2021-2025 the Pinniped contributors. All Rights Reserved. +// Copyright 2021-2026 the Pinniped contributors. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package whoamirequest @@ -73,8 +73,10 @@ func TestCreate(t *testing.T) { createValidation: nil, options: nil, }, - want: nil, - wantErr: `not a WhoAmIRequest: &v1.Status{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ListMeta:v1.ListMeta{SelfLink:"", ResourceVersion:"", Continue:"", RemainingItemCount:(*int64)(nil)}, Status:"", Message:"", Reason:"", Details:(*v1.StatusDetails)(nil), Code:0}`, + want: nil, + wantErr: `not a WhoAmIRequest: &v1.Status{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ` + + `ListMeta:v1.ListMeta{SelfLink:"", ResourceVersion:"", Continue:"", RemainingItemCount:(*int64)(nil), ShardInfo:(*v1.ShardInfo)(nil)}, ` + + `Status:"", Message:"", Reason:"", Details:(*v1.StatusDetails)(nil), Code:0}`, }, { name: "bad options", diff --git a/internal/testutil/actions.go b/internal/testutil/actions.go index 5523e686f..fd6498888 100644 --- a/internal/testutil/actions.go +++ b/internal/testutil/actions.go @@ -1,4 +1,4 @@ -// Copyright 2024 the Pinniped contributors. All Rights Reserved. +// Copyright 2024-2026 the Pinniped contributors. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package testutil @@ -16,6 +16,7 @@ func ScrubListOptionsForActions(t *testing.T, actions []coretesting.Action) []co t.Helper() scrubbedActions := make([]coretesting.Action, 0, len(actions)) + for _, action := range actions { switch action.GetVerb() { case "watch": @@ -23,7 +24,13 @@ func ScrubListOptionsForActions(t *testing.T, actions []coretesting.Action) []co require.True(t, ok) watchAction.ListOptions.AllowWatchBookmarks = false watchAction.ListOptions.TimeoutSeconds = nil + + // These get filled in starting in k8s 1.36 packages, but we don't care to assert about them. + watchAction.ListOptions.ResourceVersion = "" + watchAction.WatchRestrictions.ResourceVersion = "" + scrubbedActions = append(scrubbedActions, watchAction) + case "list": listAction, ok := action.(coretesting.ListActionImpl) require.True(t, ok) @@ -31,9 +38,11 @@ func ScrubListOptionsForActions(t *testing.T, actions []coretesting.Action) []co listAction.ListOptions.TimeoutSeconds = nil listAction.ListOptions.Limit = 0 scrubbedActions = append(scrubbedActions, listAction) + default: scrubbedActions = append(scrubbedActions, action) } } + return scrubbedActions }