Skip to content

Commit d273281

Browse files
committed
Move getKubernetesClient function to helpers
1 parent 716d051 commit d273281

File tree

3 files changed

+40
-23
lines changed

3 files changed

+40
-23
lines changed

internal/framework/helpers/helpers.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ import (
99

1010
"github.com/google/go-cmp/cmp"
1111
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12+
"k8s.io/apimachinery/pkg/runtime"
13+
controllerruntime "sigs.k8s.io/controller-runtime"
1214
"sigs.k8s.io/controller-runtime/pkg/client"
15+
16+
ngfAPIv1alpha1 "github.com/nginx/nginx-gateway-fabric/v2/apis/v1alpha1"
1317
)
1418

1519
// Diff prints the diff between two structs.
@@ -103,3 +107,20 @@ func RandomPrimeNumber() int64 {
103107
func UniqueResourceName(name string) string {
104108
return fmt.Sprintf("%s-%d", name, RandomPrimeNumber())
105109
}
110+
111+
// GetKubernetesClient returns a client connected to a real Kubernetes cluster.
112+
func GetKubernetesClient() (k8sClient client.Client, err error) {
113+
// Use controller-runtime to get cluster connection
114+
k8sConfig, err := controllerruntime.GetConfig()
115+
if err != nil {
116+
return nil, err
117+
}
118+
119+
// Set up scheme with NGF types
120+
scheme := runtime.NewScheme()
121+
if err = ngfAPIv1alpha1.AddToScheme(scheme); err != nil {
122+
return nil, err
123+
}
124+
// Create a new client with the scheme and return it
125+
return client.New(k8sConfig, client.Options{Scheme: scheme})
126+
}

internal/framework/helpers/helpers_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package helpers_test
22

33
import (
4+
"context"
45
"testing"
56
"text/template"
67

@@ -9,6 +10,8 @@ import (
910
gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
1011
gatewayv1alpha3 "sigs.k8s.io/gateway-api/apis/v1alpha3"
1112

13+
corev1 "k8s.io/api/core/v1"
14+
1215
"github.com/nginx/nginx-gateway-fabric/v2/internal/framework/helpers"
1316
)
1417

@@ -131,3 +134,18 @@ func TestMustReturnUniqueResourceName(t *testing.T) {
131134
g.Expect(uniqueName).To(HaveSuffix("-"))
132135
g.Expect(len(uniqueName)).To(BeNumerically(">", len(name)))
133136
}
137+
138+
func TestMustCreateKubernetesClient(t *testing.T) {
139+
t.Parallel()
140+
g := NewWithT(t)
141+
142+
k8sClient, err := helpers.GetKubernetesClient()
143+
g.Expect(err).ToNot(HaveOccurred())
144+
g.Expect(k8sClient).ToNot(BeNil())
145+
146+
// Check that the client can be used to list namespaces
147+
namespaces := &corev1.NamespaceList{}
148+
err = k8sClient.List(context.Background(), namespaces)
149+
g.Expect(err).ToNot(HaveOccurred())
150+
g.Expect(namespaces.Items).ToNot(BeEmpty())
151+
}

tests/cel/clientsettingspolicy_test.go

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ import (
55
"testing"
66

77
. "github.com/onsi/gomega"
8-
"k8s.io/apimachinery/pkg/runtime"
98
controllerruntime "sigs.k8s.io/controller-runtime"
10-
"sigs.k8s.io/controller-runtime/pkg/client"
119
gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
1210

1311
ngfAPIv1alpha1 "github.com/nginx/nginx-gateway-fabric/v2/apis/v1alpha1"
@@ -157,9 +155,7 @@ func validateClientSettingsPolicy(t *testing.T, tt struct {
157155
t.Helper()
158156
g := NewWithT(t)
159157

160-
// Get Kubernetes client from test framework
161-
// This should be set up by your test framework to connect to a real cluster
162-
k8sClient, err := getKubernetesClient(t)
158+
k8sClient, err := ngfHelpers.GetKubernetesClient()
163159

164160
g.Expect(err).ToNot(HaveOccurred())
165161

@@ -197,21 +193,3 @@ func validateClientSettingsPolicy(t *testing.T, tt struct {
197193
g.Expect(err.Error()).To(ContainSubstring(wantError), "Expected error '%s' not found in: %s", wantError, err.Error())
198194
}
199195
}
200-
201-
// getKubernetesClient returns a client connected to a real Kubernetes cluster.
202-
func getKubernetesClient(t *testing.T) (k8sClient client.Client, err error) {
203-
t.Helper()
204-
// Use controller-runtime to get cluster connection
205-
k8sConfig, err := controllerruntime.GetConfig()
206-
if err != nil {
207-
return nil, err
208-
}
209-
210-
// Set up scheme with NGF types
211-
scheme := runtime.NewScheme()
212-
if err = ngfAPIv1alpha1.AddToScheme(scheme); err != nil {
213-
return nil, err
214-
}
215-
// Create a new client with the scheme and return it
216-
return client.New(k8sConfig, client.Options{Scheme: scheme})
217-
}

0 commit comments

Comments
 (0)