From a4268f6f64b53629fb73a8cb518f7d51aecec5a8 Mon Sep 17 00:00:00 2001 From: ChristianZaccaria Date: Tue, 21 May 2024 09:41:17 +0100 Subject: [PATCH 1/2] Add additional core functions --- support/core.go | 30 ++++++++++++++++++++++++++++ support/core_test.go | 47 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/support/core.go b/support/core.go index 673eebb..8659017 100644 --- a/support/core.go +++ b/support/core.go @@ -184,3 +184,33 @@ func GetNodeInternalIP(t Test, node corev1.Node) (IP string) { return } + +func GetContainerName(t Test, container corev1.Container) string { + t.T().Helper() + t.Expect(container.Name).Should(gomega.Not(gomega.BeEmpty())) + return container.Name +} + +func GetVolumeName(t Test, volume corev1.Volume) string { + t.T().Helper() + t.Expect(volume.Name).Should(gomega.Not(gomega.BeEmpty())) + return volume.Name +} + +func GetServiceAccountName(t Test, serviceAccount corev1.ServiceAccount) string { + t.T().Helper() + t.Expect(serviceAccount.Name).Should(gomega.Not(gomega.BeEmpty())) + return serviceAccount.Name +} + +func GetVolumeMountName(t Test, volumeMount corev1.VolumeMount) string { + t.T().Helper() + t.Expect(volumeMount.Name).Should(gomega.Not(gomega.BeEmpty())) + return volumeMount.Name +} + +func GetEnvVarName(t Test, envVar corev1.EnvVar) string { + t.T().Helper() + t.Expect(envVar.Name).Should(gomega.Not(gomega.BeEmpty())) + return envVar.Name +} diff --git a/support/core_test.go b/support/core_test.go index 031d329..eedbfa1 100644 --- a/support/core_test.go +++ b/support/core_test.go @@ -43,3 +43,50 @@ func TestGetNodes(t *testing.T) { test.Expect(nodes[0].Name).To(gomega.Equal("test-node"), "Expected node name 'test-node', but got '%s'", nodes[0].Name) } + +func TestGetContainerName(t *testing.T) { + test := NewTest(t) + container := corev1.Container{ + Name: "test-container", + } + containerName := GetContainerName(test, container) + test.Expect(containerName).To(gomega.Equal("test-container"), "Expected container name 'test-container', but got '%s'", containerName) +} + +func TestGetVolumeName(t *testing.T) { + test := NewTest(t) + volume := corev1.Volume{ + Name: "test-volume", + } + volumeName := GetVolumeName(test, volume) + test.Expect(volumeName).To(gomega.Equal("test-volume"), "Expected volume name 'test-volume', but got '%s'", volumeName) +} + +func TestGetServiceAccountName(t *testing.T) { + test := NewTest(t) + serviceAccount := corev1.ServiceAccount{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-service-account", + }, + } + serviceAccountName := GetServiceAccountName(test, serviceAccount) + test.Expect(serviceAccountName).To(gomega.Equal("test-service-account"), "Expected service account name 'test-service-account', but got '%s'", serviceAccountName) +} + +func TestGetVolumeMountName(t *testing.T) { + test := NewTest(t) + volumeMount := corev1.VolumeMount{ + Name: "test-volume-mount", + } + volumeMountName := GetVolumeMountName(test, volumeMount) + test.Expect(volumeMountName).To(gomega.Equal("test-volume-mount"), "Expected volume mount name 'test-volume-mount', but got '%s'", volumeMountName) +} + +func TestGetEnvVarName(t *testing.T) { + test := NewTest(t) + envVar := corev1.EnvVar{ + Name: "test-env-var", + } + envVarName := GetEnvVarName(test, envVar) + test.Expect(envVarName).To(gomega.Equal("test-env-var"), "Expected env var name 'test-env-var', but got '%s'", envVarName) +} From 19c2d29692a744a88961772fd40e463ea174bb8c Mon Sep 17 00:00:00 2001 From: ChristianZaccaria Date: Mon, 27 May 2024 10:44:59 +0100 Subject: [PATCH 2/2] Add ResourceName generic function --- support/core.go | 36 ++++++++------------------------- support/core_test.go | 48 +++++++------------------------------------- 2 files changed, 15 insertions(+), 69 deletions(-) diff --git a/support/core.go b/support/core.go index 8659017..2e30bd8 100644 --- a/support/core.go +++ b/support/core.go @@ -18,7 +18,9 @@ package support import ( "encoding/json" + "fmt" "io" + "reflect" "github.com/onsi/gomega" @@ -185,32 +187,10 @@ func GetNodeInternalIP(t Test, node corev1.Node) (IP string) { return } -func GetContainerName(t Test, container corev1.Container) string { - t.T().Helper() - t.Expect(container.Name).Should(gomega.Not(gomega.BeEmpty())) - return container.Name -} - -func GetVolumeName(t Test, volume corev1.Volume) string { - t.T().Helper() - t.Expect(volume.Name).Should(gomega.Not(gomega.BeEmpty())) - return volume.Name -} - -func GetServiceAccountName(t Test, serviceAccount corev1.ServiceAccount) string { - t.T().Helper() - t.Expect(serviceAccount.Name).Should(gomega.Not(gomega.BeEmpty())) - return serviceAccount.Name -} - -func GetVolumeMountName(t Test, volumeMount corev1.VolumeMount) string { - t.T().Helper() - t.Expect(volumeMount.Name).Should(gomega.Not(gomega.BeEmpty())) - return volumeMount.Name -} - -func GetEnvVarName(t Test, envVar corev1.EnvVar) string { - t.T().Helper() - t.Expect(envVar.Name).Should(gomega.Not(gomega.BeEmpty())) - return envVar.Name +func ResourceName(obj any) (string, error) { + value := reflect.ValueOf(obj) + if value.Kind() != reflect.Struct { + return "", fmt.Errorf("input must be a struct") + } + return value.FieldByName("Name").String(), nil } diff --git a/support/core_test.go b/support/core_test.go index eedbfa1..a180930 100644 --- a/support/core_test.go +++ b/support/core_test.go @@ -44,49 +44,15 @@ func TestGetNodes(t *testing.T) { } -func TestGetContainerName(t *testing.T) { - test := NewTest(t) - container := corev1.Container{ - Name: "test-container", - } - containerName := GetContainerName(test, container) - test.Expect(containerName).To(gomega.Equal("test-container"), "Expected container name 'test-container', but got '%s'", containerName) -} - -func TestGetVolumeName(t *testing.T) { - test := NewTest(t) - volume := corev1.Volume{ - Name: "test-volume", +func TestResourceName(t *testing.T) { + type TestStruct struct { + Name string } - volumeName := GetVolumeName(test, volume) - test.Expect(volumeName).To(gomega.Equal("test-volume"), "Expected volume name 'test-volume', but got '%s'", volumeName) -} - -func TestGetServiceAccountName(t *testing.T) { test := NewTest(t) - serviceAccount := corev1.ServiceAccount{ - ObjectMeta: metav1.ObjectMeta{ - Name: "test-service-account", - }, - } - serviceAccountName := GetServiceAccountName(test, serviceAccount) - test.Expect(serviceAccountName).To(gomega.Equal("test-service-account"), "Expected service account name 'test-service-account', but got '%s'", serviceAccountName) -} -func TestGetVolumeMountName(t *testing.T) { - test := NewTest(t) - volumeMount := corev1.VolumeMount{ - Name: "test-volume-mount", - } - volumeMountName := GetVolumeMountName(test, volumeMount) - test.Expect(volumeMountName).To(gomega.Equal("test-volume-mount"), "Expected volume mount name 'test-volume-mount', but got '%s'", volumeMountName) -} + obj := TestStruct{Name: "test-resource"} + resourceName, err := ResourceName(obj) -func TestGetEnvVarName(t *testing.T) { - test := NewTest(t) - envVar := corev1.EnvVar{ - Name: "test-env-var", - } - envVarName := GetEnvVarName(test, envVar) - test.Expect(envVarName).To(gomega.Equal("test-env-var"), "Expected env var name 'test-env-var', but got '%s'", envVarName) + test.Expect(err).To(gomega.BeNil(), "Expected no error, but got '%v'", err) + test.Expect(resourceName).To(gomega.Equal("test-resource"), "Expected resource name 'test-resource', but got '%s'", resourceName) }